Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование ответы.docx
Скачиваний:
58
Добавлен:
30.01.2018
Размер:
407.05 Кб
Скачать

Лиманова

1.История языков программирования от машинного кода до современных языков структурного программирования.

Язык программирования – это совокупность символов (алфавит системы), правил образования (синтаксис) и истолкования конструкций из символов (семантика) для задания алгоритмов с использованием символов естественного языка.

Машинный язык – это такой язык, который компьютер воспринимает непосредственно, т.е. этот язык машинных команд данной модели команд.

Fortran (FORmula TRANslator)разработан 1957г компанией IBM под руководством Джона Бекуса – основу языка составляет арифметические операторы, соответствующие по своему синтаксису традиционной записи математических выражений. Описание данных были ориентированы на представление числовой информации, поэтому типы данных были просты: целые и действительные, а также массивы из этих чисел.

Универсальный язык, ориентированный на задачи бизнеса, COBOL– в конце 1959 года в США групп разработчиков. В нем все данные описываются в отдельной секции, которая не совпадает с секцией команд. Это позволяет использовать одни и те же описания данных в различных программах. Производят простые арифметические операции с большими массивами данных, что довольно часто приходится делать в бухгалтерских расчетах.

Алгоритмический язык прог-я ALGOL .Ряд ведущих программистов в Цюрихе представили в 1958 году свое новое детище – Алгол (ALGOnthmicLanguage– алгоритмический язык прог-я).

Возможности:

Cоздание специальной нотации для определения синтаксиса алгоритмических языков (нотация Бэкуса-Наура). Возможность разработки отдельных модулей проекта независимо друг от друга, а также реализацию вызовов фрагментов кода программы, способов передачи параметров между процедурами и функциями. Достаточно сказать, что именно в Алголе появились понятия блока и рекурсивного вызова функции.

Универсальный код символических инструкций BASIC.

Долгое время Basic не имел компилятора или интерпретатора, который бы позволял создавать полноценные исполняемые exe файлы. И лишь в конце 1975 года был создан первый его интерпретатор. Одно время популярность бейсика было столь велико что PC выпускались с его интерпретатором, прошитом прямо в пзу компьютера. Самым популярным стал М- Basic, Первый Коммерческий успех молодой компании Microsoft Corporation.

Алгоритмический язык Pascal

Паскаль, разработанный в конце 60-х годов швейцарским ученым Никлаусом Виртом. Новизна лишь в том, что на каждом новом витке - она делает это на более высоком уровне. Был уклон в сторону преподавательской деятельности.

С/С++

Язык С был разработан Дэннисом Ритчи и Кэном Томпсоном в 1971 году при работе от операционной системой Unix. С был разработан программистами просто как удобный для них язык. С сочетает в себе удобство языков программирования высокого уровня и скорость и мощь языков программирования низкого уровня. Достигается это за счёт встроенный в язык С техники работы с указателями. В 1980 году появился объектно- ориентированный язык С++.

Fortran (В 1954 году компанияIBMсоздала языкFortran(formulatranslator) , его основу составляли арифметические операторы мат. выражений. Программировать на нем было не просто.)

COBOL(был изобретен в конце 1959 года. Этот язык был ориентирован на задачи бизнеса, также был аппаратно независим)

АЛГОЛ(Изобретен в 1958 году, это алгометрический язык программирования , в нем была доведена до завершения сама концепция операторных алгометрических языков программирования)

BASIC(. Сначала не имел ни кампилятора ни интерпритатора , они появились только в 1975 году. Самым популярным был М-BASIC– первый успехMicrosoft)

PASCAL(Создан в 1970 году, был придуман для обучения студентов)

C++ (Разработан в 1971 году, главные преимущества – скорость и удобство, центральная идея – указатели)

2.Алгоритмический язык С — язык компилируемого типа. Структура программы на языке С++. Стадии получения загрузочного модуля в С/C++.

Язык Си – компилирующего типа. Текст программы на Си, для получения объектного модуля обрабатывается компилятором, причем компиляция выполняется в два прохода. При первом проходе обрабатываются строки директивы, начинающиеся со знака #, при втором - транслируется текст программы и создается объектный (машинный) код. Для получения загрузочного модуля необходимо подсоединить к нему соответствующие библиотечные модули.

