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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?имвола. Если после выполнения оператора 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-5Length(S)6(A+B)*CLength(S)7

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

 

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

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

 

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

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

 

Исходное значение SОператорКонечное значение SabcdefgDelete(S, 3, 2)abefgabcdefgDelete(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]= (

.- , -… , .--- , --. , {А, Б, В, Г}

-.. , . ,…- , --.. , {Д, Е, Ж, З}

{И, Й, К, Л,}

{М, Н, О, П}

{Р, С, Т, У}

{Ф, Х, Ц, Ч}