- •Тема I Основные понятия языка pascal 7.0
- •1.1. Алфавит и структура программы
- •Алфавит
- •Структура программы
- •I, j : integer;
- •1.2. Структура данных
- •Простые типы данных
- •Структурированные типы данных
- •Указатели
- •Процедурные типы
- •Объекты
- •Преобразование типов данных
- •1.3. Операторы языка
- •Простые операторы
- •Структурированные операторы
- •1.4. Процедуры ввода-вывода
- •Var I, j : integer;
- •Практические задания
- •Тема 2 Производящие функции и ряды
- •Var n, I: integer;
- •Var I, n, f : integer;
- •Var I, n, f, j, r, m : integer;
- •Var I, n, f, j, r, m : integer;
- •Var I, n, f, j : integer;
- •Var I, n, sum : integer;
- •Var I, n, m, к : integer;
- •If flag then
- •Var I, n, m, k, nod : integer;
- •Var I, n, m, k, nod, nok : integer;
- •Var n, r, m : integer;
- •Var n, r, м, к, I : integer;
- •If f then writeln('число', n, ' he палиндром')
- •Var X, y, z:real; I, n : integer;
- •Var X, y, z : real;
- •Var X,y. Z, е : real;
- •I: integer;
- •Var X, y, z, e : real;
- •I: integer;
- •Var X, y, z : real;
- •Практические задания
- •Тема 3 Обработка числовых последовательностей
- •Var n, X, sum, I: integer;
- •Var n, X, к, I: integer;
- •Var n, X, max, I: integer;
- •Var n, X, max, I: integer;
- •Var X, min1, min2 : integer;
- •Var old, new : real;
- •If f then
- •Var old, new : real; к : integer;
- •Var old, new, f : real;
- •Var old, new : real;
- •If f then
- •Var old, new : real;
- •If f then
- •Var poroda : string;
- •I, к, n : integer;
- •Var pol : string;
- •I, к, n : integer;
- •Практические задания
- •Тема 4 Символьные переменные и строки
- •Var I: char;
- •Var I: char;
- •Var I, l : char;
- •Var str: string;
- •If not(str[I] in m) then write(str[I])
- •Var str : string;
- •If not(str[I] in m) then write(str[I]);
- •Var str : string;
- •If (str[I] - '!') then write(V)
- •Var str : string;
- •Var str : string;
- •Тема 5 Обработка строк
- •Var str, wrd : string;
- •I, l : integer;
- •Var s1, str : string;
- •I: integer;
- •Var s1, str: string;
- •Var s1: string;
- •Var s1 : string;
- •Var s1 : string;
- •X : char;
- •Var s1 : string;
- •Var м, к, I, j : integer;
- •Var I, к : integer;
- •Var I, к : integer;
- •Var I, к : integer;
- •Var I, l : integer;
- •1234567890 Ааааааа .
- •Var I, l : integer;
- •If f then writeln('палиндром')
- •1234567890 Ааааааа .
- •Практические задания
- •Тема 6 Одномерные массивы
- •Var mas : array[1..M] of integer;
- •I, max, k, n : integer;
- •Var mas : array[1..M] of integer;
- •I, k, n : integer;
- •Var mas : array[1..M] of integer;
- •I, k, new, n : integer;
- •Var mas : array[1..M] of integer;
- •I, j, k, new, n : integer;
- •Var mas : array[1..M] of real;
- •I, n : integer;
- •Var mas : array[1..M) of real;
- •I: integer;
- •Var mas, num2, num5 : array[1..M] of integer;
- •Практические задания
- •Тема 2 Двумерные массивы
- •Var a : array[1..T, 1..S] of integer;
- •Var а : array[1..T, 1..S] of integer;
- •Var a : array[1..T, 1..S] of integer;
- •Var a : array[1..T, 1..S] of integer;
- •Var a : array[1..T, 1..S] of char;
- •Var a : array[1..T, 1..T] of integer;
- •Var а, в : array[1..N, 1..N] of integer;
- •Var а, в : array[1..N, 1..N] of integer;
- •Var а, в : array[1..N, 1..N] of integer;
- •Var а, в : array[1..N, 1..N] of integer;
- •Var а, в : array[1..N, 1..N] of integer;
- •Var а, в : array[1..N, 1..N] of integer;
- •Var а, в : array[1..N, 1..N] of integer;
- •Практические задания
- •Тема 8 Работа с файлами
- •Var f1, f2 : text;
- •X : char;
- •International
- •Var f1, f2 : text;
- •X : char;
- •International
- •Var Fl : text;
- •X: char;
- •International
- •Var f1 : text;
- •X : char;
- •International
- •Var f1 : file of char;
- •X : char;
- •I: integer;
- •International
- •Var f1 : file of char;
- •X : char;
- •International
- •Var f1 : file of char;
- •X : char;
- •International
- •Var f1 : file of char;
- •X : char;
- •International
- •Тема 9 Процедуры и функции
- •Var I, j : integer;
- •Var n, m : integer;
- •Var I, j : integer;
- •Var n, m : integer;
- •Var I, j : integer;
- •Var I, j : integer;
- •Var s : string;
- •Var I: integer;
- •Var I, j : integer;
- •Var I, j : integer;
- •Var n : longint;
- •Var s : integer;
- •Var n : longint;
- •Var s : integer;
- •Var а, в, d, к, X, y : integer;
- •Var а, в, d, к, X, y : integer;
- •Var а, в : integer;
- •Var к: integer;
- •Var I : integer;
- •Var n : longint;
- •Var s : integer;
- •Var а, в, X, d, y : integer;
- •Var а, в : integer;
- •Var к: integer;
- •Практические задания
- •Тема 10 Работа с текстом. Модуль crt
- •Var I: char;
- •Var I:integer;
- •Var X, I: integer;
- •Var I: integer;
- •Var X, y, I: integer;
- •Var X, y, I: integer;
- •Var X, y, I: integer;
- •Практические задания
- •Тема 11 Графика. Модуль Graph
- •Initgraph(driver, mode,' ');
- •Var driver, mode : integer;
- •Var driver, mode,
- •X, y : integer;
- •Var driver, mode,
- •X, y : integer;
- •Var driver, mode, X, y : integer ;
- •Var driver, mode, X, y : integer;
- •Var driver, mode, X, y : integer;
- •Var driver, mode, X, y, I: integer;
- •Var driver, mode, X, y, I, t : integer;
- •Var driver, mode, X, y, I, t : integer;
- •Var driver, mode, X, y, I, t : integer;
- •Var driver, mode, X, y, I, t, y0 : integer ;
- •Var driver, mode, X, y, I, t, xo : integer;
- •Var driver, mode, X, y, r : integer;
- •Var driver, mode, X, y, x1, y1, r : integer;
- •Var driver, mode, X, y, r, I: integer ;
- •Var driver, mode, X, y, r, rx, ry, lx, ly, I, size : integer;
- •Var driver, mode, X, y, r : integer;
- •Практические задания
- •Тема I 3 Разные задачи
- •Var f1:file of nn;
- •I:integer;
- •Var I:integer;
- •Var I, min,max:integer;
- •Var I,j:integer;
- •Var I,j:integer;
- •In_metr;
- •I,n:integer;
- •Var I:integer;
- •If I in s1 then
- •Приложение Зарезервированные слова borland pascal 7.0
- •Литература
- •Оглавление
- •1.1. Алфавит и структура программы
- •Тема 13 разные задачи
Тема I 3 Разные задачи
Очень часто при работе с файлами используется такой тип данных, как записи. Описание типа для записи в PASCAL организуется следующим образом:
TYPE NN=RECORD
NAME:TRING;
HIGH:INTEGER;
END;
где через точку с запятой перечисляются типы и, возможно, размер полей записи с данным типом NN. Для задания отдельной записи данного типа и файла, состоящих из таких записей, нужно воспользоваться секцией описания переменных: VAR F1:FILE OF NN;
N:NN;
Помните, что нельзя сразу задать VAR F1:FILE OF RECORD;
В PASCAL 7.0 такое описание приводит к ошибке!
Обращение к полям записи N организуется как N.NAME и N.HIGH.
Задача 13.1 Создать файл, в который необходимо ввести фамилии и рост учеников. Вывести этот файл на экран через пробел:
ИВАНОВ 177
ПЕТРОВ 181
…
PROGRAM PRG13_1;
TYPE NN=RECORD
NAME:STRING;
HIGH:INTEGER;
END;
Var f1:file of nn;
N:NN;
I:integer;
BEGIN
ASSIGN(F1,'C:\r1.TXT');
WRITELN('BBЕДИTE ИНФОРМАЦИЮ В ФАЙЛ');
REWRITES(F1);
FOR l:=1 TO 4 DO
BEGIN
READLN(N.NAME,N.HIGH);
WRITE(F1,N);
END;
WRITELN('ФАЙЛ');
RESET(F1);
FOR l:=1 TO 4 DO
BEGIN
READ(F1,N);
WRITELN(N.NAME,' '.N.HIGH);
END;
CLOSE(FI);
END.
Для решения задачи:
- формируем тело программы и описываем переменные;
- привяжем файл rl.TXT к файловой переменной F1 и откроем его на запись;
- организуем ввод полей N.NAME и N.HIGH записи с клавиатуры и занесем их как целую запись N в файл;
- открываем F1 на чтение;
- организуем последовательный просмотр по считыванию элементов файла F1 и записи их на экран дисплея в виде двух полей;
- закрываем файл.
Переменные:
Fl - файл записей;
N - очередная запись;
I - вспомогательная переменная.
Задача 13.2 Создать файл, в который необходимо ввести фамилии и рост учеников. Вывести этот файл на экран через пробел:
ИВАНОВ 177
ПЕТРОВ 181
…
…
Определить фамилию самого маленького и самого высокого ученика.
PROGRAM PRG13_2;
TYPE NN=RECORD
NAME:STRING;
HIGH:INTEGER;
END;
TYPE FN= FILE OF NN;
VAR F1: FN ;
N:NN;
PROCEDURE F_IN(VAR F:FN);
{Ввод файла данных}
Var I:integer;
BEGIN
FOR I:=1 TO 4 DO
BEGIN
READLN(N.NAME,N.HIGH);
WRITE(F,N);
END;
END;
PROCEDURE F_OUT(VAR F: FN);
{Вывод файла данных и определение требуемых параметров}
Var I, min,max:integer;
F_MIN,F_MAX:STRING;
BEGIN
МАХ:=0;
MIN:=300;
FOR l:=1 TO 4 DO
BEGIN
READ(F,N);
IF N.HIGH<MIN THEN
BEGIN
MIN:=N.HIGH;
F_MIN:=N.NAME;
END;
IF N.HIGH>MAX THEN
BEGIN
MAX:=N.HIGH;
F_MAX:=N.NAME;
END;
WRITELN(N.NAME,' '.N.HIGH);
END;
WRITELN('CAMЫЙ ВЫСОКИЙ УЧЕНИК');
WRITELN(F_MAX,' ':4,MAX);
WRITELN('CAMЫЙ НИЗКИЙ УЧЕНИК');
WRITELN(F_MIN, ' ':4,MIN);
END;
BEGIN
ASSIGN(F1,'C:\R1.TXT');
WRITELN('BBОДИTE ИНФОРМАЦИЮ В ФАЙЛ');
REWRITE(FI);
F_IN(F1);
WRITELN(' ФАЙЛ 1');
RESET(FI);
F_OUT(F1);
CLOSE(F1);
END.
Для решения задачи:
- формируем тело программы и описываем переменные;
- создаем описание процедуры F_IN(VAR F:FN) для ввода записей в файл F;
- создаем описание процедуры F_OUT(VAR F: FN) для вывода записей из файла и определения фамилии и роста самого маленького ученика и самого высокого ученика в данной учебной группе;
- в основной программе привяжем файл rl.TXT к файловой переменной F1 и откроем его на запись;
- вызываем функцию F_IN для ввода записей в файл;
- открываем F1 на чтение и вызываем F_OUT, которая выводит результаты на экран;
- закрываем файл.
Переменные:
в функции F_IN:
I - вспомогательная переменная;
в функции F_OUT:
I - вспомогательная переменная;
MIN - рост самого маленького ученика;
МАХ - рост самого высокого ученика;
F_MIN - фамилия самого маленького ученика;
F_MAX- фамилия самого высокого ученика.
в основной программе:
F1 - файл записей;
N - очередная запись.
Задача 13.3 Дано множество из N городов (N < 11), между которыми проложены дороги, длина дорог известна. В каком порядке должен посетить их коммивояжер, чтобы путь его был самым коротким? Маршрут начинается в городе i и кончается в этом же городе. На каждом шагу коммивояжер выбирает тот город, расстояние до которого минимально.
Алгоритм, описанный в решении данной задачи, называется "жадным", т. к. на каждом шагу приходится выбирать экстремальное значение.
Для решения этой задачи нам понадобится задать матрицу расстояний METR[N,N], где каждый элемент, находящийся на I-й строке и в J-м столбце, соответствует расстоянию между городами I и J. Очевидно, что матрица расстояний симметрична относительно главной диагонали и сами элементы главной диагонали равны нулю.
Для того чтобы отделять города, в которых уже был коммивояжер, от городов, которые он еще не посетил, нам понадобится множество М. В это множество последовательно будем заносить города, которые коммивояжер уже посетил. Находясь в городе К и пытаясь определить следующий город L, до которого расстояние минимально, города из множества М рассматривать не нужно. Выбрав город L, мы заносим его в множество М.
PROGRAM PRG13_3;
{ЖАДНЫЙ АЛГОРИТМ}
VAR M:SET OF 1..10;
STR : ARRAY[1..1O] OF BYTE;
A,N, L, X, Y, J, I, MIN.COST :INTEGER;
METR : ARRAY [1..10, 1..10] OF BYTE;
PROCEDURE IN_METR;
{Формирование матрицы}