|
Особенности паскаля.
Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 1971г. в качестве языка для обучения программированию. Базой при разработке явился язык Алгол.
Достоинства языка Паскаль:
1) относительная простота (т.к. разрабатывался с целью обучения программированию);
2) идеология языка Паскаль близка к современным методикам и технологиям программирования, в частности, к структурному программированию и нисходящему проектированию (метод пошаговой детализации) программ. Паскаль может использоваться для записи программы на различных уровнях ее детализации, не прибегая к помощи схем алгоритмов;
3) гибкие возможности в отношении используемых структур данных;
4) высокая эффективность программ;
5) наличие средств повышения надежности программ, включающих контроль правильности использования данных различных типов и программных элементов на этапах трансляции, редактирования и выполнения.
|
|
В связи с этим язык Паскаль в настоящее время находит самое широкое распространение для решения большого круга разнообразных практических и научных задач.[6]
2.4 Программа
{Телеграф-передача сообщений при помощи азбуки Морзе}
Program a;
uses crt;
const
morse: array [128..159] of string[4]=('.- ','-...','.---','--. ',
'-.. ','. ','...-','--..',
'.. ','.---','-.- ','.-..',
'-- ','-. ','--- ','.--.',
'.-. ','... ','- ','..- ',
'..-.','....','-.-.','---.',
'----','--.-','-..-','-.--',
'-..-','..-.','..--','.-.-'
);
Tone=100;
L1=50;
L2=100;
L3=50;
L4=100;
L5=150;
Var
mes: string;
sim: string[4];
znak: string[1];
I, j: integer;
begin
clrscr;
writeln (‘*** телеграф ***’);
writeln (‘Введите сообщение, которое надо передать ‘);
writeln (‘(используйте только большие русские буквы)‘);
write (‘ => ‘);
readln (mes);
for i=1 to Length (mes) do
begin
if (mes [i] > = ‘A’) and (mes[i] <= ’Я’) then
begin
sim:= morse [ord (mes[i]:=1];
repeat
if (sim[j]= ‘-’) or (sim[j]= ‘.’) then
begin
write (sim [j]);
sound (1000);
case sim[j] of
‘.’: Delay (L1);
‘-’: Delay (L2);
end;
Nosound;
Delay (L3);
end;
j:=j+1;
until ((sim[j]=’ ‘) or (j>4));
Delay (L4);
End;
else
if mes [i]= ‘ ‘ then
begin
write (‘ ‘);
Delay (L5);
end;
end;
writeln
writeln (‘ Сообщение передано! ‘);
writeln (‘ Для завершения работы с программой нажмите ‘, ‘<Enter>’);
readln;
end.
2.5 Описание работы программы.
Program a;
Uses crt;
Const
Morse: array[128..159] of [4]= (
‘.-‘, ‘-…’, ‘.---‘, ‘--. ‘, {А, Б, В, Г}
‘-.. ‘, ‘. ‘,’…-‘, ‘--..’, {Д, Е, Ж, З}
{И, Й, К, Л,}
{М, Н, О, П}
{Р, С, Т, У}
|
|
{Ф, Х, Ц, Ч}
{Ш, Щ, Ъ, Ы}
{Ь, Э, Ю, Я}
); {Параметры передачи}
TONE=100; {частота сигнала (Гц)}
L1=50; {длительность (мс) «точки»}
L2=100; {длительность (мс) «тире»}
L3=50; {пауза (мс) между точками и тире одной буквы}
L4=100; {пауза (мс) между буквами}
L5=150; {пауза (мс) между словами}
Var
mes: string; {сообщение}
sim: string[4]; {символ в кодировке Морзе – последовательность точек и тире}
znak: string[1]; {“ передаваемый“ знак – тире или точка}
I, j: integer; {номер символа и знака}
begin
clrscr; { Очистка экрана}
writeln (‘*** телеграф ***’);
writeln (‘Введите сообщение, которое надо передать ‘);
writeln (‘(используйте только большие русские буквы)‘);
write (‘ => ‘);
readln (mes);{Ввести сообщение, которое нужно передать}
for i=1 to Length (mes) do
begin
if (mes [i] > = ‘A’) and (mes[i] <= ’Я’) then { выставляем диапазон, А и Я даны в константах, т..е. определение идет автоматически}
begin
{определим код очередной буквы (функция ord) сообщения и получим из таблицы кодировки соответствующий элемент массива – последовательность точек и тире}
sim:= morse [ord (mes[i
j:=1;
repeat
if (sim[j]= ‘-’) or (sim[j]= ‘.’) then { В Сим передалось значение состоящее из точек и тире, выбираем единичную позицию благодаря переменной J, и определяем ее. Она может быть тире, точка либо пробел. Задаем ограничения, т.е. узнаем, будет ли присутствовать тире или точка, ведь если они есть, значит есть и буква. Если пробел _ -буквы или символа первоначального сообщения тоже нету.}
begin
write (sim [j]);{Если есть точка или тире – выведется на печать}
sound (1000);
case sim[j] of{ Оператор выбора условия. Если СИМ равно точке – задержка 5, если тире – задержеа 100}
‘.’: Delay (L1);
‘-’: Delay (L2);
end;
Nosound; {Функция, определяющая окончание звука.}
Delay (L3);
end;
j:=j+1;{Буква А например в азбуке морзе имеет вид «.-.-«Задавая выше Jравное 1 мы определяли первую позицию для числа А. В нашем случае первая позиция это точка. Затем каждый раз мы прибавляем единицу. Во втором случае это тире. В третьем точка. В четвертом тире. Дальше не пойдет, тк. А состоит из 4 символов }
until ((sim[j]=’ ‘) or (j>4));{Этот оператор будет выполняться так долго пока условия((sim[j]=’ ‘) or (j>4) будут ложными. Когда они станут истинными, то оператор сразу прекращает работу. }
Delay (L4); {пауза между буквами}
end
else
if mes [i]= ‘ ‘ then {пробел между символами}
begin
write (‘ ‘); {пробел между словами сообщения}
Delay (L5);
end;
end;
writeln
writeln (‘ Сообщение передано! ‘);
writeln (‘ Для завершения работы с программой нажмите ‘, ‘<Enter>’);
readln;
end.