# include “stdafx.h”

# include <iostream>

usingnamespacestd; //подключение стандартного пространства имен

int (main)

{

setlocale (LC_ALL,” ”);

cout << “ 2*2 = “ << 2*2 << endl;

system(“pause”);

return0; //оператор возврата значения

}

/*многострочный комментарий

это*/

Символ # обозначает директивы препроцессора. Препроцессор – это программа, которая выполняет простую обработку текста для последующей компиляции.

iostream– имя включаемого файла, который находится в каталоге интегрированной средыinclude.

cout– оператор, обеспечивающий вывод результатов из программы во внешнюю среду (на экран).

<< – «вывод в поток»

endl– обеспечивает перевод курсора экрана на следующую строку

cin– оператор, обеспечивающий вывод данных в программу в клавиатуры

>> – операция потокового ввода

{ } – между этими скобками размещается «тело функции»

3.Понятие о синтаксисе языка программирования. Основные типы данных языка С.

Синтаксис языка программирования - это набор правил, по которым строятся основные конструкции языка.

Типы данных:

Целый зноковый: int,short,long,

Целый беззнаковый: unsigned int, unsigned short, unsigned long

Вещественный: double , float

Символьный – char

Логический – bool

4.Описание переменных и констант в языке С/C++.

Прежде чем использовать в программе какую-то переменную, надо дать ей описание, то есть сказать, какое имя имеет переменная и каков её тип. Вначале указывается тип переменной, а затем её имя. Например:

int k; // это переменная целого типа int

Инициализация переменных double a=3

В языке C++ есть 2 способа задания констант:

#define PI 3.14

const double PI=3.14;

5.Управление вводом/выводом в языке С/C++. Операторы ввода/вывода. Форматный вывод. Привести примеры.

Описание объектов для управления вводом-выводом содержится в дерективе предпроцессора <iostream>.

Операторы ввода вывода:

Cout – оператор вывода

<< - вывод в поток

Endl- перевод на новую строку

Cin – оператор ввода

>> - операция потокового ввода

Форматный вывод:

Int a=5, b=2;

Cout <<a/b<<endl;

2-будет ответом т.к целый тип данных

Float c=5, d=2;

Cout<<c/d<<endl;

2,5 будет ответом т.к. вещественный тип данных

Int a=5, b=2;

Cout<<a%b<<endl;

Ответом будет 1 т.к. это остаток от деления 5/2

ФОРМАТНЫЙ ВЫВОД – это

Форматный ввод-вывод позволяет передавать программе и выдавать из программы на внешнее устройство символьные, строковые и числовые значения, обеспечивая преобразование данных в процессе ввода-вывода.

гМанипуляторы изменяют значение некоторых переменных в операторе cout.

Значение

Результат, если значение установлено

dec

Вывод в 10-ом формате

oct

Вывод в 8-ом формате

hex

Вывод в 16-ом формате

boolalpha

Вывод булевых значений в виде TRUE и FALSE

showbase

Выводить основание системы счисления (с/с)

showpoint

Выводить десятичную точку

showpos

Выводить «+» перед положительными числами

fixed

Использовать форму вывода с фиксированной запятой

Для работы с манипуляторами необходимо подключить #include<iomanip>, библиотеку, манипулирующую заголовками.

Функция setprecision обеспечивает вывод числа с плавающей запятой с точностью до n знаков после запятой (при необходимости производится округление дробной части). Если при этом не установлен формат вывода с плавающей запятой, то точность указывает общее кол-во значащих цифр. Заданная по умолчанию точность – 6 цифр.

setw(int number) - Установить ширину поля, где number— количество позиций, символов (выравнивание по умолчанию по правой границе). Манипулятор с параметром.

setfill(int symbol) - Установить символ заполнитель. Если ширина поля больше, чем выводимая величина, то свободные места поля будут наполняться символом symbol — символ заполнитель

Пример 1:

