- •Лекция №1. Структура программы на Паскале.
- •Раздел описаний
- •Основные стандартные функции, определенные в Паскале.
- •Стандартные типы переменных и
- •3.Символьный тип.
- •Лекция №2. Разветвляющиеся вычислительные процессы.
- •1. Условного if
- •2.Оператор выбора case
- •Блок – схемы операторов if и case.
- •Лекция №3. Циклические вычислительные процессы (иттерационные).
- •1.Общая форма записи оператора цикла while:
- •2. Общая форма записи repeat.
- •Операторы цикла могут быть вложены один в другой:
- •3. Общая форма записи оператора цикла for.
- •Отличие цикла for от while и repeat.
- •Лекция №4. Массивы.
- •Двумерные массивы.
- •Ввод и вывод двумерного массива.
- •Определение одно- и двумерного массива, как типизированной константы.
- •Типовые алгоритмы обработки массивов.
- •Лекция №5. Процедуры и функции.
- •Функции.
- •Лекция №6. Строковые переменные.
- •Стандартные процедуры и функции для работы со строковыми переменными.
- •Лекция №7. Множества.
- •Формирование множеств.
- •Отношения и операции над множествами.
- •Лекция №8. Записи.
Функции.
Функции предназначены для того, что бы вычислить одно значение, поэтому ее первое отличие от процедуры состоит в том, что процедура может иметь новое значение у нескольких параметров, а функция только одно (оно будет записано в имени функции), второе отличие заключается в заголовке, третье отличие: в теле функции обязательно должен использоваться оператор присваивания, в левой части которого стоит имя функции, а в правой - ее значение.
Общая форма описания функции:
FUNCTION имя (формальные параметры {только входные}) : тип;
раздел описаний;
BEGIN
операторы функции;
END;
Входных параметров может быть несколько. Вызов функции в основной программе осуществляется по ее имени с указанием фактических параметров, т.к. результат заносится в имя функции: ее можно использовать в выражениях на ряду со стандартными функциями. Фактическими параметрами могут быть выражения. Порядок следования, тип и количество формальных и фактических параметров должны совпадать.
Вычисление выражений содержащих обращение функции происходит по следующему алгоритму:
Вычисляются выражения для аргументов функции.
Значения аргументов присваиваются параметру из заголовка описания.
Выполняется тело функции, и вычисляются ее значения.
Значение функции ставится в исходное выражение на место обращения функции.
Пример:Описать функцию, вычисляющую факториал.
N! =? (0! = 1).
FUNCTION FACT (N: INTEGER) : INTEGER;
VAR I, P: INTEGER;
BEGIN
IF (N=0) {OR (N=1)} THEN FACT:=1
ELSE BEGIN
P:=1;
FOR I:=2 TO N DO
P:=P*I; FACT:= P; END; END;
D:=FACT(5);
либо
WRITELN ('Факториал 5 =', FACT(5));
Лекция №6. Строковые переменные.
1. CONSTS='Информатика'
Определение: строковые константы – это последовательность символов заключенных в апострофы.
2. TYPE STROKA:= STRING; (256 символов) или STRING [ n ], где n – число символов.
VAR A, B: STROKA;
3. VAR A, B: STRING [ n ];
К любому элементу строки можно обратиться по имени строки с указанием соответствующего индекса.
Стандартные процедуры и функции для работы со строковыми переменными.
STR1,STR2,STR3 – строковые переменные.
1. Удаление и вставка
DELETE(STR1,n,m);
Процедура, которая удаляет из строки STR1, подстроку длиннойm, начиная с позицииn.
STR1:='Кошечка';
DELETE(STR1, 4, 2);
!!!- Нулевой индекс при обращении с элементом строки хранит информацию о длине строки.
2. INSERT(STR1,STR2,n);
Эта процедура вставляет в строку STR1, подстрокуSTR2, начиная с позицииn.
STR1:='Кошка'; STR2:='еч';
INSERT (STR1, STR2, 4);
или INSERT (STR1, 'еч', 4);
Функции:
LENGTH (STR1): INTEGER;
Копирование: COPY(STR1,n,m);
Функция, которая выделяет из строки STR1, подстроку длинойm, начиная с позицииn.
CONCAT (STR1, STR2);
Конкатация– сцепление (сложение, объединение).
=STR1 +STR2
К переменным строкового типа применимы операции сравнения (=, , >, <, ...)
Сравнение строк идет по кодам их символов. Строки называются равными, если они совпадают по фактической, а не по объявленной длине и состоят из одинаковых символов.
' abc' < 'cba'
Пример:Дано описание:
TYPE SLOVO = ARRAY [ 1..5] OF CHAR;
SPISOK = ARRAY [ 1..60 ] OF SLOVO;
VAR C: SPISOK;
Напечатать все слова из списка отличные от слова 'yes'.
FOR I:=1 TO 60 DO
IF C[ I ] <> 'YES' THEN WRITELN (C[ I ]);
STR (<число>, <размер>:<количество>, <строка>); - процедура, которая для заданного числа формирует представляющую его строку, указанного размера с заданным количеством знаков в дробной части, строка должна быть задана, как имя переменой, параметры, размер и количество могут отсутствовать.
Пример:
STR(19, 48: 5: 2,STR1);
Обратное преобразование осуществляется процедурой:
VAR (<строка>, <число>, <номер>);
Используя строку из цифр без пробелов, формируют число (машинное представление)или выдает номер ошибочного знака в строке. Число и номер должны быть именами переменных.
Пример:
STR1:='1011.01';
VAL (STR1, X, N);
Множеством значений CHARявляются символы, упорядоченные согласно таблице расширенного кода. Коды с 0 по 31 – служебные. Если нужно по коду получить символ используют функциюCHR:
CHR(<код>), или # код.
Пример:
а) CHR (98) = #98 = 'b'
б) Служебные операторы вывода:
WRITELN ('MOSCOW');
WRITELN ('MO', #115#99,'OW');
WRITELN (CHR(77), CHR(111), CHR(115), CHR(99), CHR(111), CHR(119));
WRITELN (#77#111#115#99#111#119);
Выдача звукового сигнала: WRITE(#7);
Обратное преобразование осуществляется с помощью функции ORD.
ORD(символ) =код;
Для целых чисел
ORD(5) = 5;
Функция UPCASE(<символ>); возвращает символ – латинскую букву в верхнем регистре или символ, если у него нет представления в верхнем регистре или букву кириллица.
Пример:a)Дана строка символов. Необходимо подсчитать общее количество символов + - *
PROGRAM PRIMER;
CONST N=10;
VAR S: STRING [ N ];
I, M: INTEGER;
BEGIN
READLN (S); M:=0; {Строковые константы вводятся и выводятся без апострофов}
FOR I:=1 TO LENGTH (S) DO
BEGIN
IF (S [ I ]='+') OR (S [ I ]='-') OR (S [ I ]='*') THEN M:=M+1 END;
WRITELN (M);
END.
б) Дано: строка символов, группы символов в данной строке разделены пробелами (одним или несколькими) – эти группы будем называть словами. Необходимо подсчитать количество слов.
PROGRAM PR1;
TYPE STROKA:= STRING;
VAR C: STROKA;
I, K: INTEGER;
BEGIN
READLN (C); K:=0;
FOR I:=1 TO LENGTH (C) DO
BEGIN
IF C [ I ] = ' ' THEN
IF C [ I-1 ] <> ' ' THEN K:=K+1;
END;
в) Определить значение символьной переменной dпосле выполнения следующих операторов:
1) c:= '+'; d:=c;
2) c:= '+'; d:='c';
Ответ: 1) d= +; 2)d=c.
г) Вычислить S-сумму порядковых номеров всех букв входящих в словоSUM.
S:=ORD (S) + ORD (U) + ORD (M)
д) Напечатать заданный непустой текст удалив из него все цифры и удвоив знаки плюс и минус.
FOR I:=1 TO STR [ C ] DO
IF (STR[ I ]>0) AND (STR[ I ]<9) THEN
DELETE (STR, I, 1);
FOR I:=1 TO STR[C] DO
IF STR [ I ]= ' + ' THEN INSERT (STR, '+', I);
FOR I:=1 TO STR [ C ] DO
IF STR [ I ]=' – ' THEN INSERT(STR, ' – ', I);
WRITELN (STR);