- •Иркутский государственный университет путей сообщения кафедра “информатика” конспект лекций по дисциплине “программирование на алгоритмическом языке высокого уровня”
- •Иркутск
- •Программирование и алгоритмические языки в историческом аспекте
- •Введение в Паскаль
- •Алфавит Паскаля
- •Служебные (ключевые) слова
- •Константы
- •Запись чисел
- •Переменные
- •Типы данных
- •Стандартные функции
- •Выражения
- •Выражения целого типа
- •Выражения вещественного типа
- •3,61·109 X – 526,237 3.61e9 * X – 526.237 * Sqrt(0.2*y) Выражения логического типа
- •Операторы присваивания
- •Программа и этапы ее разработки. Структура программы
- •Var X, s : Word;
- •Комментарии
- •Ввод данных
- •Вывод данных
- •Бесформатный способ вывода
- •±D.DdddddddddE±dd
- •Форматный способ вывода
- •Структуры данных
- •Массивы
- •Var a : Array [1..2,1..3] Of Integer;
- •Error 201: Range check error
- •Var a : tMatrix;
- •Var Doska : Array [‘a’..’h’,1..8] Of Char;
- •Var Roma : Array [1..787] Of Word;
- •Var Roma : Array [-754..33] Of Word;
- •Var Ozenka : Array [1..2,1..3] Of Word;
- •Var Ozenka : Array [Fam, Predm] Of 2..5;
- •Var a: Array [1..3, 1..4, 1..5] Of Integer;
- •Var I, j: Byte;
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкция
- •Часто встречающиея ошибки программирования:
- •Var X, y, s_left, s_right, alfa, sin_alfa, segment : Real;
- •Переключатель
- •Var Month: 1..12;
- •Бесконечные циклы
- •Циклы с предусловием
- •Var I, s : Word;
- •Var I, s, n : Word;
- •Программа
- •Var n, min, max, s, count: Word;
- •Часто встречающиея ошибки программирования:
- •Циклы с постусловием
- •Var I, s : Word;
- •Var I, s, n : Word;
- •Программа
- •Var n,min,max,s,count: Word;
- •Var k : Word;
- •X, y, s : Real;
- •Var Month: 1..12;
- •Var n, s : Word;
- •Var I, s : Word;
- •Примеры:
- •Var I, j, k : Word;
- •Var I, i_max, vector_max : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, s : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, m : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, s, count : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, min, max, i_min, i_max : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, i_otr, i_pol : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, posl : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, j, t : Integer;
- •Vector : Array [1..K] Of Integer;
- •Var I, j, t : Integer;
- •Vector : Array [1..K] Of Integer;
- •Var I, j, k : Integer;
- •Var I, j, k, posl : Integer;
- •Var I, j, k, m : Integer;
- •Var I, j, k, i_max, j_min : Word;
- •Var I, j, t : Integer;
- •V : Array [1..K] Of Integer;
- •Var I, j, m, t : Integer;
- •V : Array [1..K] Of Integer;
- •Var I, j, b, c : Word;
- •Часто встречающиея ошибки программирования:
- •Множества
- •Var r : tSymb;
- •Основные операции со множествами
- •Типизированные файлы
- •Var f_int : tFile_Int;
- •Var n : Integer;
- •Функции для работы с типизированными файлами
- •И процедуры:
- •Var n : Integer;
- •Текстовые файлы
- •Var f_text : tFile_text;
- •Программа:
- •Var stud_1 : tStudent;
- •Var student : tKadr;
- •Var coord : tCoord;
- •Ключ : ();
- •Подпрограммы
- •Подпрограммы-функции
- •Var p : Real;
- •Var s : Real;
- •Var I: Word;
- •Var a, b, c : Integer;
- •Var a, b, c : Integer;
- •Var a, b : Integer;
- •Var a, b, c: Integer;
- •Рекурсия
- •5 * 4 * Factorial(3)
- •5 * 4 * 3 * Factorial(2)
- •5 * 4 * 3 * 2 * Factorial(1)
- •Var k: Integer; Func_2
- •Var temp : Integer;
- •Особенности рекурсии:
- •Процедуры
- •Var I: Word;
- •Var I, i_min, i_max: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j: Word;
- •Программные модули
- •Структура модуля
- •Interface
- •Implementation
- •Var f: Text;
- •Var p: Real;
- •Var temp: Real;
- •Компиляция модулей
- •Взаимное использование модулей
- •Ссылки и динамические переменные
- •Var a, b: tPntint;
- •X, y: tPntchar;
- •Динамические структуры данных
- •Связные списки
- •Inf: Integer;
- •Var head, q : tPoint;
- •Inf: Integer;
- •Var head, q : tPoint;
- •Добавление нового элемента в список
- •Var head, q, r: tPoint;
- •Inf: Integer;
- •Var head, q, r : tPoint;
- •Удаление элемента из списка
- •Inf: Integer;
- •Var head, q, r : tPoint;
- •Сортированные списки
- •Var head, q, r, V: tPoint;
- •Inf: Integer;
- •Var head, q, r, V : tPoint;
- •Бинарные деревья
- •Var root, q, V: tRebro;
- •Интерфейс:
- •Var root, q, V : tRebro;
- •Поиск заданного узла в дереве
- •Var root, q, V : tRebro;
- •Удаление узла из дерева
- •Var root, q, V, r : tRebro;
- •Объектно-ориентированное программирование
- •Var X, y, dx, dy: Word;
- •Var x0, y0, dx, dy: Word;
- •Var x0, y0, dx, dy, radius: Word;
- •Var x0, y0, dx, dy, radius: Word;
- •Основы алгебры логики
- •Логическая функция не (отрицание)
- •Логическая функция и (конъюнкция – логическое умножение)
- •Логическая функция или (дизъюнкция – логическое сложение)
- •Логическое следование (импликация)
- •Логическое совпадение(эквивалентность)
- •Закон исключенного третьего
- •Закон противоречия
- •Закон двойного отрицания
- •Закон контрапозиции
- •Закон расширенной контрапозиции
- •Закон перестановки посылок
- •Закон силлогизма
- •Закон де Моргана
- •Системы счисления
- •Двоичная система счисления
- •Восьмеричная система счисления
- •Шестнадцатиричная система счисления
- •Арифметические операции в двоичной системе счисления
- •1111 11 11 - Переносы
- •Арифметические операции в восьмеричной системе счисления
- •Арифметические операции в 16-ричной системе счисления
- •1. Ошибки при компиляции
- •2. Ошибки времени выполнения а) Ошибки системы ms-dos
- •Б)Ошибки ввода-вывода
- •В)Критические ошибки
- •Г)Фатальные ошибки
Переключатель
Часто приходится делать выбор не между двумя, а между несколькими путями решения задачи.
Такую ситуацию называют переключателем.
Структура переключателя предусматривает выполнение i-ойцепочкиоператоров, еслиселекторпринимаетзначение-i.
В Паскале переключатель реализуется оператором выбора:
Case (селектор) Of
значение-1: оператор-1;
значение-2: оператор-2;
значение-3: оператор-3;
…………………………
значение-n: оператор-n;
Else оператор-n+1;
End;
где Case- служебное слово “вариант”,
селектор- переменная или выражение любого порядкового или перечисляемого типа,
значение-1, значение-2,…-метки вариантов– конкретные значения или диапазоны значений селектора,
Else- служебное слово “иначе” (не обязательно).
Внимание! Перед словомElseможно ставить точку с запятой.
Действия оператора:
вычисляется значение селектора,
среди меток вариантовотыскивается это значение,
выполняется оператор, стоящий за найденной меткой,
осуществляется выход из переключателя,
если вычисленное значение селекторане найдено средиметок вариантов, то выполняется оператор, стоящий после словаElse, если оно есть.
Внимание! Переключатель всегда заканчивается служебным словомEnd, причем словаBeginдля него нет.
Пример: чему будут равны значения переменных kиd после выполнения следующих операторов:
d := 5;
k := 4;
Case (k Mod d ) Of
2,3,5..8: d := k; метки вариантов могут перечисляться через запятую
1: ; это пустой оператор – программа ничего не выполняет
4,9: Begin если в одной ветви переключателя несколько операторов,
k := 0; то они заключаются в операторные скобки
d := 2;
End; перед Else ставится точка с запятой
Else d := 1; если значение селектора не совпадает ни с одной из меток
End;
В этом случае значение селектора 4 Mod 5 = 4, поэтому переходим на ветвь с меткой варианта, равной4, отсюдаk = 0иd = 2.
Таким образом,
в каждой ветви могут стоять по нескольку меток вариантов, разделенных запятыми: 2,3,
можно использовать интервалы данных: 5..8
в качестве оператора можно использовать пустойоператор
если после метки вариантов следует несколько операторов, то необходимо заключать в операторные скобки Begin…End
метки вариантов не должны повторяться.
Пример: написать программу с использованием переключателя, которая по введенному номеру месяца определяет количество дней в нем.
В данном случае у переключателя будут три ветви:
для месяцев с 30 днями
для месяцев с 31 днем
для месяца с 28 днями (вариант високосного года рассматривать не будем).
Program Mesjac;
Uses Crt;
Var Month: 1..12;
Begin
ClrScr;
Write(‘Введите номер месяца:’);
ReadLn(Month);
Case (Month) Of
4,6,9,11: WriteLn(’30 дней’);
1,3,5,7,8,10,12: WriteLn(’31 день’);
2: WriteLn(’28 дней’);
Else WriteLn(‘Такого месяца нет’);
End;
ReadLn;
End.
Часто встречающиея ошибки программирования:
1.Использование в качествеселектора выражения логического типа:
Case (n > m) Of. . .
2.Использование в качествеселектора выражения вещественного типа:
Case (n + 2.5) Of. . .
3.Использование в качествеметок вещественных чисел:
Case (n + m) Of
0.5 : n:=1;
1.5 : n:=2;
Else n:=3;
End;
4.Использование двоеточия или точки с запятой после словаOf:
Case (n + m) Of:
. . . . . . . . .
5.Повторениеметок:
Case (n + m) Of
0..3 : n:=1;
3, 4 : n:=2;
Else n:=3;
End;
6.Отсутствие в конце оператора словаEnd:
Case (n + m) Of
0..2 : n:=1;
3, 4 : n:=2;
Else n:=3;
7.Отсутствие точки с запятой в конце каждой ветви переключателя:
Case (n + m) Of
0..3 : n:=1
3, 4 : n:=2;
Else n:=3;
End;
Внимание! Перед веткойElseточка с запятой может ставиться, а может и не ставиться.
8.При заданииметокинтервалом используются не две, а три точки:
Case (n + m) Of
0...3 : n:=1;
3, 4 : n:=2
Else n:=3;
End;
Внимание! Перед словомEndточка с запятой может ставиться, а может и не ставиться.
9.При перечисленииметокиспользуются не запятые, а точки с запятой:
Case (n + m) Of
0...3 : n:=1;
3; 4 : n:=2
Else n:=3;
End;
Циклы
Одним из самых ценных свойств компьютеров является их способность многократно повторять последовательность одинаковых или похожих действий - циклов. Являясь наиболее мощными структурами алгоритмических языков, циклы подразделяются на:
бесконечныециклы,
циклы с предусловием(циклы типаПОКА),
циклы с постусловием(циклы типаДО),
циклы с параметром(циклы типаДЛЯ).