- •Алфавит языка, имена, числа, строки
- •8. Оператор присваивания
- •19.Комбинированные типы данных (запись).
- •23. Операции над данными множественного типа.
- •1. Объявление указателя; 2. Формирование динамических данных, память которых отводится во время выполнения программы.
- •29. Функции.
- •30. Параметры процедур и функций. Формальные и фактические параметры
- •43. Сортировка Выбором min
8. Оператор присваивания
Присваивание — это занесение значения в память. В общем виде оператор присваивания записывается так: переменная := выражение Здесь символами := обозначена операция присваивания. Внутри знака операции пробелы не допускаются. Механизм выполнения оператора присваивания такой: вычисляется выражение и его результат заносится в память по адресу, который определяется именем переменной, находящейся слева от знака операции. Схематично это полезно представить себе так: переменная выражение Напомню, что константа и переменная являются частными случаями выражения. Примеры операторов присваивания: a := b + c / 2; b := a; a := b; x := 1; x := x + 0.5; (b := a и a := b разные действия)
Условный оператор.
Условный оператор if используется для разветвления процесса вычислений на два направления. Структурная схема оператора приведена на Формат оператора:
if выражение then оператор_1 [else оператор_2;]
Сначала вычисляется выражение, которое должно иметь логический тип. Если оно имеет значение true, выполняется первый оператор, иначе - второй. После этого управление передается на оператор, следующий за условным. Одна из ветвей может отсутствовать. Операторы, входящие в состав условного, могут быть простыми или составными. Составной оператор (блок) обрамляется ключевыми словами begin и end. Блок применяют в том случае, когда по какой-либо ветви требуется выполнить несколько операторов.
Если требуется проверить несколько условий, их объединяют знаками логических операций. Так, выражение в примере 2 будет истинно в том случае, если выполнится одновременно условие a < b и хотя бы одно из условий a > d и a = 0.
Частая ошибка при программировании условных операторов - неверная запись проверки на принадлежность диапазону. Например, условие 0 < x < 1 нельзя записать непосредственно. Правильный способ: if(0 < x) and (x < 1) then..., поскольку фактически требуется задать проверку выполнения одновременно двух условий: x > 0 и x <
10. Цикл с параметром for
Этот оператор применяется, если требуется выполнить тело цикла заранее заданное количество раз. Параметр порядкового типа на каждом проходе цикла автоматически либо увеличивается, либо уменьшается на единицу:
for параметр := выражение_1 to выражение_2 do оператор
for параметр := выражение_2 downto выражение_1 do оператор
Выражения должны быть того же типа, что и переменная цикла, оператор - простым или составным.
11. Оператор цикла с предусловием
While---выр-е---do---опер--
Условие выполняется цикла производится в самом начале опер. - если занч. условие используется, то цикл выполняется (begin и end) и снова вычисл. выр-е усл. этого продолжается до тех пор пока условие не станет ложным.
Структура записи.
Wihle выр. do
begun
on1;
on2
end;
Число повторений опер. определяется в ходе работы программы
После wihle записывается продолжение выполнения инструкции цикла.
Если условие ложно с самого начала; то тело цикла используется опер. break (прервать)
Пример.
K:=1
S:=0
Wihle true fo
beign
S:=S+K;
K:=K+1;
If K>10 then break
end;
{end while}
12. Оператор цикла с постусловием.
Сначала выполняется тело цикла, а потом проверяется условие, если оно равно false, то цикл выполняется ещё раз, если true, то выход из цикла. В любом случае тело цикла выполняется хотя бы один раз, т.к. условие стоит после цикла.
Repeat On On until. Число повторов определяется в ходе работы программы. После слова until записывается условие завершения цикла. Условие – выражение логического типа. Переменная, которая участвует в условии выхода, долдна изменяться в ходе цикла.
Оператор варианта.
Оператор варианта используется для организации выбора одного из возможных вариантов программы. После of перечисляются операторы, из которых должен выбраться один. Выражение селектор должено быть одного типа с константами. В список констант может входить диапазон, отделенные друг от друга запятыми, границы диапазона через разделитель “..”.
14. Классификация типов данных.
Типы данных:
Скалярные (простые):
1.12 Стандартные (целый, расширения целого типа, вещественный, расширенный вещественный, символьный, логический).
1.13 Определяемые пользователем (перечислимый, ограниченный)
1.2 Ссылочный
1.3 Структурированные (составные, сложные)
1.21 Регулярный (массив), комбинированный (записи), множественный, файловый, строковый, объектовый.
Перечислимые типы данных.
Перечислимый тип представляет собой ограниченную, упорядоченную последовательность констант, представляющих данный тип.
Type имя типа = (занч1, знач2…и т.д.)
Var имя типа : имя переменной.
К скалярным переменным и константам могут применяться операции отношения, логические операции, стандартные ф-ции.
Ограниченные типы данных.
Отрезок любого скалярного типа, кроме real, может быть определен как ограниченный тип. Скалярный тип на котором строится отрезок называется базовым. Обе константы долджны быть одного типа, кроме real.
Для ограниченного типа могут применятся тоже операции и функции, как и к базовому.
16. Ограниченный тип данных (интервальный)
С помощью интервального типа задается диапазон значений какого-либо типа:
type имя_типа = константа_1 .. константа_2
Константы должны быть одного и того же порядкового типа. Тип, на котором строится интервал, называется базовым. Константа_1 должна быть меньше или равна константе_2. Примеры описания интервальных типов:
type Hour = 0 .. 23;
Range = -100 .. 100;
Letters = 'a' .. 'z';
Actions = READ .. EDIT;
Как и для других типов, определяемых программистом, интервальный тип можно задать прямо при описании переменной, например:
var r : -100 .. 100;
С переменной интервального типа можно делать все, что допустимо для ее базового типа. Интервальный тип используется в программах как самостоятельно, так и в составе определения составного типа - массива.
17.Регулярный тип данных (массив)
При использовании простых переменных каждой области памяти, предназначенной для хранения какого-либо значения, соответствует свое имя. Если с группой величин одинакового типа требуется выполнять однообразные действия, им дают одно имя, а различают по порядковому номеру (индексу). Это позволяет компактно записывать множество операций с помощью циклов.
Конечная именованная последовательность однотипных величин называется массивом. Чтобы описать массив, надо задать, какого типа его элементы и каким образом они пронумерованы:
type имя_типа = array [тип_индекса] of тип_элемента
Здесь array и of - ключевые слова, тип индекса задается в квадратных скобках. Примеры:
type mas = array [1 .. 10] of real; {1}
Color = array [byte] of mas; {2}
В первом операторе описан тип массива из вещественных элементов, которые нумеруются от 1 до 10. Во втором операторе элементами массива являются массивы типа mas, а нумеруются они в пределах, допустимых для типа byte, то есть от 0 до 255.
Тип элементов массива может быть любым, кроме файлового, тип индексов - интервальным, перечисляемым или byte.
Обычно при описании массива верхняя граница его индекса задается в виде именованной константы, например:
const n = 6;
type intmas = array [1 .. n] of integer;
После задания типа массива переменные этого типа описываются обычным образом, например:
var a, b : intmas;
Можно описать тип прямо при определении переменных:
var a, b : array [1 .. n] of integer;
С массивами в целом можно выполнять только присваивание. При этом массивы должны быть одного типа, например:
b := a;
Все остальные действия выполняются с отдельными элементами массива. Для обращения к элементу массива после имени массива указывается номер элемента в квадратных скобках:
a[4] b[i]
С элементом массива можно делать все, что допустимо для переменных того же типа.
Инициализация массивов. Можно присвоить значения элементам массива до начала выполнения программы. Это делается в разделе описания констант:
const a : intmas = (0, 5, -7, 100, 15, 1);
18. Двумерные массивы
Элемент массива может быть любого типа, кроме файлового, следовательно, он может быть и массивом:
const n = 4; m = 3;
type mas = array [1 .. n] of integer;
mas2 = array [1 .. m] of mas;
Более компактно это можно записать так:
type mas2 = array [1 .. m, 1 .. n] of integer;
Здесь описана матрица. Обе размерности массива должны быть константами или константными выражениями. Имя типа указывается при описании переменных:
var a, b : mas2;
В памяти двумерный массив располагается по строкам:
a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34
| 1-я строка | 2-я строка | 3-я строка |
При просмотре массива от начала в первую очередь изменяется правый индекс (номер столбца).
К элементу двумерного массива обращаются, указывая номер строки и номер столбца, на пересечении которых он расположен, например:
a[1, 4] b[i, j] b[j, i]
Для того чтобы ввести с клавиатуры двумерный массив, необходимо организовать вложенные циклы:
for i := 1 to m do
for j := 1 to n do read(a[i, j]);
Для приведенного здесь порядка следования циклов элементы массива должны вводиться по строкам.
