- •1.Моделированьепроцесса решения.
- •2. Формализация процесса решения задачи.
- •1) Поиск решения эквивалентной задачи.
- •3.Интуитивное понятие алгоритма.
- •4.Основные свойства алгоритма.
- •5.Взаимосвязь между набором элементарных операций и исполнителем алгоритма.
- •6. Способы изображения алгоритма.
- •7.Введение в язык Си: истоки, парадигма программирования (отношение между набором алгоритмов и набором данных в программах).
- •8.Структура программ на языке Си. Директива процессора, комментарии.
- •11. Описание переменной: имя переменной; строчные и прописные буквы в идентификаторах, задание начального значения (инициализация).
- •15.Преобразование операндов в арифметических выражениях.
- •16.Сложние объявления и элементы объявления.
- •17.Указатели (2 категории).
- •19. Оператор постфиксного увеличения/ уменьшения.
- •20. Оператор префиксного увеличения/ уменьшения.
- •21. Простой оператор присваивания.
- •22. Составные операторы присвоения.
- •23. Условный оператор if.
- •24. Оператор выбора switch.
- •25. Понятие массива, описание массива, размерность массива, размещение в памяти.
- •26. Описание массива имеет вид:
- •27. Массивы символов и литеральные строки.
- •28. Операторы цикла (for, while и do-while) для работы с массивами.
- •29. Многомерные массивы: описание, размещение в памяти, инициализация, обращение к элементам.
- •30. Взаимосвязь массивов и указателей. Описание указателя.
- •32. Указатель типа void*. Преобразование указателя операцией приведения типа.
- •33. Доступ к переменным через указатели: операция & и операция *.
- •37.Синтаксис объявления (--заголовка, --прототипа ) функции. Оператор return
- •38. Понятие формальных параметров и фактических аргументов (при вызове ф-ции). Переменное число аргументов или аргументы с изменяющимися типами (многоточие).
- •39. Указатель на функцию
- •40. Перегрузка функций
- •41. Итерпритация сложных описаний изнутри наружу.
24. Оператор выбора switch.
switch (<выражение>) {
case <значение1>:
<оператор1>;
break;
case <значение2>:
<оператор2>;
break;
--------------------------------
default:
<оператор>
break;
} Вначале анализируется переменная, далее осуществляется переход к той ветви конструкции, для которой значение переменной или выражения совпадает с указанным константным выражением. Затем выполняется оператор или группа операторов, пока не встретится зарезервированное слово break. Если значение переменной не совпадает ни с одним константным выражением, то управление передается ветви default. После чего выполняется оператор или группа операторов данной ветви.
На практике количество разделов case в операторе switch следует ограничивать, поскольку оно влияет на эффективность программы. Несмотря на то что оператор case является меткой, он используется только внутри оператора switch.
25. Понятие массива, описание массива, размерность массива, размещение в памяти.
Массив – конечная именованная последовательность элементов одного типа. Описание массива: <тип> <имя>[<размер_массива>]; Доступ к элементам производится по индексу. Он записывается в квадратных кавычках [ ] и значения индексного выражения никак не контролируется по отношению к размеру массива ни на этапе компиляции, ни на этапе выполнения (может выйти за пределы и компилятор ничего не выдаст). Для всех массивов, кроме динамического, размер должен быть известен на этапе компиляции – задан константою или константным выражением целого типа(int, char…) const n = 10; int mass[n]; int mass2[n*10+15]; Элемент массива имеет индекс от 0 до размерности массива минус один. Например: int array[10]; Индекс имеет диапазон 0..9 int array2[n]; - индекс изменяется от 0 до n-1. Можно сразу задать значения элементам массива: <тип> <имя>[<размер_массива>] = {<значение эл. через запятую>}; например: char buf[5]={‘a’,’b’,’c’,’d’,’e’}; int kk[3]={1,2,10}; int nol[100]={0} В последнем весь массив nol инициализируеться нулями. Нельзя использовать массивы ссылок. Имя массива по умолчанию считается указателем на первый элемент массива. В памяти элементы массива находятся последовательно.
26. Описание массива имеет вид:
<тип> <имя_массива>[<констное_выражение>];
Каждый эл-т массива имеет индекс от 0 до кол-ва эл-тов -1.
Например: int Mas1[4]; или const int k=4; int Mas[k];
Массив может быть инициализирован сразу же при описании:
int Mas2[3]={1,2,3}; char guf[3}={'R','I','P'};
int mas3[7]={1,2,3};
В последнем случае, когда указаны не все элементы, оставшиеся заполняются нулями.
Инициализация слишком большого числа элементов (больше размера массива) приводит к ошибке:
int buf1[5]={1,2,3,4,5,6,7}; → error: too many initialized
Если размер массива не задан, он определяется длиной списка:
int buf2[]={1,2,3,4,5}; //размер массива 5.
int mass[5]={1,2,3,4,5}; //mass[0]=1; mass[1]=2; ... mass[5]=0
массивы ссылок использовать не разрешается, но массив указателей допустим:
int ix, jx, kx;
int &jar[]={ix, jx, kx}; // приводит к ошибке
int *iar[]={&ix, &jx, &kx}; // правильно
Имя массива по умолчанию считается указателем на первый элемент массива.
arr ↔ & arr [ 0 ]
arr [ i ] ↔ & (arr +i)
int members = sizeof(arr) / sizeof(int);
int a1[100], b1[100];
int * pa=a1; //& a1 [0]
int * pb=b1; //& b1 [0]
for (i=0; i<100; i++)
{* pb ++ = * pa ++;}
