- •Передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);
- •Области действия имён; (область видимости переменной).
- •Достоинства:
- •Представление целых чисел в эвм
- •Основные типы данных, операции над ними.
- •Операции
- •Преобразование типов
- •Особенности операций для вещественных чисел
- •3.1. Операторы и блоки.
- •3.2. Оператор if – else
- •3.3. Конструкция else-if.
- •3.4. Оператор switch
- •3.5. Циклы while и for
- •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, нельзя пользоваться / и % .
- •Метод генерации случайной перестановки ( Тасование Фишера-Йетса).(не ок)
Основные типы данных, операции над ними.
Тип объекта всегда определяет, какой набор значений может иметь этот объект и какие операции могут над ним выполняться.
void - Пустой тип, используется для создания указателей на переменную неизвестного типа и указания того, что функция не возвращает значений;
INT - целочисленный тип. Количество чисел в машинном изображении множества целых чисел зависит от длины машинного слова, обычно выражаемой в битах.
Размер типа int соответствует стандартной размерности машинного слова, обрабатываемого процессором, long – машинное слово увеличенной (двойной) размерности.
Модификаторы signed и unsigned могут применяться к типу char и любому целочисленному. Для экономии места, если точно известно, что не будут записывать неотрицательные числа.
sizeof(short) <= sizeof(int) <= sizeof(long)
16 битная – 16 16 32
32х битная – 16 32 32
64х битная – 32 64 64
Short (int) = (-32768 – 32767), 16 бит.
Unsigned short = (0 – 65535), 16 бит.
Long = (-2147483648 – 2147483647), 32 бита.
Unsigned long (0 – 4294967295), 32 бита.
Int (-2147483648 – 2147483647), 32 бита.
Unsigned int (0 – 4294967295), 32 бита.
Так как числа с плавающей точкой состоит из набора отдельных двоичных разрядов, условно разделенных на так называемые знак, порядок и мантиссу.
FLOAT - тип для вещественных чисел, с плавающей точкой одинарной точности.
32 бита в памяти – одно машинное слово, ~7.2 десятичных знаков, диапазон от 3.4е-38 до 3.4e+38.
DOUBLE - тип для вещественных чисел двойной точности;
64 бита в памяти – два машинных слова, ~15,9 десятичных знаков, диапазон от 1.7e-308 до 1.7e+308.
char - символьный тип. Также этот тип может использоваться как целочисленный тип, к нему применимы спецификаторы знака. Размер типа равен 1 байту, может вмещать максимум 1 символ. Ее значениями являются различные символы из кодовой таблицы, например, 'ф', ':', 'j' (при записи в программе они заключаются в одинарные кавычки). Если в переменой типа чар хранится символ из набора, то его значение эквивалентно коду из этого набора и неотрицательно.
Обозначается, соответственно, как "signed char" (знаковый тип) и "unsigned char" (беззнаковый тип). Знаковый тип может хранить значения в диапазоне от -128 до +127. Беззнаковый - от 0 до 255. Под переменную типа char отводится 1 байт памяти (8 бит).
signed и unsigned
Они указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int.
Замечание! Отметим, что модификатор типа char используется для представления символа (из массива представление символов) или для объявления строковых литералов. Значением объекта типа char является код (размером 1 байт), соответствующий представляемому символу. Для представления символов русского алфавита, модификатор типа идентификатора данных имеет вид unsigned char, так как коды русских букв превышают величину 127.
