Программирование на языке Паскаль в среде Турбо Паскаль
Особенности программирования на языке Паскаль в среде Турбо Паскаль. Линейные алгоритмы, процедуры и функции. Структура данных: массивы, строки, записи. Модульное программирование, прямая и косвенная рекурсия. Бинарный поиск, организация списков.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 21.07.2012 |
Размер файла | 913,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Частное учреждение образования
Колледж бизнеса и права
ОТЧЕТ
по учебной практике по программированию
ОП Т.117013
Проверил (Н.И. Савченкова)
Выполнил (В.А. Макрак)
2012
Содержание
- 1. Программирование на языке Паскаль в среде Турбо Паскаль
- 1.1 Линейные алгоритмы
- 1.2 Процедуры и функции
- 1.3 Структура данных: массивы
- 1.4 Структура данных: строки.
- 1.4 Структура данных: записи
- 1.5 Модульное программирование
- 1.6 Прямая и косвенная рекурсия
- 1.7 Рекурсивные алгоритмы
- 1.8 Бинарный поиск
- 1.9 Сортировка влючением
- 1.10 Обменная сортировка
- 1.11 Сортировка разделением
- 1.12 Статическое и динамическая распределение памяти
- 1.13 Организация списков
- 1.14 Модуль Graph
1. Программирование на языке Паскаль в среде Турбо Паскаль
1.1 Линейные алгоритмы
Условие задачи
Составить словесное (математическое) описание и блок-схему следующей задаче: найти периметр треугольника АВС, если его координаты A (x1,y1), B (x2,y2), C (x3,y3,) вводятся с клавиатуры. При неправильном вводе значений, вывести на экран сообщение об ошибке и предложением повторно ввести правильные данные. Результат отобразить на экране.
P=AB+BC+AC
Для тестирования программы использовались данные, приведённые в таблице 1. Полученные результаты приведены там же.
Таблица 1 - Результаты выполнения линейного алгоритма
Входные данные |
Выходные данные |
|||||
A |
B |
C |
S |
|||
3,5 |
-4,7 |
-5,-1 |
25.34 |
Листинг программы - Линейный алгоритм
program perimetr;
uses crt;
var ab,bc,ac,x1,x2,x3,y1,y2,y3: real;
p: real;
begin
clrscr;
repeat
writeln ('vvesti koordinati verhin A');
readln (x1,y1);
writeln ('vvedite koordinati verhin B');
readln (x2,y2);
writeln ('vvedite koordinati verhin C');
readln (x3,y3);
AB: =sqrt ( (sqr (x1-x2)) + (sqr (y1-y2)));
BC: =sqrt ( (sqr (x2-x3)) + (sqr (y2-y3)));
AC: =sqrt ( (sqr (x1-x3)) + (sqr (y1-y3)));
if (AB>=BC+AC) or (AC>=AB+BC) or (BC>=AB+AC) then writeln ('eto ne treygolnik, povtorite vvod');
until (AB<BC+AC) and (AC<AB+BC) and (BC<AB+AC);
P: =AB+BC+AC;
writeln ('perimetr treygolnika raven=',p: 0: 2);
readln;
end.
программирование алгоритм турбо паскаль
Рисунок 1 - Блок-схема линейного алгоритма
Результат решения задачи представлен на рисунке 1.
Рисунок 1 - Результат работы программы в TurboPascal
1.2 Процедуры и функции
Составить словесное (математическое) описание и блок-схему следующей задаче: найти периметр треугольника АВС, если его координаты A (x1,y1), B (x2,y2), C (x3,y3,) вводятся с клавиатуры. При неправильном вводе значений, вывести на экран сообщение об ошибке и предложением повторно ввести правильные данные. Результат отобразить на экране.
P=AB+BC+AC
Для тестирования программы использовались данные, приведённые в таблице 2. Полученные результаты приведены там же.
Таблица 2 - Результаты выполнения процедуры и функции
Входные данные |
Выходные данные |
|||||
A |
B |
C |
P |
|||
3,5 |
-4,7 |
-5,-1 |
25.34 |
Результат решения задачи представлен на рисунке 2.
Рисунок 2 - Результат работы программы в TurboPascal
Листинг - Процедуры
program perimet_procedure;
uses crt;
var ab,bc,ac,x1,x2,x3,y1,y2,y3: real;
p: real;
procedure perimetr (x1,y1,x2,y2: real);
begin
clrscr;
repeat
writeln ('vvesti koordinati verhin A');
readln (x1,y1);
writeln ('vvedite koordinati verhin B');
readln (x2,y2);
writeln ('vvedite koordinati verhin C');
readln (x3,y3);
AB: =sqrt ( (sqr (x1-x2)) + (sqr (y1-y2)));
BC: =sqrt ( (sqr (x2-x3)) + (sqr (y2-y3)));
AC: =sqrt ( (sqr (x1-x3)) + (sqr (y1-y3)));
if (AB>=BC+AC) or (AC>=AB+BC) or (BC>=AB+AC) then writeln ('eto ne treygolnik, povtorite vvod');
until (AB<BC+AC) and (AC<AB+BC) and (BC<AB+AC);
P: =AB+BC+AC;
end;
begin
clrscr;
perimetr (x1,y1,x2,y2);
writeln ('perimetr treygolnika raven=',p: 0: 2);
readln;
end.
Рисунок 2 - Блок-схема процедуры
Листинг - функции
Program perimetr_function;
Uses crt;
Var x1,x2,x3,y1,y2,y3: real; {объявление переменных }
p: real;
Function stor (ab,bc,ac: real): real; {функция }
Begin
Repeat
writeln ('Vvesti Koordinati Verhin |A|'); {ввод координат точки А}
readln (x1,y1);
writeln ('Vvedite Koordinati Verhin |B|'); {ввод координат точки B}
readln (x2,y2);
writeln ('Vvedite Koordinati Verhin |C|'); {ввод координат точки C}
readln (x3,y3);
AB: =sqrt ( (sqr (x1-x2)) + (sqr (y1-y2)));
BC: =sqrt ( (sqr (x2-x3)) + (sqr (y2-y3)));
AC: =sqrt ( (sqr (x1-x3)) + (sqr (y1-y3)));
if (AB>=BC+AC) or (AC>=AB+BC) or (BC>=AB+AC) then writeln ('Eto ne treygolnik, Povtorite Vvod');
until (AB<BC+AC) and (AC<AB+BC) and (BC<AB+AC);
P: =AB+BC+AC; {вычисление периметра }
End;
{основная программа}
Var ab,bc,ac: real; {объявление переменных}
Begin
clrscr; stor (ab,bc,ac
);
writeln ('|Perimetr Treygolnika Raven|=',p: 0: 0,' (cm) '); {вывод результата}
readln;
End. {конец }
Результат решения задачи представлен на рисунке 3.
\
Рисунок 3 - Результат работы программы в TurboPascal
Рисунок 3 - Блок-схема функции
1.3 Структура данных: массивы
Дан двумерный массив 5х5. Заменить нулем элементы, расположенные над побочной диагональю.
Листинг - Структуры данных: массивы
program massiv;
Uses CRT;
Const n=5;
var a: array [1. n,1. n] of integer;
i,j: integer;
Begin
randomize;
FOR i: = 1 to n DO
begin
FOR j: = 1 to n DO
begin
A [i,j]: =random (10) - 3;
write (a [i,j]: 3);
end;
writeln;
end;
writeln;
FOR i: = 1 to n DO
begin
FOR j: = 1 to n DO
begin
if j<=n-i+1 then
a [i,j]: =0;
write (a [i,j]: 3);
end;
writeln;
end;
Readln
End.
Результат решения задачи представлен на рисунке 3.
Рисунок 4 - Результат работы программы в TurboPascal
1.4 Структура данных: строки.
Даны строки S1, S2 и символ C. Перед (после) каждого вхождения символа C в строку S1 вставить строку S2.
Листинг - Структуры данных: строки
uses crt;
var s1,s2,s: string;
c,w: char;
i: byte;
begin
clrscr;
writeln (`Ввести строку в которую будем вставлять: ');
readln (s1);
writeln ('Ввести строку которую будем вставлять: ');
readln (s2);
repeat
write (');
readln (c);
if pos (c,s1) =0 then writeln ();
until pos (c,s1) >0;
repeat
clrscr;
writeln (? ');
writeln ();
writeln ();
writeln ();
readln (w);
case w of
'1': begin
s: =s1;
for i: =length (s) downto 1 do
if s1 [i] =c then insert (s2,s, i);
write (s);
readln;
end;
'2': begin
s: =s1;
for i: =length (s) downto 1 do
if s1 [i] =c then insert (s2,s, i+1);
write (s);
readln;
end;
else exit;
end;
until not (w in ['1'. '2']);
end.
Результат решения задачи представлен на рисунке 4.
Рисунок 4 - Результат работы программы в TurboPascal
1.4 Структура данных: записи
Запись содержит данные о продовольственных и промышленных товарах со следующими реквизитами: наименование товара (тип string), тип товара (тип string), количество (тип integer), цена за единицу (тип integer). Составить программу, выполняющую поиск по типу товара и количеству товара.
Листинг - Структуры данных: записи
uses crt;
type tov=record
t: string;
k: integer;
n: string;
c: char;
end;
const
Nmax=10;
var
i: integer;
c: char;
m: array [1. Nmax] of tov;
k: integer;
o: boolean;
procedure enter;
var
c: string;
begin
clrscr;
i: =1;
while c<>'н' do begin
clrscr;
i: =i+1;
writeln ();
readln (m [i]. n);
writeln () ');
readln (m [i]. t);
writeln ();
readln (m [i]. k);
writeln ();
readln (m [i]. c);
writeln (');
readln (c);
end;
end;
procedure find;
var
tip: string;
kol,k: integer;
begin
i: =2;
while c<>'н' do begin
i: =i+1;
write (? ');
readln (tip);
write (: ');
readln (kol);
for i: =2 to Nmax do begin
if (m [i]. t=tip) and (m [i]. k=kol) then begin
writeln (c);
o: =true;
end;
end;
if o=false then writeln ();
writeln (? ');
readln (c);
end;
end;
begin
while c<>'3' do begin
writeln (: ');
writeln ('1.);
writeln ('2.);
writeln ('3. ');
readln (c);
case c of
'1': enter;
'2': find;
end;
end;
end.
Результат решения задачи представлен на рисунке 5.
Рисунок 5 - Результат работы программы в TurboPascal
1.5 Модульное программирование
В заданном массиве К (N) найти индексы элементов, которые кратны минимальному значению элемента массива.
Листинг - Модульное программирование
programpract6;
usescrt; {подключениебиблиотеки}
functionRec (k: integer): longint; {описаниефункции}
begin
ifk<4 then Rec: =1{началоцикла}
else Rec: =Rec (k-3) +Rec (k-2) +Rec (k-1);
end; {конеццикла}
varn: integer; {описаниепеременных}
beginclrscr; {очисткаэкрана}
repeat{цикл}
write ('vvedite nomer chlena posledovatelnosti, nat chislo n=');
readln (n);
until n>0;
write ('znachenie=',Rec (n));
readln;
readkey; {задержка экрана}
end.
Результат решения задачи представлен на рисунке 6.
Рисунок 6 - Результат работы модульное программирование
1.6 Прямая и косвенная рекурсия
Написать программу с рекурсивной функцией, вычисляющей:
.
Листинг - Прямая и косвенная рекурсия
Programpr7;
uses crt;
var n: integer;
function Koren (n: integer): real;
begin
if n=1 then Koren: =sqrt (3)
else Koren: =sqrt (3+Koren (n-1));
end;
begin
clrscr;
write ('n=');
readln (n);
write (Koren (n): 0: 5);
readln
end.
Таблица 6 - Результаты выполнения прямой и косвенной рекурсии
Входные данные |
Выходные данные |
|
3 |
2.27493 |
Результат решения задачи представлен на рисунке 7.
Рисунок 7 - Результат работы программы в TurboPascal
1.7 Рекурсивные алгоритмы
Написать рекурсивную процедуру, переводящую целое число из восьмеричной системы счисления в десятичную.
Для тестирования программы использовались данные, приведённые в таблице 7. Полученные результаты приведены там же.
Таблица 7 - Результаты выполнения линейного алгоритма
Входные данные |
Выходные данные |
|
24 |
20 |
Листинг - Рекурсивные алгоритмы
programProject1;
function Oct2Num (const aSOct: String; const aWeight, aI: Integer): Integer;
var
Num: Integer;
begin
Num: = 0;
case aSOct [aI] of
'0': Num: = 0 * aWeight;
'1': Num: = 1 * aWeight;
'2': Num: = 2 * aWeight;
'3': Num: = 3 * aWeight;
'4': Num: = 4 * aWeight;
'5': Num: = 5 * aWeight;
'6': Num: = 6 * aWeight;
'7': Num: = 7 * aWeight;
end;
if aI > 1 then begin
Num: = Num + Oct2Num (aSOct, aWeight * 8, aI - 1);
end;
Oct2Num: = Num;
end;
var
SOct, S: String;
Num: Integer;
Begin
repeat
Writeln ('zadaite celoe neotricatelnoe chislo: ');
Readln (SOct);
Num: = Oct2Num (SOct, 1, Length (SOct));
Writeln ('Chislo v 10oi sisteme: ');
Writeln (Num);
Readln (S);
until S <> '';
End.
Результат решения задачи представлен на рисунке 8.
Рисунок 8 - Результат работы программы в TurboPascal
1.8 Бинарный поиск
Задан массив AX (N). Добавить массив С (К). Выполнить сортировку включением. В полученном массиве положительные элементы уменьшите вдвое, а отрицательные замените на значения их индексов.
Для тестирования программы использовались данные, приведённые в таблице 8. Полученные результаты приведены там же.
Таблица 8 - Результаты выполнения линейного алгоритма
Входные данные |
Выходные данные |
|||||||
1element |
2element |
3element |
4element |
5element |
1 |
2 |
5 |
|
3 |
3 |
4 |
5 |
6 |
Листинг - Бинарный поиск
Programpr7;
usescrt; {подключениебиблиотеки}
Constn = 5; {постоянная}
Var{описание переменных}
i,min: integer;
k: array [1. n] of integer; {описаниемассива}
Begin clrscr; {очисткаэкрана}
For i: = 1 To n Do {заполнениемассива}
Begin
Writeln ('Vvedite ', i,' element: ');
Readln (K [i])
End;
min: = k [1];
For i: = 2 To n Do {поискминимального}
if k [i] < min Then min: = k [i];
For i: = 1 To n Do {кратностьэлементов}
If (k [i] mod min) = 0 Then Writeln (i);
readkey;
End.
Результат решения задачи представлен на рисунке 9.
Рисунок 9 - Результат работы программы в TurboPascal
1.9 Сортировка влючением
Задан массив AX (N). Добавить массив С (К). Выполнить сортировку включением. В полученном массиве положительные элементы уменьшите вдвое, а отрицательные замените на значения их индексов
Листинг - Сортировка включением
programl;
type mas=array [0.100] of integer;
var i,min,n,m, imn: integer; a,c: mas;
Procedure Straight_Insertion (n: integer; Var a: mas);
Var
i,j: integer;
x: integer;
Begin
For i: =2 To n Do
begin
x: =a [i]; a [0]: =x; j: =i-1;
While x<a [j] Do
begin
a [j+1]: =a [j]; j: =j-1;
end;
a [j+1]: =x
end;
End; {Straight_Insertion}
begin
randomize;
writeln (');
readln (n);
for i: =1 to n do begin
a [i]: =random (10) +random (5);
end;
writeln (');
for i: =1 to n do begin
write (a [i],' ');
end;
writeln;
writeln (');
readln (m);
for i: =1 to m do begin
c [i]: =random (15) +random (5);
end;
writeln;
writeln ();
for i: =1 to n do begin
write (c [i],' ')
end;
writeln;
writeln;
for i: =1 to m do begin
n: =n+1;
a [n]: =c [i];
end;
writeln (');
for i: =1 to n do
write (a [i],' ');
writeln;
writeln;
Straight_Insertion (n,a);
writeln (');
for i: =1 to n do
write (a [i],' ');
writeln;
writeln;
min: =a [1];
for i: =1 to n do begin
if a [i] <min then min: =a [i];
end;
write (=',min);
writeln;
imn: =0;
for i: =1 to n do begin
if a [i] mod a [min] =0 then
imn: =i;
end;
begin
min: =a [1];
writeln (');
for i: =1 to n do
if (a [i] mod min = 0) then
write (i: 3);
writeln;
end;
end.
Результат решения задачи представлен на рисунке 10.
Рисунок 10 - Результат работы программы в TurboPascal
1.10 Обменная сортировка
Задан массив AX (N). Добавить массив С (К). Выполнить сортировку включением. В полученном массиве положительные элементы уменьшите вдвое, а отрицательные замените на значения их индексов.
Листинг - Сортировка обменная
type mas=array [0.100] of integer;
var i,min,n,m, imn: integer; a,c: mas;
Procedure Shaker_Sort (n: word; Var a: mas);
Var j,k,l,r: integer;
x: integer;
Begin
l: =2; r: =n; k: =n;
Repeat
For j: =r DownTo l Do
If a [j-1] >a [j] Then
begin
x: =a [j-1];
a [j-1]: =a [j];
a [j]: =x;
k: =j;
end;
l: =k+1;
For j: =l To r Do
If a [j-1] >a [j] Then
begin
x: =a [j-1];
a [j-1]: =a [j];
a [j]: =x;
k: =j;
end;
r: =k-1;
Until l>r
End; {Shaker_Sort}
begin
randomize;
writeln (');
readln (n);
for i: =1 to n do begin
a [i]: =random (10) +random (5);
end;
writeln (');
for i: =1 to n do begin
write (a [i],' ');
end;
writeln;
writeln (');
readln (m);
for i: =1 to m do begin
c [i]: =random (15) +random (5);
end;
writeln;
writeln (');
for i: =1 to n do begin
write (c [i],' ')
end;
writeln;
writeln;
for i: =1 to m do begin
n: =n+1;
a [n]: =c [i];
end;
writeln (');
for i: =1 to n do
write (a [i],' ');
writeln;
writeln;
Shaker_Sort (n,a);
writeln (');
for i: =1 to n do
write (a [i],' ');
writeln;
writeln;
min: =a [1];
for i: =1 to n do begin
if a [i] <min then min: =a [i];
end;
write (= ',min);
writeln;
imn: =0;
for i: =1 to n do begin
if a [i] mod a [min] =0 then
imn: =i;
end;
begin
min: =a [1];
writeln (');
for i: =1 to n do
if (a [i] mod min = 0) then
write (i: 3);
writeln;
end;
end.
Результат решения задачи представлен на рисунке 11.
Рисунок 11 - Результат работы программы в TurboPascal
1.11 Сортировка разделением
Задан массив К (N). Добавить массив С (В). Выполнить сортировку разделением. В полученном массиве найти индексы элементов, которые кратны минимальному значению элемента массива.
Листинг - Сортировка разделением
type mas=array [1.20] of integer;
var i,min,n,m, imn: integer; a,c: mas;
procedure sort (l,r: integer);
var
i,j,x1,y1,m: integer;
begin
i: =l;
j: =r;
m: =round ( (l+r) /2);
x1: =a [m];
repeat
while a [i] <x1 do inc (i);
while a [j] >x1 do dec (j);
if i<=j then
begin
y1: =a [i];
a [i]: =a [j];
a [j]: =y1;
inc (i);
dec (j);
end;
until i>j;
if l<j then sort (l,j);
if i<r then sort (i,r);
end;
begin
randomize;
writeln (');
readln (n);
for i: =1 to n do begin
a [i]: =random (10) +random (5);
end;
writeln (');
for i: =1 to n do begin
write (a [i],' ');
end;
writeln;
writeln ('');
readln (m);
for i: =1 to m do begin
c [i]: =random (15) +random (5);
end;
writeln;
writeln (');
for i: =1 to n do begin
write (c [i],' ')
end;
writeln;
writeln;
for i: =1 to m do begin
n: =n+1;
a [n]: =c [i];
end;
writeln (');
for i: =1 to n do
write (a [i],' ');
writeln;
writeln;
sort (1,n);
writeln (');
for i: =1 to n do
write (a [i],' ');
writeln;
writeln;
min: =a [1];
for i: =1 to n do begin
if a [i] <min then min: =a [i];
end;
write (= ',min);
writeln;
imn: =0;
for i: =1 to n do begin
if a [i] mod a [min] =0 then
imn: =i;
end;
begin
min: =a [1];
writeln (');
for i: =1 to n do
if (a [i] mod min = 0) then
write (i: 3);
writeln;
end;
end.
Результат решения задачи представлен на рисунке 12.
Рисунок 12 - Результат работы программы в TurboPascal
1.12 Статическое и динамическая распределение памяти
1. Заполнить массив В (10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти. Напечатать значения четных значений элементов массива. Присвоить указателю адрес 10-го элемента, напечатать его значение, используя текущий базовый адрес сегмента и смещение с преобразованием в значение типа указатель. Заменить его содержимое на значение третьего элемента. Напечатать его новое значение.
Для тестирования программы использовались данные, приведённые в таблице 12. Полученные результаты приведены там же.
Входные данные |
Выходные данные |
||||||||||||||
5 |
-5 |
4 |
-6 |
8 |
-9 |
5 |
-4 |
-8 |
-6 |
Положительные числа |
4 элемент умноженный на 2 |
||||
5 |
4 |
8 |
5 |
16 |
Листинг - Статическое и динамическое разделение памяти
program yp14; {название программы}
uses crt; {подключение библиотеки}
type {описание типов}
massiv=array [1.10] of integer; {описание массива}
var {раздел описания переменных}
i,z: integer;
a: massiv;
PtrMas: ^massiv; {указатель на массив}
begin clrscr; {очистка экрана}
writeln ('Vvedite elementy massiva: '); {выводнаэкран}
for i: =1 to 10 do {выводэлементовмассива}
begin
read (a [i]);
end;
writeln ('Vveden massiv: ');
for i: =1 to 10 do {выводэлементамассива}
begin
write (a [i]: 3);
end;
writeln;
PtrMas: =@a; {присвоение указателю адрес начала массива в памяти}
writeln ('-------------------------------------------');
writeln ('Polozitelnie 4isla: ');
for i: =1 to 10 do
begin
if PtrMas^ [i] mod 2 =0 then
writeln (PtrMas^ [i]);
end;
PtrMas: =Ptr (Seg (a [9]),Ofs (a [9]) +SizeOf (integer)); {присвоениеадреса 4 элемента}
writeln ('-------------------------------------------');
write ('10 element: ');
writeln (PtrMas^ [1]); {вывод значения 4 лемента}
write ('novoe zna4enie 10: ');
writeln (ptrmas^ [1]); {вывод умноженного массива}
ptrMas^ [1]: =a [3];
write ('novoe zna4enie 10: ');
writeln (ptrmas^ [1]);
readkey; {задержкаэкрана}
end. {конец программы}
Результат решения задачи представлен на рисунке 13.
Рисунок 13 - Результат работы программы в TurboPascal
1.13 Организация списков
Создать связанный список из записей, содержащих сведения о товаре (код товара, наименование товара, цена), реализовать операции со связанным списком: запись первым в список, удаление первого объекта из списка, просмотр всего списка, удаление объекта, следующего за указанным.
Листинг - Организациясписков
Programyp15;
UsesCrt;
Type
NameStr = String [20];
SNameStr = string [20];
Link = ^Auto;
Auto = record
Name: NameStr; {названиетовара}
Kod: integer; {кодтовара}
cena: integer; {ценатовара}
Next: Link; {связьсоследующимобъектом}
end;
VarP,First: Link; {указательнатекущуюзапись}
NamFind: NameStr; {поискпоназванию}
V: 0.4; {меню}
EndMenu: boolean; {завершениеменю}
FunctionFindName (FN: NameStr): Link; {поискпофамилии}
VarCurr: Link;
begin
Curr: =First; {установканапервый}
whileCurr<>Nildo{доконцасписка}
if Curr^. Name=FN then {нашли}
begin
FindName: =Curr; {возвращаемуказатель}
Exit; {завершениефункции}
end
elseCurr: =Curr^. Next; {следующий}
FindName: =Nil; {еслиненашло}
end; {end FindName}
procedure AddFirst (A: Link); {добавление 1 записи}
begin
A^. Next: =First; {новыйобъект 1}
First: =A; {ссылканановыйобъект}
end; {конецпроцедуры}
procedure DelFirst (var A: Link); {удаление 1 }
begin
A: =First;
First: =First^. Next;
end; {end DelFirst}
procedure DelAfter (Old: Link; var A: Link); {удаленияобъектазастарый}
begin
A: =Old^. Next; {присвоенияуказателя}
Old^. Next: =Old^. Next^. Next;
end; {конецпроцедуры}
procedure InpAvto; {ввод}
begin
P: =New (Link); {новыйобъект}
Write ('Ha3BaHuE: ');
Readln (P^. Name);
Write ('Kog: ');
Readln (P^. kod);
write ('Cena: ');
readln (P^. cena);
AddFirst (P); {вызов процедуры добавления }
end; {конец процедуры}
procedureMyList; {вывод записей}
varCurr: Link; {указатель на след. запись}
begin
Curr: =First; {установка на 1ую запись}
whileCurr<>Nildo
begin
Writeln ('Na3BaToBapa: ', Curr^. Name,' Kod ToBaPa: ', Curr^. kod,' Kol-vo: ',Curr^. cena: 3);
Curr: =Curr^. Next; {переход к следующей}
end;
readkey;
Readln;
end; {end MyList}
{********************************}
Begin {Osnova}
New (P); {новаядинамическаяпеременная}
EndMenu: =False;
repeat
clrscr;
Writeln ('Vi6irite punktick: ');
Writeln ('1. Zapisat pervblm');
Writeln ('2. Ydalit pervyl0 zapis');
WriteLn ('3. Prosmotr vsego spiska');
Writeln ('4. ydalenie ');
WriteLn ('0. EXIT');
Readln (V);
Case V of {вызовнужнего}
1: InpAvto; {выводданных}
2: DelFirst (P); {удаление 1}
3: MyList; {вывод}
4: begin{удалениеследующего}
Write ('VvodHa3BaHu9 poslekotorogodelete: ');
Readln (NamFind);
DelAfter (Findname (NamFind),P); {вызовудаления}
end
elseEndMenu: =True; {конецменю}
end;
until EndMenu;
Dispose (P); {освобождениекучи}
end.
Результат решения задачи представлен на рисунке 14.
Рисунок 14 - Результат работы программы в TurboPascal
Рисунок 15 - Результат работы программы в TurboPascal
Рисунок 16 - Результат работы программы в TurboPascal
1.14 Модуль Graph
Написать программу, которая выводит на экран изображение шахматной доски. Используйте желтый и коричневый цвета для закрашивания квадратов. Прорисовка каждой детали выполняется с задержкой 1000 мс. После полной прорисовки стирать изображение и повторно выводить узор до нажатия Esc
Листинг - МодульGraph
uses crt,graph;
procedure Kletka (x1,y1,c: integer; d: integer);
begin
Setcolor (c);
rectangle (x1,y1,x1+d,y1+d);
Setfillstyle (1,c);
Bar (x1,y1,x1+d,y1+d);
end;
var gd,gm,x1,y1,x2,y2,d1, i,j: integer;
c: char;
begin
initgraph (gd,gm,'');
d1: =round ( (getmaxY-60) /8);
x1: =100; y1: =50;
outtextXY (getmaxX div 2-40, 20,'Vyhod-Esc');
repeat
for i: =0 to 7 do
begin
for j: =0 to 7 do
begin
if odd (i+j) then Kletka (x1+d1*i,y1+d1*j,14,d1)
else Kletka (x1+d1*i,y1+d1*j,6,d1);
delay (1000);
end;
end;
delay (1000);
setfillstyle (1,0);
bar (x1,y1,x1+d1*8,y1+d1*8);
if keypressed then c: =readkey;
if c=#27 then exit;
until c=#27;
end.
Результат решения задачи представлен на рисунке 17.
Рисунок 17 - Результат работы программы в TurboPascal
Размещено на Allbest.ru
Подобные документы
Основные сведения о системе программирования Турбо Паскаль. Структура программы на Паскале и ее компоненты. Особенности и элементы языка Турбо Паскаль. Порядок выполнения операций в арифметическом выражении, стандартные функции и оператор присваивания.
лекция [55,7 K], добавлен 21.05.2009Особенности использования графического режима в среде Турбо Паскаль. Типы драйверов. Инициализация графики. Построение изображения на экране. Графические примитивы и работа с текстом. Разработка и реализация программ в среде Турбо Паскаль "Графика".
курсовая работа [1,2 M], добавлен 26.09.2014Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.
курсовая работа [75,0 K], добавлен 21.03.2013История и основы структурного программирования в среде Turbo Pascal. Работа с различными типами данных. Операторы языка. Работа с символьными и строковыми переменами, одномерным, двумерным массивами. Классификация компьютерных игр. Игры на языке Паскаль.
курсовая работа [28,8 K], добавлен 06.05.2014Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.
учебное пособие [211,1 K], добавлен 30.03.2008Развертывание системы на жестком диске, диалоговая система программирования Турбо Паскаль, запуск программы и выполнение задания. Функциональные клавиши и их назначение. Текстовый редактор, средства создания и редактирования текстов программ, курсор.
реферат [18,6 K], добавлен 01.04.2010Изучение истории создания языка Турбо-Паскаль, важнейшего инструмента для обучения методам структурного программирования. Анализ меню управления всеми ресурсами интегрированной инструментальной оболочки, зарезервированных слов, символьных переменных.
презентация [989,7 K], добавлен 06.12.2011Расчет на устойчивость в системе программирования Турбо Паскаль. Определение критического напряжения стержня по формуле Ясинского, предельной гибкости в зависимости от материала. Программирование алгоритма расчета. Порядок ввода исходных данных.
курсовая работа [1,0 M], добавлен 27.04.2013Освоение технологии структурного программирования и применения стандартных методов работы с одномерными массивами при разработке и создании программы на языке Турбо Паскаль. Разработка программы методом пошаговой детализации с помощью псевдокода.
реферат [276,9 K], добавлен 27.02.2008Разновидности и задачи подпрограмм в языке Турбо Паскаль, их локальные и глобальные параметры. Использование процедуры для выполнения законченной последовательности действий. Формат объявления функции, особенности рекурсивного оформления подпрограммы.
реферат [20,0 K], добавлен 08.02.2012