Блок- схема алгоритма решения задач

          

     
 


J=j+1
          

     
 


               

                   

 


                            




Особенности паскаля.

Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 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.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: