Смекни!
smekni.com

Строковые данные на Паскале (стр. 2 из 3)

Пример:

Исходное значение 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.