
- •Цели программирования.
- •Уровни языков программирования. Языки ассемблера (история возникновения, отличительные особенности, пример языков).
- •Уровни языков программирования. Языки высокого уровня (история возникновения, отличительные особенности, пример языков).
- •Методы реализации программ. Компиляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Интерпретация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Смешанная реализация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Трансляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Жизненный цикл программного продукта.
- •Этапы решения задач на эвм.
- •Критерии качества программ.
- •Способы записи алгоритма. Блок-схемы.
- •Способы записи алгоритма. Псевдокод.
- •Способы записи алгоритма. Сравнение различных подходов. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- •Высоконадежная память:
- •Принципы типизации данных.
- •Иерархия простых типов данных.
- •Стандартные типы данных. Таблица характеристик. Особенности выбора типа
- •Правила приведения типов.
- •Оператор sizeof.
- •Константы. Специальные символы. Квалификатор const.
- •Область видимости переменных.
- •Операторы управления областью видимости.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- •Понятие ассоциативности, приоритета, размерности. Таблица приоритета операций.
- •Арифметические операции.
- •Логические операции (краткая схема вычислений).
- •Побитовые операции (таблицы истинности).
- •Структурное программирование: историческая справка.
- •Принципы структурного программирования.
- •Структурное программирование: три базовые конструкции.
- •Основные операторы.
- •Пустой оператор.
- •Оператор присваивания (синтаксис, логика работы, полная и сокращённая форма, порядок выполнения, контекст вычисления, пример).
- •Условный оператор (полная и краткая формы, неоднозначность условного оператора).
- •Составной оператор (синтаксис, логика работы, пример).
- •Неоднозначность условного оператора.
- •Связь между несколькими условными операторами и сложными логическими выражениями.
- •Оператор выбора (синтаксис, логика работы, пример).
- •Ссылки (понятие, способы применения).
- •Подпрограммы (синтаксис, виды подпрограмм, контекст, пример).
- •Оператор return.
- •Прототипы функций (понятие, назначение, способы применения).
- •Библиотеки функций. Оператор #include.
- •Создание пользовательских библиотек.
- •Способы передачи параметров в функции.
- •Способы передачи значения из одной функции в другую.
- •Рекурсия (понятие, правила написания рекурсивных подпрограмм, прямая и обратная и косвенная рекурсии).
- •Параметры по-умолчанию.
- •Перегрузка функций.
- •Перегрузка операторов.
- •Шаблоны функций.
- •Разрешение неоднозначностей при вызове функций.
- •Одномерные массивы (объявление, индексация, хранение в памяти, сортировка). Пример: поиск второго наибольшего по величине значения в массиве.
- •Типовые алгоритмы обработки массивов.
- •77. Указатели (назначение, синтаксис, операции).
- •78. Различие между указателями и ссылками.
- •79. Динамическая память (выделение и освобождение памяти под переменные, одномерные массивы, двумерные массивы).
- •80. Тип данных «массив массивов».
- •81. Представление строк в языках программирования. Достоинства и недостатки различных представлений (отличие ‘a’ от “a”).
- •82. Основные алгоритмы обработки строк.
- •Функции классификации Функции преобразования
- •85. Файлы (понятие, текстовые и двоичные файлы, структурированные и неструктурированные, операции, основные библиотеки для работы с файлами).
- •86. Потоковый ввод-вывод. Библиотека потокового ввода-вывода.
- •88. Файловый ввод-вывод. Стандартная библиотека ввода-вывода.,
- •90. Типовые алгоритмы обработки файлов.
- •92. Создание простых бд с помощью массива структур.
- •93. Списки (определение, типовые операции, использование).
- •94. Создание простых бд с помощью списков.
Составной оператор (синтаксис, логика работы, пример).
Составной оператор служит для объединения нескольких операторов в один. Данную конструкцию можно применять для выполнения нескольких действий в одном условии, то есть если вам требуется при соответствии условия заданным параметрам произвести сразу несколько вычислений.
1 2 3 4 5 6 7 |
int a=5,b=15; if (b>a) { a=a+1; b=b-2; } cout << a << " " << b; |
Применяется в тех случаях, когда по синтаксису требуется 1 оператор, а нужно выполнять несколько, также он может применяться в качестве пустого оператора или {}. Позволяющих решать неоднозначность условного оператора в строку.
Пример:
#include <iostream>
#include <cmath>
int main()
{ double a,b,c;
cout<<" введите коэфициент a,b,c";
cin>>a>>b>>c;
double d=b*b-4*a*c;
if(d>0)
{
double x1= (-b+sqrt(d))/2/a;
double x2= (-b-sqrt(d))/2/a;
cout <<"x1"<<x1<<"x2"<<x2<<endl;
}
else
if(d==0)
{
double x= -b/2/a;
cout <<"x="<<x<<endl;
}
else
cout <<"сомнений нет"<<endl;
return 0;
}
Неоднозначность условного оператора.
Связь между несколькими условными операторами и сложными логическими выражениями.
Оператор выбора (синтаксис, логика работы, пример).
Switch (выражение)
{case значение 1;
Оп 1-1;
Оп 1-n;
Case значение 2;
Оп 2-1;
Оп 2-n;
Case значение m;
Оп m-1;
Оп m-n;
Default
Оп m+1;
Результат вычисления должен иметь целочисленный или перечисляемый стиль, иначе укажет на ошибку компилятора
Производится поиск значений равночисленный вычисляется поле case
Поиск осуществляется сверху вниз. Если указанное значение 2 или более раз, то операторы начинают выполняться с первого встречного. Если ни одно значение у case не подошло, то ищется метка default (эта метка может находится вначале или в середине), если эта метка найдена, то выполняются все операторы, до оператора with. Если на одна метка не совпадает и нет метки default, то действие не выполняется.
Пример:
//вычисление для недели по дню месяца, номера месяца и номера года #include <iostream>
using namespsce std;
int main()
{
int d, m, y;
cout<<"введите день, месяц и год";
cin>>d>>m>>y;
int tmp=(m<3?1:0);
int weekday=(((3*y-(7*(y+(m+9)/12)/4 +(23*m)/9 +d +2 +((y-tmp)/100 +1)*3/4 - 16)%7))+1);
switch (wekday)
{
case 1;
cout<<"понедельник"<<endl;
break;
case 2;
cout<<"вторник"<<endl;
break;
...
case 7;
cout<<"воскресенье"<<endl;
}
return 0;
}
Цикл с предусловием.
Синтаксис while (усл)
Оператор
Сперва проверяется условие, если условие верно ,то проверяется оператор, а затем снова условие, до тех пор, пока условие не станет ложным.
Блок-схема
Цикл с постусловием.
Цикл do/while
//аналог repeat/until
Синтаксис do
Оператор;
While(усл);
Сначала оператор, потом условие , пока оно не станет ложным
Пример
Цикл с параметром.
Взаимозаменяемость циклов.
While и do/while взаимозаменяемы, если тело цикла выполняется хотя бы 1 раз
Оператор break.
Данный оператор прекращает ближайшего внешнего оператора switch,for,while и do/while/
Если он встретится выше операторов, то это приведет к синтаксической ошибке.
пример
Оператор continue
Прекращает выполнение текущей итерации цикла и в операторах while и do/while переходит к проверке условия, а for к выражению изменения счетчика.
пример
Оператор ?: (синтаксис, логика работы, пример).
Терна́рная усло́вная опера́ция (от лат. ternarius — «тройной») (обычно записывается как ?:) — во многих языках программирования операция, возвращающая свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом. Как можно судить из названия, тернарная операция принимает всего три указанных операнда.
Синтаксис
логическое выражение ? выражение 1 : выражение 2
Алгоритм работы операции следующий:
Вычисляется логическое выражение.
Если логическое выражение истинно, то вычисляется значение выражения выражение 1, в противном случае — значение выражения выражение 2.
Вычисленное значение возвращается.
Нужно обратить внимание, что вычисляется только одно из выражений: выражение 1 или выражение 2. Это сделано для оптимизации и, в некотором смысле, соответствует принципу ленивых вычислений.
Пример
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char** argv)
{
string name;
ofstream fout;
if (argc > 1 && argv[1])
{
name = argv[1];
fout.open(name.c_str(), ios::out | ios::app);
}
ostream& sout = name.empty() ? cout : fout;
return 0;
}