
- •1 Билет
- •2 Билет
- •3 Билет
- •4 Билет
- •5 Билет
- •Преобразование основных типов
- •8 Билет
- •9 Билет
- •10 Билет
- •Инициализация
- •Использование одномерного массива
- •Связь массива с указателем
- •Передача в функцию
- •Динамический массив
- •Многомерные массивы Многомерные массивы, как правило, реализованные как одномерные массивы, каждый элемент которых является ссылкой на другой одномерный массив.
- •14 Билет
- •15 Билет. Задача поиска.
- •16 Билет. Задача сортировки
- •17 Билет
- •17)Рекурсия(Явная и неявная)
3 Билет
Алгоритмы и их характеристики.
Разработка алгоритмов:
Определение входа-выхода
Осознание идеи связи входа-выхода (тела программы)
Описание этой идеи
Свойства алгоритмов:
Вход
Выход
Определённость инструкций
Выполнимость инструкций
Конечность алгоритма
Массовость
Критерии сравнения алгоритмов:
Размер входа
Временна́я сложность - T(n)
Емкостная сложность - E(n)
Алгоритм порядка f(n) - O(f(n))
Описание алгоритмов:
Описание блок-схемами
Псевдокод
Алгоритмический язык
Управляющие структуры.
Минимальный пакет операторов:
Структуры следования
Развилки (условия if-else)
Цикл «while»
4 Билет
Лексемы:
Идентификатор
Служебные символы:
Ключевые слова
Спец. символы: +, -, <, >, <=, >=, знаки операций, знаки разделителей, пробелы
Метка
Константы
В записи лексической единицы не допускаются пробелы!
Между двумя лекс. единицами, которые не являются математическими символами/пробелами, нужен пробел!
Концепция типов данных:
Переменная, константа, выражение, функция принадлежит какому-либо типу.
?
Тип = {множества: констант, переменных, функций, данных, операций} + {размер области памяти, способ обработки данных}
5 Билет
Основные типы C++ :
Стандартные
Сложные
int, char, bool float, double, longdouble
| |
целые |
| |
АРИФМЕТИЧЕСКИЕ
Целый тип:
Операции: {+0, -0; *, /, %; +, -; <<, >>; <, <=, >, >=; ==, !=}
Функции: {abs(x), srand(x), rand()}
int 4 байта -2147483648 – 2147483647
short, long, signed, unsigned
shortint 2 байта
longint 8 (4) байта
#include <cstdlib>
0xABC - 16ичная система
0123 - 8ичная система
123 - 10ичная система
Вещественный тип:
Операции: {+0, -0; *, /; +, -; <=, >=, <, >; ==, !=}
Функции: {fabs(x), sin(x), cos(x), log(x), ln(x), lg(x), exp(x), atan(x), asin(x), acos(x), pow(a,x), sqrt(x)}
float 4 байта 1,17*10-38 ≤ |x| ≤ 3,4*1038
double 8 байт 2,2*10-308 ≤ |x| ≤ 1,7*10308
#include <cmath>
Символьный тип:
char 1 байт
unsigned char 0-255
#include <cctype>
isalpha(x) – x буква?
isalnum(x) – x буква/цифра?
isdigit(x) – x цифра?
iscntrl(x) – x управляющий символ?
Логический тип:
Операции: {!; <, >, <=, >=; ==, !=; &&, ||}
Булева алгебра
№6. Выражение в C++. Тип выражения. Приоритеты операций. Префиксные и постфиксные операции. Совместимость типов. Преобразование типов. Вычисление выражений.
Выражение. Состоит из одного или более операндов, в простейшем случае – из одного литерала или объекта.
Типы выражения:
-логические выражения,
-арифметические выражения,
-выражения сравнения
В выражение могут входить операции разных типов. если операнды разного типа, перед вычислением выполняются преобразования типов по определенным правилам(встроенных в программу), обеспечивающим преобразование более коротких типов в более длинные для сохранения значимости и точности. Преобразования типов могут быть неявными, при выполнении операций и вызовов функций, или явными, при выполнении операций приведения типов.
Таблица приоритетов в С++:
Операции инкремента (++) и декремента (--)
В языке C++ предусмотрены две уникальные операции, которые увеличивают или уменьшают значение переменной на 1.
Оператор |
Пример |
Описание |
Эквивалентное выражение |
+ + |
i + +; |
Постфиксная |
i =i+1; или i+=1; |
+ + |
+ + i; |
Префиксная |
i =i+1; или i+=1; |
- - |
i - -; |
Постфиксная |
i =i-1; или i-=1; |
- - |
- - i; |
Префиксная |
i =i-1; или i-=1; |
Префиксный и постфиксные операции различаются приоритетом. Префиксные операции имеют самый большой приоритет и выполняются до любой другой операции. Постфиксные операции имеют самый маленький приоритет и выполняются после всех остальных операции.
Пример.
float a, b=2, c=1, d=1;
a = b + c++;
cout << "\n a=" << a <<"\t c= "<< c;
// Даст результат a=3 c=2.
Используется постфиксный инкремент. Сначала произойдет сложение b и c, результат запишется в а, затем с будет увеличена на 1
a = ++d + b;
cout << "\n a=" << a <<"\t d= "<< d;
// Даст результат a=4 d=2.
Используется префиксный инкремент. Сначала d будет увеличена на 1 (и станет равной 2), затем произойдет сложение d и b, результат запишется в а