Вы находитесь на странице: 1из 7

Министерство просвещения ПМР

Тираспольский Техникум Информатики и Права


Кафедра Информационных технологий

КУРСОВАЯ РАБОТА
По предмету: “ Основы Алгоритмизации и Программирования”
На тему: “Написать программу на Turb Pascal- телеграф”.

Регистрационный номер:
«____»__________ 2008г.
Допустить к защите:
«____»__________ 2008г.
Выполнила студентка 212 гр.:
Гайдук Оксана
Проверил преподаватель:
Гаврилович Е.Н.

Тирасполь, 2008 г.
Содержание:
Введение 3
Глава I 6
Теоретическое обоснование задачи 6
Глава II 13
Постановка задачи 13
Блок- схема алгоритма решения задачи 14
Обоснование выбранного языка программирования 15
Листинг программы 16
Инструкция программиста 19
Инструкция пользователя 23
Листинг программы на контрольном примере 26
Заключение 30
Список используемой литературы 31

Введение
История создания азбуки Морзе.
Сэмюэл Финли Бриз Морзе родился 27 апреля 1791 г. в семье известного местного проповедника
Сэмюэл Морзе  
1 октября 1832 г. из Гавра в Hью-Йорк вышел парусник Салли . Его пассажирам знаменитый вра
В Европе уже была опубликована книга М. Фарадея и приведенные в ней опыты повторялись во мн
Увиденный опыт натолкнул Морзе на мысль о создании системы передачи сигналов по проводам с
В 1835 г. он был назначен на пост профессора живописи в только что открытом Нью-Йоркском ун
Крупный американский промышленник Стив Вейл заинтересовался работой Морзе и согласился поже
Работая над дальнейшим совершенствованием своего телеграфного аппарата, Сэмюэл Морзе в 1838
Телеграфная азбука (система кодировки символов короткими и длин-ными посылками для передачи
      
Так, на ряду с точками и тире , были сочетания двойное тире (буква L) и даже тройное
Современный вариант международного
 кода Морзе (Internati
 nal M rse) появился совсем недавно
В 1851 г. германская Комиссия по устройству телеграфа оценила преимущества аппарата Морзе
Последние годы С. Морзе жил в Пончкифи (близ Нью-Йорка) и умер 2 апреля 1872 г. в богатстве
Глава I
Теоретическое обоснование задачи
Все языки программирования высокого уровня имеют средства работы с литерными величинами. Па
Строкой в Паскале называется последовательность из определенного количества символов. Колич
Var <идентификатор>: string[<максимальная длина строки>];
Например: var s: string[n];
var s: string;
n - максимально возможная длина строки - целое число в диапазоне 1..255.
Например: Var Name: string[20].
Если этот параметр опущен, то по умолчанию он принимается равным 255.
Например: Var sl v : string.
Количество символов в строке называется ее длиной. Длина строки может находиться в диапазон
Строковая константа- есть последовательность символов, заключенная в апострофы.
Например: 'это строковая константа', ‘272’. Строковая переменная описывается в разделе опис
Строковая переменная занимает в памяти на 1 байт больше, чем ука-занная в описании длина. Д
Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ иденти
Строковые выражения строятся из строковых констант, переменных, функций и знаков операций.
Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну ре
Пример: 'Мама ' + 'мыла ' + 'раму'. В результате получится строка: 'Мама мыла раму'.
Для конкатенации результат зависит от порядка операндов (в отличие от операции сложения). С
Строковые величины можно сравнивать между собой. Это относится также и к строковым переменн
та, которая содержит больше заглавных букв?
На самом деле такая проверка проходит довольно сложно: компьютер сравнивает сначала первые
Операции сравнения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в резу
Выражение Результат
‘True1’’MOTHER’ True
‘Мама ‘ ‘Мама’ True
‘Cat’=’Cat’ True
Число, записанное в строковую переменную, естественно числом не является, но очень часто тр
Его формат: Val (S,X,C);
Здесь S - строка, содержащая число, X - числовая переменная, в которую будет помещен резуль
Противоположное действие осуществляет оператор Str. Формат оператора: Str(X,S);
X - число (либо арифметическое выражение), S - строковая переменная.
В переменную S попадает строковое представление
 числа X. Это нужно, например, при необходим

Для иллюстрации рассмотрим задачу: Найти сумму цифр введенного натурального числа .
Pr gram Str5;
Var
S : String;
I,X,A,C : Integer;
Begin
Writeln('Введите натуральное число');
Readln(S); {Число вводится в строковую переменную}
A:=0;
F r I:=1 T Length(S) D
Begin
Val(S[I],X,C); {Цифровой символ превращается в число}
A:=A+X {Цифры суммируются}
End;
Writeln('Сумма цифр равна ',A)
End.
Стандартные процедуры и функции.
Рассмотрим наиболее важные процедуры и функции, предназначенные для обработки строк:
Функция C py (S, P ziti n, N) копирует из строки S подстроку длиной N символов, начиная с
Значение S Выражение Результат
‘Мама мыла раму’ Copy(S, 6, 4) ‘мыла’
‘Маша ела кашу’ Copy(S, 1, 8) ‘Маша ела’
Функция C ncat (S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одн
Выражение Результат
C ncat('Маша ', 'ела ', 'кашу') 'Маша ела кашу'
Функция Length (S) — определяет текущую длину строки S. Резуль-тат — значение целого типа.
Значение S Вы-ражение Ре-зультат
'test-5' Length(S) 6
'(A+B)*C' Length(S) 7
Функция P s (S1, S2) — обнаруживает первое появление в строке S2 подстроки S1. Результат —
Значение S2 Вы-ражение Ре-зультат
'abcdef' P s('cd', S2) 3
'abcdcdef' P s('cd', S2) 3
'abcdef' P s('k', S2) 0
Процедура Delete (S, P z, N) — удаление N символов из строки S, начиная с позиции P z. В ре
Исходное значение S Оператор Конечное значение S
'abcdefg' Delete(S, 3, 2) 'abefg'
'abcdefg' Delete(S, 2, 6) 'a'
Процедура Insert (S1, S2, P z) — вставка строки S1 в строку S2, начиная с позиции P z. Прим
Исходное значение S Оператор Конечное значение S
'abcdefg' Delete(S, 3, 2) 'abefg'
'abcdefg' Delete(S, 2, 6) 'a'
Для примера описания строкового типа данных приведем пару примеров:
1. программа выводит на экран длину введенной пользователем строковой величины.
Pr gram Str1;
Var
S : String;
Begin
Writeln('Введите последовательность символов');
Readln(S);
Writeln('Вы ввели строку из ',Length(S), ' символов')
End.
2. Введенную строку вывести на экран по одному символу в строке экрана.
Pr gram Str2;
Var
S : String;
I : Byte;
Begin
Writeln('Введите строку');
Readln(S);
F r I:=1 t Length(S) d {организуем цикл, начиная с первого симво-ла}
Writeln(S[I]) {строки, до последнего (номер последнего}
{совпадает с количеством символов строки S) }
End.
Глава II
Постановка задачи
Написать программу – телеграф, который принимает от пользователя сообщения и выводит его на
Азбука Морзе для букв русского алфавита приведена ниже:
А .- Б -… В .- - Г - - .
Д - .. Е Ж …- З - - ..
И .. Й . - - - К - . - Л . - ..
М - - Н - . О - - - П . - - .
Р . - . С … Т - У .. -
Ф .. - . Х …. Ц - . - . Ч - . - - .
Ш - - - - Щ - - . - Ъ - .. - Ы - - - .
Ь - .. - Э .. - . Ю .. - - Я . - . -

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

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


Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан амер
Достоинства языка Паскаль:
1) относительная простота (т.к. разрабатывался с целью обучения программированию);
2) идеология языка Паскаль близка к современным методикам и технологиям программирования, в
3) гибкие возможности в отношении используемых структур данных;
4) высокая эффективность программ;
5) наличие средств повышения надежности программ, включающих контроль правильности использо
В связи с этим язык Паскаль в настоящее время находит самое широкое распространение для реш
Листинг программы
{Телеграф-передача сообщений при помощи азбуки Морзе}
Pr gram_Oksana;
Uses Crt;
C nst
M rse: array[128..159] f [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);
f r i=1 t Length (mes) d
begin
if (mes [i] > = ‘A’) and (mes[i] <= ’Я’) then
begin
{определим код очередной буквы (функция rd) сообщения и получим из таблицы кодировки соотв
sim := m rse [ rd (mes[i])];
j :=1;
repeat
if (sim[j]= ‘-’ ) or (sim[j]= ‘.’ ) then
begin
write (sim [j]);
sound (1000);
case sim[j] of
‘.’: Delay (50);
‘_’: Delay (100);
end;
Nosound;
Delay (50);
end;
j:=j+1;
until ((sim[j]=’ ‘ ) or (j>4));
Delay (100); {пауза между буквами}
end
else
if mes [i]= ‘ ‘ then {пробел между символами}
begin
write (‘ ‘); {пробел между словами сообщения}
Delay (150);
end;
end;
writeln 
writeln (‘ Сообщение передано ‘);
writeln (‘ Для завершения работы с программой нажмите ‘, ‘<Enter>’);
readln;
end.
Инструкция программиста
В данной программе были использованы различные функции, операторы, процедуры. Такие как:
Составной оператор Begin и End
Составной оператор представляет собой последовательность некото-рых операторов, выполняющих
Pr gram<Имя программы>;
<Раздел описаний>
Begin
<Тело программы>
End.
Зарезервированные слова Begin и End являются так называемыми операторными скобками, в кото
Условный оператор If и Case
Если в программе, в зависимости от некоторого условия, требуется выбрать тот или иной вариа
Работа Case такова. Сначала вычисляется значение селектора, следующего за словом Case. Зате
Case <выбор селектора> f
<метка 1>: <оператор 1>;
.
.
.
<метка n>:<оператор n>;
else <оператор>;
end;
Если необходимо выбрать одно из возможных действий в зависимости от некоторого условия, при
If <условие> then <оператор 1> else <оператор 2>;
Процедуры записи Write, Writeln.
Использование процедуры Write для типизированных файлов заключаются в присвоении значения н
Процедура Write отличается от Writeln тем, что после выполнения действий, присущих процедур
Процедура чтения Read, Readln.
В Паскале для ввода данных предусмотрена процедура чтения Read. Использование данной процед
Read отличается от процедуры Readln только тем, что после выполнения действий, присущих про
В случае, когда в программе имеется несколько операторов Read, данные для них будут набират
Оператор Repeat until.
Оператор цикла, Repeat, известный как оператор цикла с постусловием, имеет вид:
Repeat
<оператор 1>;
<оператор 2>;
<оператор 3>;
. . .
Until <условие>;
Здесь не требуется использование составного оператора, потому, что сами слова Repeat и Unti
Этот вид цикла отличается от других в основном тем, что проверка условия повторения тела ци
Повторное выполнение тела цикла происходит не тогда, когда условие справедливо, а как раз т
Когда условие цикла изначально истинно, тело цикла все равно будет выполнено хотя бы один р
Оператор F r t d .
В данном случае параметром будет являться целочисленная перемен-ная, которая будет изменять
Форматов у этого вида цикла предусмотрено два:
F r <И.П.>:=<Н.З.> T <К.З.> D <оператор>;
F r <И.П.>:=<Н.З.> D wnt <К.З.> D <оператор>;
Здесь И.П. - имя переменной-параметра, Н.З. - его начальное значение, К.З. - соответственно
Выполняется этот цикл по следующему алгоритму:
1. переменной-параметру присваивается начальное значение;
2. выполняется тело цикла;
3. переменная-параметр автоматически увеличивается на 1 (в первом случае формата);
4. если параметр превышает конечное значение, то происходит выход из цикла, иначе - переход
Инструкция пользователя
Работа в среде программирования Turb Pascal начинается с загрузки её в память компьютера.
Пусть перечисленные файлы располагаются в каталоге ТР на диске D. Тогда для вызова Турбо Па
D:\TP\TURBO
Для запуска Turb Pascal необходимо перейти на диск в каталог с системой Turb Pascal и два

В верхней части окна редактирования Turb Pascal размещается меню, состоящее из опций: File
Центральную часть окна занимает рабочая область, предназначенная для работы с текстом прогр
Не рекомендуется работать с системой, назначив в качестве каталога по умолчанию (текущего к
. В Турбо Паскале можно работать одновременно с несколькими программами (или частями одной
Кроме окна (окон) редактора, в Турбо Паскале используются также окна: отладочного режима, в
Для выхода из Турбо Паскаля следует нажать клавишу Alt и, не отпуская ее, — клавишу с латин
Листинг программы на контрольном примере.
Для начала заходим в программу Turb Pascal, затем набираем заданную программу.
Рис.1

Рис.2
Рис.3

Рис.4
После того, как мы набрали программу, мы проверяем на наличие ошибок, нажав при этом комбин

Рис.5
После проверки на ошибки мы переходим к следующему этапу, нажав комбинацию Ctrl + F9, посл

Рис.6

Рис.7

Рис.8
Для возвращения к программе мы нажимаем Enter. Чтобы просмотреть результат набранного сообщ

Заключение
Программа написана на языке Turb Pascal. Этот язык представляет мощное инструментальное ср
В Delphi упор ставится на написание ПО под Wind ws, много возможностей и легко запутаться.
Неизвестно что и когда может пригодиться в жизни. Азбука Морзе широко используется на межд
Ознакомившись с программой, пользователь, возможно, заинтересуется данной системой передач

Список литературы:
1. Turb Pascal для студентов и школьников - СПб.: БЧВ- Петербург, 2004. - 352с.: ил.
2. Turb Pascal для школьников. Версия 7.0. - М.: Финансы и стати-стика, 1996. - 446с.
3. О.А. Меженный: Turb Pascal. Учитесь программировать. Санкт- Пе-тербург, 2001 год.
4. Информатика, 7- 11 класс. Киев, 2004. Гаевский А.Ю.
5. Turb Pascal: Учись программировать. 2002. – 448с.: ил.(Меженный О.А.)

Оценить