- •14.Цикл с выходом из середины. Привести блок схемы и примеры реализации.
- •15.Итерационные алгоритмы. Привести примеры реализации итерационных алгоритмов в задачах вычисления суммы бесконечного ряда с заданной точностью.
- •Разновидность функций:
- •Формальные и фактические параметры функции.
- •1 Способ
- •2 Способ
- •Функция ввода символов
- •Функция strcmp(str1, str2).
- •Функция stricmp.
- •Функция strncmp.
- •Функция strnicmp. Сравнивает первые num символов без учета регистра.
Лиманова
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;
Оператор разрыва прерывает выполнение операторов while, do, for и switch. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным.
Оператор продолжения continue;
Оператор продолжения передает управление на следующую итерацию в операторах цикла while, do, for. Он может содержаться только в теле этих операторов. В операторах 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 и do…while).Оператор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) {}.