Подготовка к ЕГЭ
Задания из раздела С
C1 (повышенный уровень, время - 30 мин)
Тема:  Исправление ошибок в простой программе с условными операторами.
Что нужно знать:
·    правила построения программы на Паскале, Бэйсике или Си
·    правила работы с переменными (объявление, ввод, вывод, оператор присваивания)
·    ветвление -  это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое условие;
·    условный оператор if-else служит для организации ветвления в программе на языке Паскаль
условный оператор может иметь полную или неполную форму;
·    после else не надо (нельзя!) ставить какое-то условие,  эта часть выполняется тогда, когда условие после if неверно (частая ошибка - после else пытаются написать условие, обратное тому, которое стоит после соответствующего ему if)
в Паскале перед
else не ставится точка с запятой, поскольку это ключевое слово обозначает не начало нового оператора,
ключевая тема этого задания ЕГЭ - использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой» или с неправильными отступами,
C2 (высокий уровень, время - 30 мин)
Тема:  Обработка массива (написать программу из 10-15 строк на языке программирования или алгоритм на естественном языке).
Что нужно знать:
·    массив - это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядом
·    для обращения к элементу массива используют квадратные скобки, запись  A[i] обозначает элемент массива A с номером (индексом)  i
·    для обработки всех элементов массива используется цикл вида
for i:=1 to N do begin
  
{ что-то делаем с элементом A[i] }
end;
переменная  i обозначает номер текущего элемента массива, она меняется от 1 до N с шагом1, то есть мы «проходим» последовательно все элементы
·    матрица (двухмерный массив) - это прямоугольная таблица однотипных элементов
·    если матрица имеет имя A, то обращение A[i,k] обозначает элемент, расположенный на пересечении строки i и столбца k
·    каждая строка матрицы - это обычный (одномерный, линейный) массив; для того, чтобы обработать строку i в матрице из M столбцов, нужно использовать цикл, в котором меняется номер столбца k:
for k:=1 to M do begin
  
{ что-то делаем с элементом A[i,k] }
end;
·    каждый столбец матрицы - это обычный (одномерный, линейный) массив; для того, чтобы обработать столбец k в матрице из N строк, нужно использовать цикл, в котором изменяется номер строки i:
for i:=1 to N do begin
  
{ что-то делаем с элементом A[i,k] }
end;
<
C3 (высокий уровень, время - 30 мин)
Тема:  динамическое программирование.
Что нужно знать:
·    динамическое программирование - это способ решения сложных задач путем сведения их к более простым задачам того же типа
·    с помощью динамического программирования решаются задачи, которые требуют полного перебор вариантов:
o    «подсчитайте количество вариантов…»
o    «как оптимально распределить…»
o    «найдите оптимальный маршрут…»
·    динамическое программирование позволяет ускорить выполнение программы за счет использования дополнительной памяти; полный перебор не требуется, поскольку запоминаются решения всех задач с меньшими значениями параметров
C4 (высокий уровень, время - 60 мин)
Тема: Обработка данных, вводимых в виде символьных строк (написать программу средней сложности из 30-50 строк).
Что нужно знать:
·    символьная строка - это цепочка символов, которая может обрабатываться как единое целое
·    для обращения к символу с номером i строки s используется запись s[i], это говорит о том, что строка - особый вариант массива, в котором хранятся символы
·    знак сложения при работе с символьными строками означает сцепку, объединение двух строк в одну (добавление второй строки в конец первой), например:
s := '123' + '456'; { получили '123456' }
·    с помощью функции Ord можно получить код символа; цифры имеют коды от 48 (цифра 0) до 57 (цифра 9), например
k := Ord('1');   { получили 49 }
то же самое можно сделать с помощью преобразования типа (привести char к integer)
k := integer('1'); { получили 49 }
·    с помощью функции Chr можно сделать обратный переход: получить символ по его коду, например
c := Chr(49);  { получили символ '1' }
то же самое можно сделать с помощью преобразования типа (привести integer к char)
c := char(49); { получили символ '1' }
·    для работы со строками в наиболее распространенных Паскаль-средах (Turbo Pascal, Borland Pascal, PascalABC, среда АЛГО) используют стандартные функции (здесь s - это переменная типа string, символьная строка; n и r - целые переменные)
·    структура (в Паскале она называется «запись», record) - это сложный тип данных, который может включать в себя несколько элементов - полей; поля могут иметь различный тип
·    записи в Паскале объявляются с помощью ключевого слова record; в простейшем случае можно выделить память под одну запись так:
 
var x: record
     name: string;
     code: integer;
    end;
эта запись состоит из двух полей: символьной строки name и целого числа code