Пример:
Исходное значение S | Оператор | Конечное значение S |
'abcdefg' | Delete(S, 3, 2) | 'abefg' |
'abcdefg' | Delete(S, 2, 6) | 'a' |
[10]
Процедуры преобразования типов в Паскале.
1.7 Str(x, S)
Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа x. Например, str(x: 8: 3, S), где 8 – общее число знаков в числе x, а 3 – число знаков после запятой.Оператор процедуры [10]
1.8 Val(S, x, kod)
Val(S, x, kod) преобразует строку символов S в число x. Здесь S – строковое выражение, x – числовая переменная (именно туда будет помещен результат), kod – целочисленная переменная (типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0.[10]
2.1 Постановка задачи
Написать программу – телеграф, который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Вывод точек и тире можно сортировать звуковым сигналом соответствующей длительности
Азбука Морзе для букв русского алфавита приведена ниже:
А .- | Б -… | В .- - | Г - - . |
Д - .. | Е | Ж …- | З - - .. |
И .. | Й . - - - | К - . - | Л . - .. |
М - - | Н - . | О - - - | П . - - . |
Р . - . | С … | Т - | У .. - |
Ф .. - . | Х …. | Ц - . - . | Ч - . - - . |
Ш - - - - | Щ - - . - | Ъ - .. - | Ы - - - . |
Ь - .. - | Э .. - . | Ю .. - - | Я . - . - |
2.2 Блок- схема алгоритма решения задач.
2.3 Особенности паскаля.
Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 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);
casesim[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
ifmes [i]= ‘ ‘ then {пробел между символами}
begin
write (‘ ‘); {пробел между словами сообщения}
Delay (L5);
end;
end;
writeln
writeln (‘ Сообщениепередано! ‘);
writeln (‘ Для завершения работы с программой нажмите ‘, ‘<Enter>’);
readln;
end.
2.6 Пояснение работы операторов которые применяются в этой программе в этой программе.
В данной программе были использованы различные функции, операторы, процедуры. Такие как:
Составной оператор Begin и End
Составной оператор представляет собой последовательность некоторых операторов, выполняющихся в том порядке, в каком они представлены в тексте программы.
Program<Имя программы>;
<Раздел описаний>
Begin
<Тело программы>
End.
Зарезервированные слова Begin и End являются так называемыми операторными скобками, в которые заключены операторы, входящие в составной оператор. Когда в зависимости от определённого условия, требуется обеспечить последовательное выполнение некоторого набора операторов, без составного оператора не обойтись.[5]
Условный оператор If и Case
Если в программе, в зависимости от некоторого условия, требуется выбрать тот или иной вариант действий, можно воспользоваться одним из условных операторов. В TurboPascal предусмотрены два условных оператора- If и Case.
Работа Case такова. Сначала вычисляется значение селектора, следующего за словом Case. Затем выполняется оператор с константой выбора, равной значению селектора. Если ни одна из констант не равна текущему значению селектора, то исполняется оператор, стоящий после слова Еlse. Часть Еlse <оператор> в тексте программы можно опустить. Тогда, если среди констант селектора нужное значение отсутствует, выполнение оператора Case ни к чему не приведет.
Case <выбор селектора> of
<метка 1>: <оператор 1>;
<метка n>:<оператор n>;
else<оператор>;
end;
Если необходимо выбрать одно из возможных действий в зависимости от некоторого условия, применяют условный оператор if.. then..else. Во многих программах, в зависимости от некоторого условия, часто требуется выполнить не одно, а последовательность действий. Однако оператор If в TurboPascal обеспечивает выполнение единственного оператора, присутствующего после зарезервированного слова Then или Else.