# include<iomanip> // библиотека, манипулирующая заголовками

int a = 17;

double d = 12,362;

cout << setw(4) << a << endl;

cout << setw(10) << setfill(‘*’) << a << endl;

cout << setw(10) << setfill(‘ ‘) << setprecision (3) << d << endl;

Результат:

_ _ 1 7

*********17

12,4

Пример 2:

double a1 = 23.5446;

double b1 = 432.76421;

double sum = a1 + b1;

cout <<fixed<<setprecision(4)<<sum<<endl;

результат: 456.3088

6.Уравляющие последовательности, манипуляторы, используемые при форматном выводе в языке С/C++. Представление не изображаемых символов. Привести примеры.

Управляющие последовательности

Символ

Описание

\r

возврат каретки в начало строки

\n

новая строка

\b

backspace

\t

табуляция

\a

сигнал бипера (спикера) компьютера

Манипуляторы

Флаг

Результат, если значение установлено

left

Вывод с выравниванием слева

right

Вывод с выравниванием справа

dec

Вывод в 10-ом формате

oct

Вывод в 8-ом формате

hex

Вывод в 16-ом формате

boolalpha

Вывод булевых значений в виде TRUEиFALSE

showpos

Выводить «+» перед положительными числами

fixed

Использовать форму вывода с фиксированной запятой

// установка флага вывода

cout.setf( ios::/*name_flag*/ );

// где name_flag - это имя флага

// ios – класс вывода флагов

// снятие флага вывода

cout.unsetf( ios::/*name_flag*/ );

// unsetf - удаление флага вывода

#include <iostream>

using namespace std;

int main()

{

cout.unsetf(ios::dec);

cout.setf(ios::oct);

int value;

cin >> value;

cout << value << endl;

system("pause");

return 0;

}

7.Арифметические операции языка С/C++. Синтаксис операторов. Операции увеличения ++ и уменьшения --. Привести примеры реализации.

Арифметические:

«+» - сложение;

«-» - вычитание;

«*» - умножение;

«/» - деление;

«%» - остаток от деления.

Составное присваивание

Операция (выражение)

Оператор

Синтаксис выражения

Значение

Сложение, совмещённое с присваиванием

+=

a += b

a = a + b

Вычитание, совмещённое с присваиванием

-=

a -= b

a = a - b

Умножение, совмещённое с присваиванием

*=

a *= b

a = a * b

Деление, совмещённое с присваиванием

/=

a /= b

a = a / b

Вычисление остатка от деления, совмещённое с присваиванием[note 1]

%=

a %= b

a = a % b

Префиксная форма: ++x, --d

Постфиксная форма: x++,d--

В постфиксной форме в начале выполняется присвоение, а потом увеличение переменной на единицу.

В префиксной форме в начале выполняется увеличение переменной на единицу и только потом присвоение.

Пример

int b=1, c=1;

bplus = b++;

plusc = ++c;

cout << “b =” << b << “bplus =” << bplus; b =1 bplus =1

cout << “c =” << c << “plusc =” << plusc; с =1 сplus =2

СИНТАКСИС ОПЕРАТОРОВ

Пустой оператор –  ;

Пустой оператор – это оператор, состоящий только из точки с запятой. Он может появиться в любом месте программы, где по синтаксису требуется оператор. Выполнение пустого оператора не меняет состояния программы.

Составной оператор –  {...}

Действие составного оператора состоит в последовательном выполнении содержащихся в нем операторов, за исключением тех случаев, когда какой-либо оператор явно передает управление в другое место программы.

Условный оператор

if (<выражение>) <оператор 1> [else <оператор 2>]

Оператор-переключатель

switch (/*переменная или выражение*/)

 {

 case /*константное выражение1/*:

 {

 /*группа операторов*/;

 break;

 }

 case /*константное выражение2*/:

 {

 /*группа операторов*/;

 break;

 }

 //.    .    .

 default:

                {

                 /*группа операторов*/;

                }

 }

Оператор цикла с предусловием

while (<выражение>) <оператор>

Оператор цикла с постусловием

do <оператор> while <выражение>;

Оператор пошагового цикла

