Написание программы "телеграф" на Turbo Pascal

Не рекомендуется работать с системой, назначив в качестве каталога по умолчанию (текущего каталога) тот, в котором хранятся перечисленные выше файлы

Написание программы "телеграф" на Turbo Pascal

Курсовой проект

Компьютеры, программирование

Другие курсовые по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией
p> та, которая содержит больше заглавных букв?

На самом деле такая проверка проходит довольно сложно: компьютер сравнивает сначала первые символы строк. Большим из двух считается тот, код которого больше (вспомните, что такое код символа). Если равны первые символы, то так же анализируется следующая пара до тех пор, пока не будет найдено различие. Если начало строк совпадает, а одна из них кончается раньше, то вторая автоматически называется большей.

Операции сравнения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. Пример:

ВыражениеРезультатTrue1MOTHERTrueМама МамаTrueCat=CatTrue

Число, записанное в строковую переменную, естественно числом не является, но очень часто требуется его все же использовать в качестве числа. Для этого нужно произвести преобразование типа. Перевод строкового представления числа в числовое выполняет в Паскале оператор Val.

Его формат: Val (S,X,C);

Здесь S - строка, содержащая число, X - числовая переменная, в которую будет помещен результат, С - переменная целочисленного типа, в которую помещается первого встреченного в S отличного от цифры символа. Если после выполнения оператора Val переменная С имеет значение 0, то это означает, что преобразование типа прошло совершенно успешно и в строке нецифровых символов не встретилось.

Противоположное действие осуществляет оператор Str. Формат оператора: Str(X,S);
X - число (либо арифметическое выражение), S - строковая переменная.

В переменную S попадает строковое представление числа X. Это нужно, например, при необходимости выводить на экран числа в графическом режиме, так как стандартные процедуры вывода на экран там работают только со строковыми величинами.

Для иллюстрации рассмотрим задачу: "Найти сумму цифр введенного натурального числа".

Program Str5;
Var

S : String;
I,X,A,C : Integer;

Begin

Writeln('Введите натуральное число');

Readln(S); {Число вводится в строковую переменную}

A:=0;

For I:=1 To Length(S) Do

Begin

Val(S[I],X,C); {Цифровой символ превращается в число}

A:=A+X {Цифры суммируются}

End;

Writeln('Сумма цифр равна ',A)

End.

Стандартные процедуры и функции.

Рассмотрим наиболее важные процедуры и функции, предназначенные для обработки строк:

Функция Copy (S, Pozition, N) копирует из строки S подстроку длиной N символов, начиная с позиции Pozition. При этом исходная строка не меняется. Здесь N и Pozition целочисленные выражения. Пример:

 

Значение SВыражениеРезультатМама мыла рамуCopy(S, 6, 4)мылаМаша ела кашуCopy(S, 1, 8)Маша ела

Функция Concat (S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку. Пример:

 

ВыражениеРезультатConcat('Маша ', 'ела ', 'кашу')'Маша ела кашу'

Функция Length (S) определяет текущую длину строки S. Результат значение целого типа. Пример:

 

Значение SВыражениеРезультат'test-5'Length(S)6'(A+B)*C'Length(S)7

Функция Pos (S1, S2) обнаруживает первое появление в строке S2 подстроки S1. Результат целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0. Пример:

 

Значение S2ВыражениеРезультат'abcdef'Pos('cd', S2)3'abcdcdef'Pos('cd', S2)3'abcdef'Pos('k', S2)0

Процедура Delete (S, Poz, N) удаление N символов из строки S, начиная с позиции Poz. В результате выполнения процедуры уменьшается текущая длина строки в переменной S. Пример:

 

Исходное значение SОператорКонечное значение S'abcdefg'Delete(S, 3, 2)'abefg''abcdefg'Delete(S, 2, 6)'a'

Процедура Insert (S1, S2, Poz) вставка строки S1 в строку S2, начиная с позиции Poz. Пример:

 

Исходное значение SОператорКонечное значение S'abcdefg'Delete(S, 3, 2)'abefg''abcdefg'Delete(S, 2, 6)'a'

Для примера описания строкового типа данных приведем пару примеров:

  1. программа выводит на экран длину введенной пользователем строковой величины.

Program Str1;

Var

S : String;

Begin

Writeln('Введите последовательность символов');

Readln(S);

Writeln('Вы ввели строку из ',Length(S), ' символов')

End.

  1. Введенную строку вывести на экран по одному символу в строке экрана.

Program Str2;

Var

S : String;

I : Byte;

Begin

Writeln('Введите строку');

Readln(S);

For I:=1 to Length(S) do {организуем цикл, начиная с первого символа}

Writeln(S[I]) {строки, до последнего (номер последнего}

{совпадает с количеством символов строки S) }

End.

Глава II

 

Постановка задачи

 

Написать программу телеграф, который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Вывод точек и тире можно сортировать звуковым сигналом соответствующей длительности

Азбука Морзе для букв русского алфавита приведена ниже:

 

А .-Б -…В .- - Г - - .Д - ..ЕЖ …-З - - ..И ..Й . - - -К - . -Л . - ..М - -Н - .О - - -П . - - .Р . - .С …Т -У .. -Ф .. - .Х ….Ц - . - .Ч - . - - .Ш - - - -Щ - - . -Ъ - .. -Ы - - - .Ь - .. -Э .. - .Ю .. - -Я . - . -

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

 

 

Обоснование выбранного языка программ.

Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 1971г. в качестве языка для обучения программированию. Базой при разработке явился язык Алгол.

Достоинства языка Паскаль:

1) относительная простота (т.к. разрабатывался с целью обучения программированию);

2) идеология языка Паскаль близка к современным методикам и технологиям программирования, в частности, к структурному программированию и нисходящему проектированию (метод пошаговой детализации) программ. Паскаль может использоваться для записи программы на различных уровнях ее детализации, не прибегая к помощи схем алгоритмов;

3) гибкие возможности в отношении используемых структур данных;

4) высокая эффективность программ;

5) наличие средств повышения надежности программ, включающих контроль правильности использования данных различных типов и программных элементов на этапах трансляции, редактирования и выполнения.

В связи с этим язык Паскаль в настоящее время находит самое широкое распространение для решения большого круга разнообразных практических и научных задач.

 

Листинг программы

 

{Телеграф-передача сообщений при помощи азбуки Морзе}

 

Program_Oksana;

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

begin

write (sim [j]);

sound (1000);

case sim[j] of

Похожие работы

< 1 2 3 4 > >>