- •Структура программы на Паскале.
- •Стандартные типы Паскаля.
- •Операторы в Паскале.
- •Цикл с параметром.
- •Типовые задачи на операторов цикла.
- •Операторы целочисленного деления.
- •Вложенные циклы.
- •Структурированные типы данных.
- •Массивы.
- •Многомерные массивы.
- •Строки.
- •Множества.
- •Записи.
- •Работа с текстовыми файлами.
- •Особенности работы с текстовым файлом:
- •Типизированные файлы.
- •Особенности работа с типизированными файлами.
- •Подпрограммы.
- •Структура подпрограмм.
- •1. Заголовок
- •2. Описательная часть
- •3. Тело подпрограммы
- •Оформление формальных параметров, которые определяет режим взаимодействия с основной программой.
- •Особенности передачи структурированных данных подпрограммы.
- •Опережающие описания.
- •Функциональный тип. Процедурный тип.
- •Сортировки.
- •Сортировка бинарными включениями.
- •Сортировка простых выборов.
- •Сортировки простым обменом.
- •Шейкер-сортировка.
- •Сортировка Шелла.
- •Модули.
- •Структура модуля.
- •Особенности компиляции программ с подключаемыми модулями.
- •Циклические ссылки модулей друг на друга.
- •Стандартные модули в Паскале.
- •Динамические переменные.
- •Динамические структуры.
- •Однонаправленные списки.
- •Формирование списков. Формирование очереди.
- •Формирование стека.
- •Классическое формирование очереди (по Вирту).
- •Работа со списками.
- •1) Проход по списку;
- •2) Добавление элемента в список;
- •Удаление элемента из списка.
- •«Древовидные структуры»
- •Удаление элемента из дерева
- •Самоупорядочивающийся список
- •Частотный словарь
- •Нерекурсивное формирование дерева
Строки.
В Паскале для одномерных массивов-символов предусмотрен стандартный тип
VAR<имя строки>:STRING;
если строка неограниченна, то содержит 255 символов;
если строка ограничена, то после string указывается количество символов в строке.
st:string[8];
Особенности работы: ввод строки осуществляется целиком. Возможно сравнение строки со строкой. Строки позволяю вести обработку поэлементно. Записывается имя строки и указывается номер символа(st[1]).
Существует множество процедур и функций, работающих со строками, например LENGTH(st).
Пример. Задана строка. Вывести элементы этой строки в обратном порядке.
var st:string;
p:integer;
begin writeln(‘Введите строку’);
readln(st);
for p:=length(st) downto 1 do
write(st[p]);
end.
Пример Задана строка из строчных латинских букв и знаков препинания. Определить, является ли эта строка палиндромом.
var st:string;
k,p:integer;
begin writeln(‘Введите строку’).
readln(st);
s1:=’’;s2:=’’;
for p:=1 to length(st) do
if (st[p]>=’a’) and (st[p]<=’z’) then begin
s1:=s1+st[p]; v:=st[p];
s2:=v+s2;end;
if s1=s2 then writeln(‘палиндром’);
else writeln(‘нет’);
end.
Множества.
Множества – неупорядоченное условно-ограниченное количество элементов одинакового типа. На Паскале множества описываются:
VAR<имя множества>:SET OF тип элемента множества;
Множества в памяти – комплексно-логическая функция. Т.е. каждому элементу множества в памяти отводится один бит, который указывает: если «=0», то элементов нет; если «=1», то элементы в множестве есть. Поэтому самих значений элементов в памяти нет. Это не позволяет обратиться напрямую к элементу множества.
Данный тип – порядковый, не превышает размер 256 бит. Ввод и вывод невозможен. В программе множества представляются:
VAR <имя множества>:SET OF тип элемента множества;
BEGIN <имя множества>:=[Э1, Э2, Э3, ЭN].
Стандартные операции с множествами.
Var m1,m2,m3:set of char; b: boolean; c: char;
m1:=m2*m3-пересечение множеств m2 и m3.
m1:=m2+m3-объединение множеств m2 и m3.
b:=c_IN_m1-истина: с входит; лож: не входит.
Пример Задан массив из 100 целых чисел. Вывести значения, расположенные между минимальным и максимальным элементами включительно.
Max=m[1] x=1
Min=m[1] n=1
Min=m[p]
n=p
Max=m[p]
x=p
Var min,max,n,x:integer;
m: array [1..100] of integer;
begin
writeln(‘Введите массив’);
for p:=1 to 100 do
read(m[p]);
min:=m[1]; x:=1; max:=m[1]; x:=1;
for p:=2 to 100 do begin
if min>m[p] then begin
min:=m[p]; n:=p;
if max<m[p] then begin
max:=m[p]; x:=p; end; end;
if x<n then
for p:=x to n do write(m[p],’ ‘)
else for p:=n to x do write(m[p],’ ‘);
end.
Пример. Задана строка из строчных латинских букв. Получить новую строку из исходной, в которую включить первое вхождение символов из исходной строки. Вывести на экран буквы в алфавитном порядке.
Var s,st:string; mn:set of char;
p:integer; c :char;
begin write(‘Введите строку’);
readln(st);
s:=’’; min:=[ ];
for p:=1 to length(st) do
if not (st[p] in min) then min:=min+[st[p]];
s:=s+st[p]; end;
writeln(s);
for c:=’a’ to ‘z’ do
if c in min then write(c); end.