for ([<начальное выражение>]; инициализация

[<условное выражение>]; усл. повторения

[<выражение приращения>] итерация)

<оператор>

Тело оператора for выполняется до тех пор, пока условное выражение не станет ложным (равным 0). Начальное выражение и выражение приращения обычно используются для инициализации и модификации параметров цикла и других значений. Начальное выражение вычисляется один раз до первой проверки условного выражения, а выражение приращения вычисляется после каждого выполнения оператора. Любое из трех выражений заголовка цикла, и даже все три могут быть опущены (не забывайте только оставлять точки с запятой). Если опущено условное выражение, то оно считается истинным, и цикл становится бесконечным.

Оператор разрыва 

break;

Оператор разрыва прерывает выполнение операторов whiledofor и switch. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным.

Оператор продолжения  continue;

Оператор продолжения передает управление на следующую итерацию в операторах цикла whiledofor. Он может содержаться только в теле этих операторов. В операторах do и while следующая итерация начинается с вычисления условного выражения. В операторе for следующая итерация начинается с вычисления выражения приращения, а затем происходит вычисление условного выражения.

Оператор возврата return [<выражение>];

Оператора возврата заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова. Значение выражения, если она задано, вычисляется, приводится к типу, объявленному для функции, содержащей оператор возврата, и возвращается в вызывающую функцию. Если выражение опущено, то возвращаемое функцией значение не определено.

8.Операции сравнения и логические операции в языке С/C++. Синтаксис операторов. Привести примеры реализации. Приоритет операций для языка С.

Операции сравнения:

>, >= больше, больше равно

<, <= меньше , меньше равно

== равно ( не присваивание)

!= не равно

= присваивание

Логические операции:

Лог. Операция И: &&

Лог. Операция ИЛИ: ||

Лог. Операция Не: !

Примеры:

#include <iostream>

using namespace std;

int main()

{

for(int i=10;i>0;--i)

{ if (i==5)

cout<<i+15<<" ";

}

system("pause");

return 0;

}

Приоритеты:

Порядок выполнения операций может регулироваться с помощью круглых скобок.

9.Стандартные математические функции языка программирования С/C++. Привести примеры использования.

sqrt(a)

корень квадратный из а, причёма не отрицательно

sqrt(9.0)=3.0

pow(a, b)

возведение  а в степеньb

pow(2,3)=8

exp(a)

вычисление экспоненты е^а

exp(0)=1

sin(a)

a задаётся в радианах

cos(a)

a задаётся в радианах

log(a)

натуральный логарифм a(основанием является экспонента)

log(1.0)=0.0

Пример:

#include <iostream>

#include "math.h"

using namespace std;

int main()

{

double a,b;

cout<<"Vedite a: ";

cin>>a;

cout<<"\n";

cout<<"Vedite b: ";

cin>>b;

cout<<"\n";

cout<<sqrt(a)<<"\n";

cout<<pow(a,b)<<"\n";

cout<<log(a)<<"\n";

system("pause");

return 0;

}

10.Структурный подход к программированию и его реализация в языке С/C++. Рассмотреть структуры языка С/C++, позволяющие сделать единичный, двойной и множественный выбор.

Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.

Одиночный выбор:

#include <iostream>

using namespace std;

int main()

{

for(int i=10;i>0;--i)

{ if (i==5)

cout<<i+15<<" ";

}

system("pause");

return 0;

}

Двойной выбор:

#include <iostream>

using namespace std;

int main()

{

for(int i=10;i>0;--i)

{

if (i==5)

{cout<<i+15<<" ";

break;}

else

cout<<"lol"<<" ";

}

system("pause");

return 0;

}

Множественный выбор (switch):

#include <iostream>

using namespace std;

int main()

{

int a;

cin>>a;

switch (a)

{

case 1:

{

cout<<"xyz";

break;

}

case 2:

{

cout<<"xYz";

break;

}

case 3:

{

cout<<"VEra ti klassnaya";

break;

}

default:

{

cout<<"subskribe in shoker";

}

}

system("pause");

return 0;

}

