- •Структура программы на Паскале.
- •Стандартные типы Паскаля.
- •Операторы в Паскале.
- •Цикл с параметром.
- •Типовые задачи на операторов цикла.
- •Операторы целочисленного деления.
- •Вложенные циклы.
- •Структурированные типы данных.
- •Массивы.
- •Многомерные массивы.
- •Строки.
- •Множества.
- •Записи.
- •Работа с текстовыми файлами.
- •Особенности работы с текстовым файлом:
- •Типизированные файлы.
- •Особенности работа с типизированными файлами.
- •Подпрограммы.
- •Структура подпрограмм.
- •1. Заголовок
- •2. Описательная часть
- •3. Тело подпрограммы
- •Оформление формальных параметров, которые определяет режим взаимодействия с основной программой.
- •Особенности передачи структурированных данных подпрограммы.
- •Опережающие описания.
- •Функциональный тип. Процедурный тип.
- •Сортировки.
- •Сортировка бинарными включениями.
- •Сортировка простых выборов.
- •Сортировки простым обменом.
- •Шейкер-сортировка.
- •Сортировка Шелла.
- •Модули.
- •Структура модуля.
- •Особенности компиляции программ с подключаемыми модулями.
- •Циклические ссылки модулей друг на друга.
- •Стандартные модули в Паскале.
- •Динамические переменные.
- •Динамические структуры.
- •Однонаправленные списки.
- •Формирование списков. Формирование очереди.
- •Формирование стека.
- •Классическое формирование очереди (по Вирту).
- •Работа со списками.
- •1) Проход по списку;
- •2) Добавление элемента в список;
- •Удаление элемента из списка.
- •«Древовидные структуры»
- •Удаление элемента из дерева
- •Самоупорядочивающийся список
- •Частотный словарь
- •Нерекурсивное формирование дерева
Структура программы на Паскале.
Структура программы состоит из трех частей:
1 |
Заголовок (в интегрированной среде необязательно); |
состоит из PROGRAM__<имя программы>; <слово> - идентификатор; это слово, состоящее из 8 символов, первый – латинская буква, в середине слова нет знаков препинание кроме «__». |
2 |
Описательная часть – определяет выделяемый в памяти блок данных |
Части: ~Раздел типов: TYPE_<имя типа> = <описательный тип>; <имя 2> = <опис.2>; ~Раздел переменных: VAR_<имя П1>,<имя П2>,<имя типа>; ~Раздел констант: CONST_<имя К> = значение;
|
3 |
Раздел операторов |
Begin операторы; End.
|
Стандартные типы Паскаля.
диапазон
перечисл. тип
простые структурированные
порядковые непорядковые массивы
множества
целые числа вещественные записи
INTEGER числа (дробные) файлы
Символьные REAL динамические
CHAR переменные
Логические объектные
BOOLEAN переменные
Операторы в Паскале.
Оператор присвоения |
Чтобы в переменную разместить, присвоить ей какое-либо значение, используется оператор присвоения «:=» Прим: одиночный знак «=» воспринимается как сравнение. При использовании оператора присвоения:
с правой стороны – выражение (арифметическое или вырожденное); 2) тип переменной и выражения должны строго совпадать. Искл.: присвоение реальному числу целого числа. |
Оператор ввода информации |
Операторы ввода информации с клавиатуры и вывода на экране. 1)READ (список ввода) 2)READLN (список ввода)
Операторы ввода информации позволяют вводить информацию с клавиатуры, причем присвоение происходит при нажатии ENTER. Список ввода – перечисленные через запятую только переменные; список ввода носит позиционный характер. |
Операторы вывода информации |
Значения списка вывода – переменные, строковые константы(один или более одного символы, заключенные в апострофы). Данный оператор выводит информацию на экран.
Пример. Вычислить с=sin(x), х вводится с клавиатуры.
var x:integer; c:real; begin writeln; write(‘Введите х ’); readln(x); c:=sin(x); writeln(‘c=sin(x)= ‘,c:7:2); readln; end.
Комментарий: два первых оператора WRITE не несут нагрузки. Они необходимы для создания польз. интерфейса, участвуют в этом и последние WRITELN. Первая const из списка его вывода комментирует, что выводится на экран. Само же значение «с», т.к. оно является реальным (в машинном представлении – нормализованным), выводится в формате. Формат определяется двумя числами, выделяемыми двоеточиями. Первое число определяет количество позиций на экране под все число, второе – количество дробных позиций. |
Операторы разветвляющихся процессов |
Разветвляющиеся процессы – процессы при реализации которых по некоторому условию осуществляется выбор действия. В Паскале используется два оператора: *Оператор условного перехода *Оператор выхода |
Оператор условного перехода
|
IF <условие> THEN оператор 1 ELSE оператор 2; Примечание: 1. Сушествует правило оформления условия. Данное правило относиться только к неоднозначным условиям(несколько логических знаков). Однозначные x>0 условия a<=1 Двухзначное условие 0< x <100 (0<x) and (x<100). Вместо условия можно использовать логическую переменную. В этом случае её не нужно приравнивать к значению TRY или FALSE. 2. В качестве вложенных операторов могут использоваться любые операторы Паскаля. 3. Если ветвь содержит более одного оператора, то в этом случае необходимо заключить их в операторные скобки begin… end. В этом случае внутри операторных скобок друг от друга они отделяются ; . Оператор условного перехода может быть не полным. В этом случае отсутствует отрицательная ветвь. На схеме нет оператора отрицательной ветви. IF <условие> THEN оператор 1;
Пример Даны два целых числа. Вывести на экран большее из них. Если значения равны, то вывести их.
Program Var a,b : integer; Begin Write(‘BBedite a,b’); Readln(a,b); If a>b then writeln(a) Else writeln(b); Readln; End.
B A
Пример дана точка заданная своими координатами x,y. Определить положение относительно окружности с центром b и радиусом R.
Var x,y : integer; Begin Write(‘BBedite x,y.R’); Readln(x,y,R); If R*R=x*x+y*y then writeln(‘на’) Else if SQR(R)<SQR(x)+SQR(y) then writeln(‘вне’) else witeln('в'); readln; end.
Примечание: Если в качестве вложенных операторов используются операторы разветвляющих процессов, то в этом случае необходимо помнить, что отрицательная ветвь будет относиться к ближайшей выше его ветви «да». Если в качестве вложенного оператора используются циклический оператор, то цикл в самой ветви вложения должен завершиться. |
Оператор выбора |
Оператор выбора, несмотря на то, что позволяет сделать более двух разветвлений, но является с точки зрения алгоритмизации более ограниченным.
Алгоритм работы оператора выбора: берется значение некоторой переменной (селектор) и затем по списку выбора осуществляется выбор возможного действия. Список выбора состоит из предложений, каждое предложение соответствует возможной ветви. Само предложение состоит из констант, которые называются меткой, и оператора, который выполнятся, если в результате сравнения значения селектора и метки совпали. Последним предложением списка выбора является предложение, начинающиеся со слова ELSE. Если ни одно значение метки не совпало со значением селектора, то выполняется оператор из этого предложения. Если предложения ELSE нет, и значение селектора не совпало с меткой, то управление передается следующему оператору после оператора выбора.
CASE <имя селектора> OF M1: оператор 1; M2: оператор 2; ............. Mn: оператор n; ELSE оператор; end;
Примечание: 1. Оператор выбора завершает END, т.е. к CASE должен быть в программе END. 2. Т.к. в данном операторе осуществляется операция строгого сравнения, то тип селектора и меток – одинаковый и порядковый. 3. Если ветвь содержит несколько операторов, то их перечисляют через « ; » и заключают в операторные скобки. Пример По введенному номеру дня недели вывести его название.
var n:integer; begin writeln(‘Введите номер дня недели’); readln(n); case n of; 1: writeln(‘понедельник’); 2: writeln(‘вторник’); 3: writeln(‘среда'); 4: writeln(‘четверг'); 5: writeln(‘пятница’); 6: writeln(‘суббота’); 7: writeln(‘воскресенье’); else write(‘неверный ввод’); end; readln;readln;end.
|
Операторы циклических процессов |
Циклический процесс – выполнение конечного числа раз группы операторов. Он содержит следующие части:
Параметр цикла – переменная, значение которой определяет вход или выход из цикла. Буферной переменной является переменная, в которой осуществляется циклическое накопление.
Оператор цикла содержит вторую и третью часть. |
Оператор цикла с предусловием |
WHILE <условие> DO оператор;
Пример y=N! var n,p,y:integer; begin writeln(‘Введите N’); readln(n); p:=1;y:=1; while p<=n do begin y:=y*p; p:=p+1; end; writeln(‘n!= ‘,y); end.
|
Оператор цикла с постусловием |
REPEAT Операторы…. …… UNTIL < Условие выхода>
Примечание 1. Ограничение по типу параметра цикла отсутствуют; 2. Операторные скобки не требуются, вместо них REPEAT-UNTIL; 3. Особенность данного оператора: в любом случае тело цикла хотя бы один раз выполняется.
Var N,p,y: integer; Begin writeln(‘Введите N’); Readln(N); P:=1; y:=1; repeat y:=y*p; p:=p+1; until p>n; writeln(‘N:=’ ,y); readln; end.
|