- •2Федеральное агентство по образованию
- •Алгоритмизация и программирование
- •Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Программирование разветвленных алгоритмов. Операторы передачи управления
- •Программирование циклических алгоритмов с заданным числом повторений
- •Программирование циклических алгоритмов с предусловием
- •Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результа-ты с полученными ранее.
- •Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Программирование с использованием функций
- •Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Множества
- •Первая и вторая цифры размерность исходных множеств.
- •Модульное программирование
- •Динамические структуры данных. Списки
- •Задание 1 (программа 15_1)
- •Графика
- •Задания к расчетно-графической работе
- •Порядок выполнения лабораторных работ
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Сообщение об ошибках Сообщения об ошибках периода компиляции
- •Сообщения об ошибках периода исполнения Ошибки операционной системы dos
- •Ошибки вода - вывода
- •Критические ошибки
Модульное программирование
Структура модуля:
UNIT <ИмяМодуля>;
INTERFACE
<интерфейсная часть> {раздел описаний}
IMPLEMENTATION
<исполняемая часть> {описания подпрограмм}
BEGIN
<инициирующая часть> {фрагмент программы}
END. признак конца модуля
Пример. Найти соотношение между максимальными элементами для массивов А и В.
Выделим вычисление наибольшего элемента в подпрограмму, которую вынесем в отдельный модуль.
Program s_mod; {Главная программа}
uses crt,r_pos; {подключается модуль R_pos }
var
a, b: mass;
i, s: integer;
begin
clrscr;
writeln('Введи массив А из 8 чисел типа integer');
for i:=1 to 8 do
read(a[i]);
writeln('Введи массив В из 8 чисел типа integer');
for i:=1 to 8 do
read(b[i]);
write('Соотношение =');
writeln('maxA/maxB'=MAX(a)/ MAX(b):6:3);
readln;
end.
UNIT r_pos; {Подключаемый модуль с именем R_pos.pas}
INTERFACE
type
mass=array[1..8] of integer;
function max(d:mass):integer;
IMPLEMENTATION
function min(d:mass):integer;
var mx,i:integer;
begin
mx:=d[1];
for i:=2 to 8 do
if mx<d[i] then mx:= d[i];
max:=mx;
write(mx,':');
end;
END.
Задание (программы 14_1 и 14_2)
Для задач 8_3 и 9_2 разработать программы, скрыв подпрограммы в отдельном файле (модуле).
Лабораторная работа 15
Динамические структуры данных. Списки
Список - это набор связанных между собой динамических элементов.
Элемент односвязной динамической структуры данных состоит из двух полей: информационного и указательного и описывается через тип «запись»:
Type Tptr =^Telem;
TElem= Record
info: integer;
next: Tptr {указатель}
end;
Очередь - это частный случай линейного односвязного списка, для которого разрешены только два действия: добавление элемента строго в конец списка, а извлечение (удаление) - строго из начала (головы) очереди.
Стек - это частный случай линейного односвязного списка, для которого разрешено добавлять или удалять элемент только с одного конца списка, который называется вершиной стека.
Пример. Задать списком строку, заканчивающуюся точкой. Подсчитать число цифр в ней.
Program pos04din;
Type
sv{связь}=^zv; {звено строки}
Zv = record
info: char; {Информационное поле}
next: sv {Указатель на следующий элемент}
end;
Var
P {Указатель на начало}, t {Указатель на текущее звено}: sv;
sym: char;
k: integer; {Количество цифр}
BEGIN
{Ввод строки и представление ее в виде цепочки}
Writeln('Введи первый символ ');
read(sym); {Формирование первого звена}
new(p);
p^.info:=sym;
p^.next:=nil;
t:=p; {Подготовка к циклу формирования остальных звеньев}
Write('Введи остальные символы и точку ');
while sym<>'.' do {Цикл обработки последовательных литер строки}
begin
read(sym);
new(t^.next);
t:=t^.next; {адрес следующего элемента}
t^.info:=sym;
t^.next:=nil;
end; {Исходное слово представлено в виде цепочки}
k:=0; t:=p;
while t<>nil do
begin
if (t^.info>='0')AND(t^.info<='9') then k:=K+1;
t:=t^.next
end;
Writeln;
Writeln('Цифр в строке - ',k);
END.