11.Базовые конструкции структурного программирования в С/C++. Оператор switch. Привести синтаксис и пример использования оператора в программе.

Любую программу можно составить только из структур трех типов: следования, ветвления и цикла.

Следованиемназывается конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных).

Ветвлениезадает выполнение либо одного, либо другого оператора в зависимости от выполнения какого-либо условия.

Циклзадает многократное выполнение оператора.

switch

Позволяет осуществить выбор среди нескольких фрагментов кода, в зависимости от значения целочисленного выражения.

Множественный выбор (switch):

// форма записи оператора множественного выбора switch

switch (/*переменная или выражение*/)

{

case /*константное выражение1/*:

{

/*группа операторов*/;

break;

}

case /*константное выражение2*/:

{

/*группа операторов*/;

break;

}

//.    .    .

default:

{

/*группа операторов*/;

}

}

#include <iostream>

#include <cstring>

#include <cctype>

using namespace std;

int main()

{

long a;

cout<<"Vedite chislo ot 1 do 3 ";

cin>>a;

switch (a)

{

case 1:

{cout<<"vi vveli odin";

break;}

case 2:

{cout<<"vi vveli dva";

break;}

case 3:

{cout<<"vi vveli tri";

break;}

default:

{cout<<"vi durachok";

break;}

}

system("pause");

return 0;

}

12.Операторы повторения в С/C++. Привести блок схемы и примеры реализации операторов цикла. Дать рекомендации по выбору наилучшего оператора цикла для конкретного случая.

Есть два типа циклов: типа «пока» и типа «n-раз».

Цикл типа «пока» (операторы while и dowhile).Операторwhileповторяет указанные действия до тех пор, пока его параметр имеет истинное значение. Пример, такой цикл выполняется 4 раза, а на экран будет выведено «1,2,3,4»:

#include <iostream>

using namespace std;

int main()

{

int i=1;

while (i<5)

{ cout<<i<<" ";

i++;}

system("pause");

return 0;

}

На экран выведет «1 2 3 4 »

Пример цикла с постропроверкой (do…while) условия, который выполняется 1 раз.

#include <iostream>

using namespace std;

int main()

{

int i=1;

do

{ i++;

cout<<i<<" ";

} while(i<0);

system("pause");

return 0;

}

На экран выведет «2»

Цикл типа «n-раз» (оператор for). Операторforсодержит три параметра. Первый называется инициализацией, второй – условием повторения, третий – итерацией.

Вывод на экран от 1 до 100:

#include <iostream>

using namespace std;

int main()

{

for(int p=1;p<=100;p++)

{

cout<<p<< " ";

}

system("pause");

return 0;

}

13.Циклы с предусловием и с постусловием в С/C++. Объяснить различия. (Привести блок схемы и примеры реализации – убрать)

С пред условием(While)

#include <iostream>

using namespace std;

int main()

{

int i=1;

while (i<5)

{ cout<<i<<" ";

i++;}

system("pause");

return 0;

}

На экран выведет «1 2 3 4 »

С пост условием (do … While)

#include <iostream>

using namespace std;

int main()

{

int i=1;

do

{ i++;

cout<<i<<" ";

} while(i<0);

system("pause");

return 0;

}

Такой цикл выполнится 1 раз. На экран выведет «2»

Различие состоит в том, что на экран будет выводиться разные данные.

14.Цикл с выходом из середины. Привести блок схемы и примеры реализации.

Цикл с выходом из середины — оформляется с помощью команды выхода из цикла, находящейся внутри цикла, при выполнении которой цикл заканчивается и управление передаётся оператору, следующему за циклом. Это операторы break и continue.

#include <iostream>

using namespace std;

int main()

{

int a,b,c;

cout<<"Vedite a ";

cin>>a;

cout<<"Vedite b ";

cin>>b;

cout<<"Vedite c ";

cin>>c;

while(true)

{

if(a > 900)

{

break;

}

else

{

a=b*c;

b*=b;

c*=c;

}

}

cout << "a: " << a << " b: " << b << " c: " << c;

system("pause");

return 0;

}

