|
конспект по оаипу. ОАИП КОНСПЕКТъ. Понятие алгоритма, определение и правила построения алгоритмов. Алгоритмизация
Понятие алгоритма, определение и правила построения алгоритмов.
Алгоритмизация - это сведение задачи к последовательным этапам действий так, что результаты предыдущих действий используются при выполнении последующих. Алгоритм - описание характера проведения процесса, т.е. последовательности выполняемых действий, без привязки к какому-то конкретному процессору или строгий и чёткий набор правил, определяющий последовательность действий, приводящий к достижению поставленной цели. Свойства алгоритма:
Дискретность - значения новых величин вычисляются из старых величин. Определённость - данные однозначно связаны между собой, а алгоритм строго и точно определён. Результативность - алгоритм решает задачу за конечное число шагов. Массовость - алгоритм можно применить для целого класса задач.
Состав языка Си: алфавит, идентификаторы, ключевые слова, знаки операций, константы, комментарии. Структура простейшей программы.
Алфавит - совокупность символов, при помощи которых записываются все тексты на данном языке.
Включает:
Прописные и строчные буквы латинского алфавита, знаки подчёркивания. Арабские цифры от 0 до 9. Спец символы. Разделительные символы: пробел, символ табуляции, перевода строки, возврата каретки, новой страницы и новой строки.
Идентификатор(ID) - имя программного объекта(ключевые слова не могут быть использованы в качестве АЙДИ) Лексемы - минимальное значение единицы текста в программе.
Лексемы бывают:
Идентификаторы. Ключевые (зарезервированные) слова. Знаки операций. Константы. Разделители ( ().,; «Пробел»).
!КОММЕНТАРИЙ НЕ ЯВЛЯЕТСЯ ЛЕКСЕМОЙ!
В С:/*…*/;
В С++://…enter; Структура программирования в СИ:
<директивы процессора>
<определение типов пользователя -typedef>
<описание прототипов функций>
<определение глобальных переменных>
<функции>
Операция присваивания, ее различные формы (инкремент, декремент). Стандартные библиотеки языка C/C++, функции библиотеки math.h.
Операнд_1=Операнд_2;
Только переменная Константа(переменная)
(адресное выражение) x = x # 1;
# - Инкремент(+1), Декремент(-1).
##X - префиксная часть.
X## - постфиксная часть. Наибольшая часть и используемые библиотеки:
Stdio.h - стандартные функции ввода - вывода. Math.h - математические функции. Conio.h - для работы с консолью.
Корень из чего-то (sqrt());
Модуль чего-то (fabs());
Экспонента от чего-то(exp());
Число в степени (pow( , ));
Натуральный логарифм (log());
Логарифм lg() (log10());
Синус (sin());
Тангенс(tan());
Арксинус(asin());
Гиперболический синус (sinh());
Гиперболический косинус(cosh());
Гиперболический тангенс(tanh());
Остаток от деления x/y (fmod( , ));
Наименьшее целое >=x (ceil());
Наибольшее целое <=x (floor());
Базовые типы данных. Понятие операции и выражения.
int(integer) - целый тип данных.
float - вещественный тип данных с одинарной точностью.
char(character) - символьный.
int:
short - короткие;
long - длинные;
unsigned - беззнаковые;
double - вещественный с удвоенной точностью.
Сложные типы данных:
Массивы. Структуры. Объединения(union). Перечисления(enum).
Знак операции - это один или более символов, определяющих действие над операндами, т.е. операции задают действия, которые необходимо выполнить.
Операции:
Унарные. Бинарные. Тернарные.
Выражения используются для вычисления значений, состоят из операндов, операций и скобок.
Арифметические операции, преобразование типов при выполнении операций, операция явного приведения типа. Понятие переменной.
Арифметические операции: +, -, /, *, %; Операндами могут быть константы, переменные, обращения к возвращающим значения функциям, элементы массива, любые арифметические выражения, указатели. Указатели:
Short => int;
Char => int;
Double => double;
Long => long; Операция явного приведения типа - перед выражением нужно поставить в круглых скобках атрибут соответствующего типа:
(тип) выражение;
x = (n + k)/3 => x=int;
x = (double) (n + k)/3 => x=3.33333…; Переменная — это определённая область памяти, адрес которой можно использовать для осуществления доступа к данным и в которую можно записать различные значения. Как правило, этой области памяти устанавливают какое-нибудь имя.
Операции сравнения, логические операции, побитовые операции. Оператор безусловной передачи управления goto. Понятие «блок».
== - равно
< - меньше
> - больше
!= - не равно
<= - меньше или равно
>= - больше или равно Операнд_1 знак операции Операнд_2 Логические операции:
! - отрицание (нет)
&& - конъюнкция (и)
|| - дизъюнкция (или) Побитовые операции:
- дополнение (унарная операция), инвертирование (одноместная)
& - побитовое и
| - побитовое включающее или
^ - побитовое исключающее или
>> - сдвиг вправо
<< - сдвиг влево
выражение инвертирует каждый разряд в двоичном представлении своего операнда.
!ТОЛЬКО ВЫРАЖЕНИЯ ПРИВОДИМЫЕ К ЦЕЛОМУ ТИПУ!
Если выражение имеет тип Unsigned, то при сдвиге вправо освобождающиеся разряды заполняются нулями. Выражения типа Signed могут сдвигаться вправо с копированием знакового разряда. При сдвиге влево, освобождающиеся разряды всегда заполняются нулями.
Унарная операция даёт дополнение к целому, т.е. каждый бит со значением 1 получает дополнение 0 и наоборот. X<<1 <-> x*2
X<<2 <-> x*4
X<<3 <-> x*8
X>>1 <-> x/2
If(I & 1) <-> i - чётно Оператор безусловного перехода goto goto метка; Предназначен для передачи управления оператору, помеченному меткой, которая представляет собой идентификатор, оформленный по всем правилам идентификации переменных с символом: после него, например: m1: ;
Область действия метки - функция, где эта метка определена. Можно использовать блок. Циклы и переключатели можно вкладывать друг в друга и наиболее характерный оправданный случай использования оператора goto - выполнение прерывания во вложенной структуре.
For (…)
For (...)
{
If (ошибка) goto error;
}
error: операторы для устранения ошибки;
Оператор условного перехода if-else, оператор альтернативного выбора switch. Условная тернарная операция «?:». Операторы передачи управления
Условный оператор if используется для разветвления процесса выполнения кода программы на два направления.
Простой: If(…) Оператор;
Усложнённый: If(…) Оператор 1;
else Оператор 2;
Условная операция “?:” - тернарная, так как в ней участвуют 3 операнда:
Выражение_1 ? Выражение_2 : Выражение_3;
Если Выражение_1 истинно, то результатом операции является Выражение_2, иначе Выражение_3.
max = (a > b) ? a : b
Оператор switch предназначен для разветвления процесса вычислений на несколько направлений.
Switch (Выражение)
{
case const1: Операторы 1; break;
case const2: Операторы 2; break;
…
Default: Оператор n;
}
Выражение целого или символьного типа.
Операторы передачи управления:
- Оператор безусловного перехода goto;
- Оператор перехода к следующему шагу цикла continue;
- Выход из цикла, либо оператора switch - break;
- Оператор возврата из функции return;
Операция последовательного вычисления «,» (запятая). Оператор цикла с предусловием while.
Операция «,» используется при организации строго гарантированной последовательности выражений:
Выражение_1,...,Выражение_N вычисляются последовательно друг за другом и результатом операции становится значение последовательного выражения:
m=(i=1,j=i++,k=6,n=i+j+k);
Цикл - это одно из фундаментальных понятий программирования. Под циклом понимается организованное повторение некоторой последовательности операторов.
Любой цикл состоит из кода цикла, т.е. из тех операторов, которые выполняются несколько раз, начальных установок, модификаций параметра цикла и проверки условия продолжения выполнения цикла.
Один проход цикла называется шагом или итерацией.
Проверка условий продолжения цикла происходит на каждой итерации.
Перечень операторов языка си3>2>1> |
|
|