- •Передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);
- •Области действия имён; (область видимости переменной).
- •Достоинства:
- •Представление целых чисел в эвм
- •Основные типы данных, операции над ними.
- •Операции
- •Преобразование типов
- •Особенности операций для вещественных чисел
- •3.2. Оператор if – else
- •3.3. Конструкция else-if.
- •3.4. Оператор switch
- •3.5. Циклы while и for
- •3.1. Операторы и блоки.
- •3.6. Цикл do-while
- •3.7. Операторы break и continue
- •3.8. Оператор goto и метки
- •3.9. Оператор return
- •Инвариант
- •Указатели
- •Массивы
- •Связь между указателями и массивами
- •Представление в эвм
- •Создание указателя на массив
- •Инициализация массивов
- •Операции над указателями
- •Замечание! 2 указателя нельзя суммировать, но можно прибавлять константу. Сравнивать допустимо только с указателями того же типа или с null
- •Метод барьера в линейном поиске
- •Метод барьера при быстрой сортировке массива
- •Сортировка методом вставки. В отсортированной части массива последний элемент – барьер.
- •Процедуры
- •Локальные и глобальные переменные
- •Локальные переменные
- •Глобальные переменные
- •Средний и наихудший случай
- •Дополнительно (то же самое)
- •Анализ эффективности алгоритмов не должен зависеть от:
- •Временная сложность алгоритма
- •Некоторые свойства временной сложности алгоритма (функции f(n) )
- •Характеристики рекурсии
- •Виды рекурсии
- •Когда не нужно применять рекурсию
- •Применение эвристик.
- •Метод ветвей и границ (доп. Из Wikipedia)
- •Алгоритм Неймана.
- •Линейный конгруэнтный метод
- •Выбор параметров, выбор модуля и множителя.
- •Сдвиг на несколько символов: Если не совпадает , то сдвигаем образ вправо до последнего его стоп-символа. Если «стоп-символа» вообще нет в образе, то образ смещается за этот символ.
- •Вопросы на экзамен по информатике:
- •Перевести отрицательное целое число (он любое может назвать) в дополнительный код.
- •Есть ли смысл применять метод барьера в поиске подстроки в строке?
- •Задачи на экзамене:
- •Задача о Ханойских башнях
- •Бинарный поиск элемента в массиве
- •Сумма цифр в числе
- •Число различных элементов в символьном массиве
- •Сгенерировать все перестановки в целочисленном массиве (Билет 1).
- •Функция, возвращающая I и j такие, чтобы сумма эл-тов в I-ой строке равнялась сумме в j-ом столбце.
- •Есть одномерный массив целых чисел и нужно построить функцию, получающую на вход вещественное число X и возвращающую индекс элемента, который ближе всего к этому числу.
- •Функция strcpy (char *s1, char *s2) , билет 12.
- •Реализация strcat(); Билет 7.
- •Билет 5. Функция, выдаёт частное и остаток от деления X на y, нельзя пользоваться / и % .
- •Метод генерации случайной перестановки ( Тасование Фишера-Йетса).(не ок)
3.1. Операторы и блоки.
Выражение наподобие х=0, i++, printf(…) становится оператором, если после него поставить точку с запятой ;. В языке Си точка с запятой – элемент оператора и его завершающая часть. Фигурные скобки {} служат для группировки объявлений и операторов в составные операторы или блоки, синтаксически эквивалентные одному оператору. Например,
(if (условие)
{ // начало составного оператора
... // несколько операторов
} // конец составного оператора
3.2. Оператор if – else
Выражает процесс принятия альтернативных решений.
If(выражение)оператор 1 else оператор 2 .
Часть с else не обязательна. Вначале ищем выражение , если оно истинно(имеет ненулевое значение), то выполняется оператор1, если ложно и есть блок элсе, то выполняется оператор 2. Можно упростить выражение – if (выражение !=0) или if(выражение).
3.3. Конструкция else-if.
If (выражение)
Оператор
Else if(выражение)
Оператор
Else if(выражение)
Оператор
Else if
Оператор
Else
Оператор
Такая последовательность представляет собой способ записи принятия многовариантного решения. Выражение меняются по порядку, если какое истинно, то выполняется оператор и проверка условий прерывается. Последний вариант - ничего из перечисленного.
3.4. Оператор switch
Используется для выбора одного из нескольких вариантов в зависимости от того, с какой из набора целочисленных констант совпадает значение некоторого выражения. (целые или символьные переменные)
Switch (выражение)
{
Case констант-выраж: операторы
Case констант – выраж: операторы
Default: операторы
}
Каждый из блоков имеет метку в виде константы с целочисленным значением или константного выражения. Если одна из меток совпадает со значением выражения , управление передаётся операторам этой метки. Все выражения после кэйс должны быть различны. Блок дефолт в том случае, если не найдено ни одного соответствия. Если его нет,то операции никакие не выполняются. ( case ‘+’ : case’-‘: case ‘*’ : i++; break++; - один оператор – несколько меток).
Блоки case, по сути – метки. Нужно выйти – break, рекомендуется ставить даже в конце последнего блока дефорлт. Т.е. после того, как нашлось совпадение в одном из case, если явно не указан выход из оператора switch, то программа выполняет последовательно все остальные ветки записанные ниже той, с которой выполнено совпадение, пока не закончится оператор switch или пока не будет явно указан выход из оператора. Хорошее выполнение сквозное:
case 'W':
case 'w': printf("\nVpered\n"); break;
3.5. Циклы while и for
Цикл while(цикл с предусловием). Сначала вычисляется выражение, если оно не равно 0, выполняется оператор, а потом выражение вычисляется снова, до тех пор, пока оно не равно 0
While(выражение)
Оператор
////
Цикл for (итерационный цикл, цикл ,управляемый счётчиком)
For( выраж1; выраж2 ; выраж3)
Оператор,
Что эквивалентно (почти всегда, за исключением continue)
Выраж1;
While(выраж2)
{
Оператор;
Выраж3;
}
Чаще всего выраж1 и выраж3 – операторы присваивания или вызовы функций, а 2 – отношение или логическое.
Бесконечный цикл for(;;) {…}, нужен break или return. Или while(1)
Следует выбрать for когда есть простая инициализация и инкрементирования переменных цикла, поскольку все управляющие элементы удобно сгруппированы в заголовке.Запятая в цикле фо – в заголовок можно вставлять несколько операторов.