15.Итерационные алгоритмы. Привести примеры реализации итерационных алгоритмов в задачах вычисления суммы бесконечного ряда с заданной точностью.

Итерационными (пошаговыми) алгоритмами называются алгоритмы, в которых на каждом шаге используется одна и та же формула, выраженная через значения, полученные на предыдущих шагах алгоритма.

Задание: вычислить значение бесконечного выражения (прогрессии) с вводом с клавиатуры значения аргумента (х) и количества членов (N).

#include <iostream>

using namespace std;

int main()

{

double a, b=1, c=sqrt(3.), y=0, x, N, t;

cout << "x= ";

cin >> x; //значения аргумента

cout << "N= ";

cin >> N; //количество членов

a = cos(x);

cout<<"cos(x) :"<<a<<"\n";

for (int i=1; i<=N; i++)

{

y = ((a+b)/c) + y;

b++;

t=i%2;

if (t==0)

{

c=sqrt(3+c);

}

else

{

c=sqrt(4+c);

}

}

cout << "y= " << y << endl;

system("pause");

return 0;

}

-----------------------------ИЛИ--------------------------------

#include <iostream>

#include <iomanip>

#include <cmath>

using namespace std;

int main()

{

double x, y, a, b, c;

int i;

cin >> x;

cout.precision(10);

cout.setf(cout.fixed);

cout << sinh(x) << endl << endl;

y = 0;

a = x;

b = 1;

c = x;

i = 1;

while ((c = a / b) >= 1E-9) //10^-9

{

y += c;

cout << setw(2) << (i - 1) / 2 << setw(15) << c << setw(15) << y << endl;

i += 2;

a *= x * x;

b *= i * (i - 1);

}

}

16.Пользовательские функции в С/C++. Разновидности функций. Определение функций. Привести пример функции, возвращающей значение.

Пользовательская функция — это функция, которая создана пользователем.

Функция – это средства языка программирования, позволяющие: разбить сложную задачу на ряд сравнительно простых; выполнить одну и туже последовательность операторов в разных частях программы.

Разновидность функций:

Возвращает 0.

intmain()

{

}

return0;

Возвращает значение (n).

voidnimon(intn);

{

}

Возвращает выражение.

double taxes (double t)

{

return 2*t;

}

ПРИМЕРЭтасозданная пользовательская функциявозвращает сумму двух целых величин.

#include <iostream>

using namespace std;

int sum(int a, int b)

{

return (a+b); // возвращает значение

}

int main(){

int x,y;

cin>>x;

cin>>y;

cout<<sum(x,y);

system("pause");

return 0;

}

17.Способы передачи параметров в вызываемую функцию на языке С/C++. Последовательность выполнения вызова функции. Привести примеры.

В языке С++ данные в подпрограмму можно передавать тремя способами:

по значению – предполагается, что каждой объявленной в заголовке параметр является локальной переменной в теле функции. Передача по значению эквивалентна операции присвоения. Например, функция int GetMax(int, int); принимает два целочисленных аргумента по значению.

по адресу (через указатель) – способ передачи параметров по адресу используется для того, чтобы через указатели обеспечить непосредственный доступ к значениям аргументов. Пример прототипа функции при передаче параметров через указатель приведен ниже: void SetNumber(int*, long*); Кроме того, функции могут возвращать не только значение некоторой переменной, но и указатель или ссылку на него.

по ссылке - при передаче по ссылке объявление параметра представляет собой объявление ссылки беЯФз инициализации: Тип &ИмяПараметра. Синтаксис передачи с использованием ссылок подразумевает применение в качестве аргумента ссылки на тип объекта. Например, функция double Glue(long &var1, int &var2) получает две ссылки на переменные типа long и int.

18.Правила разработки функций. Формальные и фактические параметры функции. Привести примеры определения и вызова функций в С/C++.

Функция должна быть определена до того, как использована.

Тело функции – это блок, т.е. последовательность описаний переменных операторов, заключенных в фигурные скобки. Даже если функция не выполняет никаких действий тело функции должно присутствовать в определении. В этом случае тело функции будет состоять просто из скобок {}.Пример:voidf(void) {}.