Курсовая на тему Написание программы телеграф на Turbo Pascal
Работа добавлена на сайт bukvasha.net: 2014-07-19Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Министерство просвещения ПМР
Тираспольский Техникум Информатики и Права
Кафедра Информационных технологий
КУРСОВАЯ РАБОТА
По предмету: “ Основы Алгоритмизации и Программирования”
На тему: “Написать программу на Turbo Pascal- телеграф”.
Регистрационный номер:
«____»__________ 2008г.
Допустить к защите:
«____»__________ 2008г.
Выполнила студентка 212 гр.:
Гайдук Оксана
Проверил преподаватель:
Гаврилович Е.Н.
Тирасполь,2008 г .
Содержание:
Введение
История создания азбуки Морзе.
Сэмюэл Финли Бриз Морзе родился 27 апреля1791 г . в семье известного местного проповедника Джедида Морзе в американском городишке Чарлстаун (шт. Массачусетс). В 1805 г . он поступил в Йельский университет. В 1811 г . Сэмюэл отправляется в Европу для изучения живописи у Вашингтона Олстона. Юноша подавал большие надежды как художник. В 1813 г . он представил в Лондонскую королевскую академию художеств картину "Умирающий Геркулес", удостоенную золотой медали. В 1815 г . - вернулся на родину. Через несколько лет Сэмюэл был признан лидером и кумиром молодых американских художников (его кисти принадлежит знаменитый портрет президента Монро). В 1825 г . он основал в Нью-Йорке общество живописцев (впоследствии - Национальная академия рисунка) и стал его президентом, а в 1829 г . - вновь отправился в Европу для изучения выдающихся произведений живописи и устройства рисовальных школ.
Сэмюэл Морзе
1 октября1832 г . из Гавра в Hью-Йорк вышел парусник "Салли". Его пассажирам знаменитый врач тех времен (открыватель наркоза и новых методов обезболивания в медицине) Чарльз Т. Джексон в салоне первого класса демонстрировал фокус-опыт: вращение стрелки компаса при поднесении к нему куска провода, подсоединенного к гальваническому элементу. Сэмюэл внимательно наблюдал за опытом.
В Европе уже была опубликована книга М. Фарадея и приведенные в ней опыты повторялись во многих лабораториях, а Петербург в начале1832 г . стал свидетелем первых опытов Шиллинга. "Извлечение искр из магнита" казалось непосвященным чудом.
Увиденный опыт натолкнул Морзе на мысль о создании системы передачи сигналов по проводам с использованием сочетаний передачи "искр". Эта идея захватила его. За время месячного плавания домой Морзе набросал несколько чертежей. Следующие три года, работая на чердаке в доме своего брата Ричарда, он посвятил строительству по своим чертежам аппарата, но все попытки оказались безуспешными.
В1835 г . он был назначен на пост профессора живописи в только что открытом Нью-Йоркском университете. А в сентябре 1837 г . Морзе наконец продемонстрировал свое изобретение. Сигнал был послан по проволоке длиной 1700 футов .
Крупный американский промышленник Стив Вейл заинтересовался работой Морзе и согласился пожертвовать 2 000 долл. и предоставить помещение для дальнейших опытов при одном условии - С. Морзе возьмет в помощники его сына Альфреда. Союз младшего Вейла и Морзе оказался плодотворным. Первое сообщение, текст которого гласил: "Чудны дела твои, Господи!", было послано 27 мая1844 г . Для передачи посылок использовался ключ, изобретенный российским ученым Б. С. Якоби, а для приема - электромагнит, якорь которого управлял перемещением по бумаге чернильного пера.
Работая над дальнейшим совершенствованием своего телеграфного аппарата, Сэмюэл Морзе в1838 г . изобрел и код - телеграфную азбуку.
Телеграфная азбука (система кодировки символов короткими и длинными посылками для передачи их по линиям связи, известная как "код Морзе" или "морзянка"), которую применяют сейчас, существенно отличается от той, что изобрел в1838 г . С. Морзе (хотя некоторые исследователи полагают, что ее автором был Альфред Вейл - партнер Сэмюэля Морзе по бизнесу). Надо заметить, что исходная таблица кода Морзе разительно отличалась от тех кодов, что сегодня звучат на любительских диапазонах. В ней, во-первых, использовались посылки трех разных длительностей (точка, тире и длинное тире). Во-вторых, некоторые символы имели паузы внутри своих кодов. Кодировки современной и исходной таблиц совпадают только примерно для половины букв (A, B, D, E, G, H, I, K, M, N, S, T, U, V и W) и не совпадают ни для одной цифры. Более того, для построения кода ряда символов в оригинальной "морзянке" вообще использовались иные принципы.
Так, на ряду с "точками" и "тире", были сочетания "двойное тире" (буква L) и даже "тройное тире" (цифра 0), а некоторые символы включали в себя паузу... Латинская буква С, например, передовалась тогда как "две точки - пауза - точка", т. е., по существу, как буквы И и Е, переданные друг за другом. Это заметно осложняло прием радиограмм. Вот почему вскоре появились различные варианты телеграфной азбуки, не содержавшие кодов с паузами между посылками (Филлипса, Бална, "морской", "континентальный" и. т. д.).
Современный вариант международного кода Морзе (International Morse) появился совсем недавно - в1939 г ., когда была проведена последняя корректировка "континентального" варианта, коснувшаяся в основном знаков препинания. Звучит еще невероятнее, но факт - первоначальный вариант кода Морзе кое-где использовался на железных дорогах до середины 60-х годов XX века!
В1851 г . германская "Комиссия по устройству телеграфа" оценила преимущества аппарата Морзе, и с тех пор он нашел свое широкое применение.
Последние годы С. Морзе жил в Пончкифи (близ Нью-Йорка) и умер 2 апреля1872 г . в богатстве и почете.
Глава I
Теоретическое обоснование задачи
Все языки программирования высокого уровня имеют средства работы с литерными величинами. Паскаль - не исключение. Как нам уже известно, в стандарте языка описаны два типа переменных для литерных величин. Это - String и Char. Тип string и стандартный тип char совместимы. Строки и символы могут употребляться в одних и тех же выражениях. Переменная типа Char может содержать в себе только один единственный символ, тип String предназначен для хранения строковых величин до 255 символов длиною.
Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:
Var <идентификатор>: string[<максимальная длина строки>];
Например: var s: string[n];
var s: string;
n - максимально возможная длина строки - целое число в диапазоне 1..255.
Например: Var Name: string[20].
Если этот параметр опущен, то по умолчанию он принимается равным 255.
Например: Var slovo: string.
Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными. Особенностью строки в Turbo Pascal является то, что с ней можно работать как с массивом символов, с одной стороны, и как с единым объектом, — с другой. За счет этого обработка строк достаточно гибка и удобна.
Строковая константа- есть последовательность символов, заключенная в апострофы.
Например: 'это строковая константа', ‘272’. Строковая переменная описывается в разделе описания переменных следующим образом:
Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.
Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например: N[5], S[i], slovo[k+l]. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.
Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции сравнения.
Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные.
Пример: 'Мама ' + 'мыла ' + 'раму'. В результате получится строка: 'Мама мыла раму'.
Для конкатенации результат зависит от порядка операндов (в отличие от операции сложения). Следует помнить о том, какой максимальной длины может быть результирующая переменная, так как в случае превышения значением выражения числа, указанного после String в описании переменной, "лишние" символы в переменную не попадут.
Строковые величины можно сравнивать между собой. Это относится также и к строковым переменным. Но как же компьютер определяет, какая строка больше: та, которая длиннее?
та, которая содержит больше заглавных букв?
На самом деле такая проверка проходит довольно сложно: компьютер сравнивает сначала первые символы строк. Большим из двух считается тот, код которого больше (вспомните, что такое код символа). Если равны первые символы, то так же анализируется следующая пара до тех пор, пока не будет найдено различие. Если начало строк совпадает, а одна из них кончается раньше, то вторая автоматически называется большей.
Операции сравнения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. Пример:
Число, записанное в строковую переменную, естественно числом не является, но очень часто требуется его все же использовать в качестве числа. Для этого нужно произвести преобразование типа. Перевод строкового представления числа в числовое выполняет в Паскале оператор 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 — целочисленные выражения. Пример:
Функция Concat (S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку. Пример:
Функция Length (S) — определяет текущую длину строки S. Результат — значение целого типа. Пример:
Функция Pos (S1, S2) — обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0. Пример:
Процедура Delete (S, Poz, N) — удаление N символов из строки S, начиная с позиции Poz. В результате выполнения процедуры уменьшается текущая длина строки в переменной S. Пример:
Процедура Insert (S1, S2, Poz) — вставка строки S1 в строку S2, начиная с позиции Poz. Пример:
Для примера описания строкового типа данных приведем пару примеров:
1. программа выводит на экран длину введенной пользователем строковой величины.
Program Str1;
Var
S : String;
Begin
Writeln('Введите последовательность символов');
Readln(S);
Writeln('Вы ввели строку из ',Length(S), ' символов')
End.
2. Введенную строку вывести на экран по одному символу в строке экрана.
Program Str2;
Var
S : String;
I : Byte;
Begin
Writeln('Введите строку');
Readln(S);
For I:=1 to Length(S) do {организуем цикл, начиная с первого символа}
Writeln(S[I]) {строки, до последнего (номер последнего}
{совпадает с количеством символов строки S) }
End.
Глава II
Постановка задачи
Написать программу – телеграф, который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Вывод точек и тире можно сортировать звуковым сигналом соответствующей длительности
Азбука Морзе для букв русского алфавита приведена ниже:
Тираспольский Техникум Информатики и Права
Кафедра Информационных технологий
КУРСОВАЯ РАБОТА
По предмету: “ Основы Алгоритмизации и Программирования”
На тему: “Написать программу на Turbo Pascal- телеграф”.
Регистрационный номер:
«____»__________ 2008г.
Допустить к защите:
«____»__________ 2008г.
Выполнила студентка 212 гр.:
Гайдук Оксана
Проверил преподаватель:
Гаврилович Е.Н.
Тирасполь,
Содержание:
Введение | 3 |
Глава I | 6 |
Теоретическое обоснование задачи | 6 |
Глава II | 13 |
Постановка задачи | 13 |
Блок- схема алгоритма решения задачи | 14 |
Обоснование выбранного языка программирования | 15 |
Листинг программы | 16 |
Инструкция программиста | 19 |
Инструкция пользователя | 23 |
Листинг программы на контрольном примере | 26 |
Заключение | 30 |
Список используемой литературы | 31 |
Введение
История создания азбуки Морзе.
Сэмюэл Финли Бриз Морзе родился 27 апреля
Сэмюэл Морзе
1 октября
В Европе уже была опубликована книга М. Фарадея и приведенные в ней опыты повторялись во многих лабораториях, а Петербург в начале
Увиденный опыт натолкнул Морзе на мысль о создании системы передачи сигналов по проводам с использованием сочетаний передачи "искр". Эта идея захватила его. За время месячного плавания домой Морзе набросал несколько чертежей. Следующие три года, работая на чердаке в доме своего брата Ричарда, он посвятил строительству по своим чертежам аппарата, но все попытки оказались безуспешными.
В
Крупный американский промышленник Стив Вейл заинтересовался работой Морзе и согласился пожертвовать 2 000 долл. и предоставить помещение для дальнейших опытов при одном условии - С. Морзе возьмет в помощники его сына Альфреда. Союз младшего Вейла и Морзе оказался плодотворным. Первое сообщение, текст которого гласил: "Чудны дела твои, Господи!", было послано 27 мая
Работая над дальнейшим совершенствованием своего телеграфного аппарата, Сэмюэл Морзе в
Телеграфная азбука (система кодировки символов короткими и длинными посылками для передачи их по линиям связи, известная как "код Морзе" или "морзянка"), которую применяют сейчас, существенно отличается от той, что изобрел в
Так, на ряду с "точками" и "тире", были сочетания "двойное тире" (буква L) и даже "тройное тире" (цифра 0), а некоторые символы включали в себя паузу... Латинская буква С, например, передовалась тогда как "две точки - пауза - точка", т. е., по существу, как буквы И и Е, переданные друг за другом. Это заметно осложняло прием радиограмм. Вот почему вскоре появились различные варианты телеграфной азбуки, не содержавшие кодов с паузами между посылками (Филлипса, Бална, "морской", "континентальный" и. т. д.).
Современный вариант международного кода Морзе (International Morse) появился совсем недавно - в
В
Последние годы С. Морзе жил в Пончкифи (близ Нью-Йорка) и умер 2 апреля
Глава I
Теоретическое обоснование задачи
Все языки программирования высокого уровня имеют средства работы с литерными величинами. Паскаль - не исключение. Как нам уже известно, в стандарте языка описаны два типа переменных для литерных величин. Это - String и Char. Тип string и стандартный тип char совместимы. Строки и символы могут употребляться в одних и тех же выражениях. Переменная типа Char может содержать в себе только один единственный символ, тип String предназначен для хранения строковых величин до 255 символов длиною.
Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:
Var <идентификатор>: string[<максимальная длина строки>];
Например: var s: string[n];
var s: string;
n - максимально возможная длина строки - целое число в диапазоне 1..255.
Например: Var Name: string[20].
Если этот параметр опущен, то по умолчанию он принимается равным 255.
Например: Var slovo: string.
Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными. Особенностью строки в Turbo Pascal является то, что с ней можно работать как с массивом символов, с одной стороны, и как с единым объектом, — с другой. За счет этого обработка строк достаточно гибка и удобна.
Строковая константа- есть последовательность символов, заключенная в апострофы.
Например: 'это строковая константа', ‘272’. Строковая переменная описывается в разделе описания переменных следующим образом:
Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.
Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например: N[5], S[i], slovo[k+l]. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.
Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции сравнения.
Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные.
Пример: 'Мама ' + 'мыла ' + 'раму'. В результате получится строка: 'Мама мыла раму'.
Для конкатенации результат зависит от порядка операндов (в отличие от операции сложения). Следует помнить о том, какой максимальной длины может быть результирующая переменная, так как в случае превышения значением выражения числа, указанного после String в описании переменной, "лишние" символы в переменную не попадут.
Строковые величины можно сравнивать между собой. Это относится также и к строковым переменным. Но как же компьютер определяет, какая строка больше: та, которая длиннее?
та, которая содержит больше заглавных букв?
На самом деле такая проверка проходит довольно сложно: компьютер сравнивает сначала первые символы строк. Большим из двух считается тот, код которого больше (вспомните, что такое код символа). Если равны первые символы, то так же анализируется следующая пара до тех пор, пока не будет найдено различие. Если начало строк совпадает, а одна из них кончается раньше, то вторая автоматически называется большей.
Операции сравнения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. Пример:
Выражение | Результат |
‘True1’’MOTHER’ | True |
‘Мама ‘ ‘Мама’ | True |
‘Cat’=’Cat’ | True |
Его формат: 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('Маша ', 'ела ', 'кашу') | 'Маша ела кашу' |
Значение S | Выражение | Результат |
'test-5' | Length(S) | 6 |
'(A+B)*C' | Length(S) | 7 |
Значение S2 | Выражение | Результат |
'abcdef' | Pos('cd', S2) | 3 |
'abcdcdef' | Pos('cd', S2) | 3 |
'abcdef' | Pos('k', S2) | 0 |
Исходное значение S | Оператор | Конечное значение S |
'abcdefg' | Delete(S, 3, 2) | 'abefg' |
'abcdefg' | Delete(S, 2, 6) | 'a' |
Исходное значение 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.
2. Введенную строку вывести на экран по одному символу в строке экрана.
Program Str2;
Var
S : String;
I : Byte;
Begin
Writeln('Введите строку');
Readln(S);
For I:=1 to Length(S) do {организуем цикл, начиная с первого символа}
Writeln(S[I]) {строки, до последнего (номер последнего}
{совпадает с количеством символов строки S) }
End.
Глава II
Постановка задачи
Написать программу – телеграф, который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Вывод точек и тире можно сортировать звуковым сигналом соответствующей длительности
Азбука Морзе для букв русского алфавита приведена ниже:
А .- | Б -… | В .- - | Г - - . |
Д - .. | Е | Ж …- | З - - .. |
И .. | Й . - - - | К - . - | Л . - .. |
М - - | Н - . | О - - - | П . - - . |
Р . - . | С … | Т - | У .. - |
Ф .. - . | Х …. | Ц - . - . | Ч - . - - . |
Ш - - - - | Щ - - . - | Ъ - .. - | Ы - - - . |
Ь - .. - | Э .. - . | Ю .. - - | Я . - . - |
Блок- схема алгоритма решения задач.
SHAPE \* MERGEFORMAT
начало |
Ввод букв |
перевод букв в символы азбуки Морзе |
выводит перевод букв в виде точек и тире |
конец. |
Обоснование выбранного языка программ.
Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 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
‘.’: 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
Составной оператор представляет собой последовательность некоторых операторов, выполняющихся в том порядке, в каком они представлены в тексте программы.
Program<Имя программы>;
<Раздел описаний>
Begin
<Тело программы>
End.
Зарезервированные слова Begin и End являются так называемыми операторными скобками, в которые заключены операторы, входящие в составной оператор. Когда в зависимости от определённого условия, требуется обеспечить последовательное выполнение некоторого набора операторов, без составного оператора не обойтись.
Условный оператор If и Case
Если в программе, в зависимости от некоторого условия, требуется выбрать тот или иной вариант действий, можно воспользоваться одним из условных операторов. В Turbo Pascal предусмотрены два условных оператора- If и Case.
Работа Case такова. Сначала вычисляется значение селектора, следующего за словом Case. Затем выполняется оператор с константой выбора, равной значению селектора. Если ни одна из констант не равна текущему значению селектора, то исполняется оператор, стоящий после слова Еlse. Часть Еlse <оператор> в тексте программы можно опустить. Тогда, если среди констант селектора нужное значение отсутствует, выполнение оператора Case ни к чему не приведет.
Case <выбор селектора> of
<метка 1>: <оператор 1>;
.
.
.
<метка n>:<оператор n>;
else <оператор>;
end;
Если необходимо выбрать одно из возможных действий в зависимости от некоторого условия, применяют условный оператор if.. then..else. Во многих программах, в зависимости от некоторого условия, часто требуется выполнить не одно, а последовательность действий. Однако оператор If в Turbo Pascal обеспечивает выполнение единственного оператора, присутствующего после зарезервированного слова Then или Else.
If <условие> then <оператор 1> else <оператор 2>;
Процедуры записи Write, Writeln.
Использование процедуры Write для типизированных файлов заключаются в присвоении значения некоторой переменной компоненту файла. После записи каждой переменной, указатель текущей позиции файла перемещается к следующему элементу. Если указатель находится в конце файла, то при записи очередного элемента дополняет файл.
Процедура Write отличается от Writeln тем, что после выполнения действий, присущих процедуре Write, осуществляется запись в файл маркера конца строки. При этом файл, к которому применяется процедура Writeln, должен быть открыт для записи. Если процедура Writeln не содержит никаких аргументов, то она осуществляет просто перевод строки.
Процедура чтения Read, Readln.
В Паскале для ввода данных предусмотрена процедура чтения Read. Использование данной процедуры для текстовых файлов заключается в считывании одного или нескольких значений файла и присвоении считанного значения переменной, указанной при вызове процедуры.
Read отличается от процедуры Readln только тем, что после выполнения действий, присущих процедуре Read, осуществляется переход к следующей строке файла.
В случае, когда в программе имеется несколько операторов Read, данные для них будут набираться в одной строке. Переход на следующую строку произойдет, когда окончится текущая строка. Однако в Паскале предусмотрено считывание данных из отдельной строки с помощью процедуры Readln. После считывания последнего значения из списка этой процедуры следующие данные будут считываться с начала новой строки.
Оператор Repeat until.
Оператор цикла, Repeat, известный как оператор цикла с постусловием, имеет вид:
Repeat
<оператор #1>;
<оператор #2>;
<оператор #3>;
. . .
Until <условие>;
Здесь не требуется использование составного оператора, потому, что сами слова Repeat и Until являются операторными скобками.
Этот вид цикла отличается от других в основном тем, что проверка условия повторения тела цикла находится не перед ним, а после. Поэтому цикл "До" называют циклом "с постусловием", а "Пока" - "с предусловием".
Повторное выполнение тела цикла происходит не тогда, когда условие справедливо, а как раз тогда, когда оно ложно. Поэтому цикл и получил свое название (выполнять тело цикла до выполнения соответствующего условия).
Когда условие цикла изначально истинно, тело цикла все равно будет выполнено хотя бы один раз. Именно это отличие "до" от "пока" привело к тому, что в программировании они не подменяют друг друга, а используются для решения задач, к которым они более подходят.
Оператор For to do.
В данном случае параметром будет являться целочисленная переменная, которая будет изменяться на единицу при каждой итерации цикла. Таким образом, задав начальное и конечное значения для такой переменной, можно точно установить количество выполнений тела цикла.
Форматов у этого вида цикла предусмотрено два:
For <И.П.>:=<Н.З.> To <К.З.> Do <оператор>;
For <И.П.>:=<Н.З.> Downto <К.З.> Do <оператор>;
Здесь И.П. - имя переменной-параметра, Н.З. - его начальное значение, К.З. - соответственно конечное значение параметра. В качестве начального и конечного значений.
Выполняется этот цикл по следующему алгоритму:
1. переменной-параметру присваивается начальное значение;
2. выполняется тело цикла;
3. переменная-параметр автоматически увеличивается на 1 (в первом случае формата);
4. если параметр превышает конечное значение, то происходит выход из цикла, иначе - переход к пункту 2.
Инструкция пользователя
Работа в среде программирования Turbo Pascal начинается с загрузки её в память компьютера. Система Турбо Паскаль довольно значительна по объему. Она поставляется на нескольких дистрибутивных дискетах и устанавливается на жесткий диск. При развертывании системы на жестком диске обычно создается отдельный каталог с именем ТР (или PAS, TURBOPAS, PASCAL и т.п.), в который помещаются все файлы с дистрибутивных дискет. Для вызова Турбо Паскаля необходимо отыскать в древовидной структуре каталогов ПК этот каталог и в нем файл с именем TURBO.EXE. Этот файл содержит готовую к работе диалоговую систему программирования Турбо Паскаль. В него входят минимально необходимые части Турбо Паскаля (текстовый редактор, компилятор, компоновщик, загрузчик). Для нормальной работы в диалоговой среде понадобятся также основная библиотека, располагающаяся в файле TURBO.TPL, и справочная служба (файл TURBO.HLP). В принципе, этих файлов достаточно для написания, компиляции и исполнения большинства примеров.
Пусть перечисленные файлы располагаются в каталоге ТР на диске D. Тогда для вызова Турбо Паскаля следует дать команду
D:\TP\TURBO
Для запуска Turbo Pascal необходимо перейти на диск в каталог с системой Turbo Pascal и дважды щёлкнуть по файлу Turbo.exe. После загрузки на экране появится окно редактирования Turbo Pascal.
В верхней части окна редактирования Turbo Pascal размещается меню, состоящее из опций: File (управление файлами), Edit (редактирование текста программы), Search (поиск и замена текста), Run (выполнение программы в различных режимах), Compile (компиляция, создание exe-файла), Debug (отладка программы), Tools (отладочные команды сообщения), Options (настройка среды программирования), Window (управление окнами), Help (доступ к встроенной справочной системе). Команды меню можно выбирать с помощью клавиатуры (F10 и клавиши управления курсором) либо мышью (щелчок по нужной опции меню).
Центральную часть окна занимает рабочая область, предназначенная для работы с текстом программ. В нижней части окна расположена строка статуса, в которую вводится информация о выполняемой в данный момент операции. В строке статуса отображаются также функциональные клавиши и комбинации клавиш, допустимые в данный момент в активном окне (F1-Help, F2-Save и т.д. ). Над строкой статуса в разрыве рамки окна указываются координаты курсора: номера редактируемой строки и позиции в строке, например, 6:11. Помимо этого имеются ещё вертикальные и горизонтальные полосы прокрутки, кнопка закрытия окна и др.
Не рекомендуется работать с системой, назначив в качестве каталога по умолчанию (текущего каталога) тот, в котором хранятся перечисленные выше файлы (этот каталог будем называть системным). Во-первых, в таком случае можно ошибочно стереть какой—либо из файлов системы программирования и тем самым нарушить ее работоспособность, а во-вторых, этот каталог очень скоро заполнится другими файлами, прямо не относящимися к Турбо Паскалю. Существует и еще одна причина, по которой нежелательно работать в системном каталоге. Дело в том, что Турбо Паскаль имеет свойство «запоминать» свою настройку в двух файлах с именами TURBO.TP и TURBO.PCK. При вызове система начинает поиск этих файлов в текущем каталоге. Если этот каталог — индивидуальный, система всякий раз будет настраиваться так, как этого хочешь. Если эти файлы не обнаружены в каталоге (а при первом обращении к Турбо Паскалю так оно и будет), система продолжит поиск в системном каталоге, а не найдя их там, настроится стандартным образом. Впоследствии можно сохранить настроечные файлы в своем каталоге и тем самым избавить себя от необходимости перенастройки системы всякий раз при обращении к ней.
. В Турбо Паскале можно работать одновременно с несколькими программами (или частями одной крупной программы), каждая из которых может располагаться в отдельном окне редактора. Среда позволяет использовать до девяти окон редактора одновременно.
Кроме окна (окон) редактора, в Турбо Паскале используются также окна: отладочного режима, вывода результатов работы программы, справочной службы, стека, регистров. По желанию они могут вызываться на экран поочередно или присутствовать на нем одновременно.
Для выхода из Турбо Паскаля следует нажать клавишу Alt и, не отпуская ее, — клавишу с латинской буквой X, после чего можно отпустить обе клавиши.
Листинг программы на контрольном примере.
Для начала заходим в программу Turbo Pascal, затем набираем заданную программу.
Рис.1
Рис.2
Рис.3
Рис.4
После того, как мы набрали программу, мы проверяем на наличие ошибок, нажав при этом комбинацию клавиш Alt + F9.
Рис.5
После проверки на ошибки мы переходим к следующему этапу, нажав комбинацию Ctrl + F9, после чего появляется окно, которое просит ввести сообщение.
Рис.6
Рис.7
Рис.8
Для возвращения к программе мы нажимаем Enter. Чтобы просмотреть результат набранного сообщения используется комбинация Alt + F5. Для полного выхода из программы нажимаем Alt+ X.
Заключение
Программа написана на языке Turbo Pascal. Этот язык представляет мощное инструментальное средство написания прикладных программ, которое можно использовать в реальной работе. Turbo Pascal является средой разработки Программного Обеспечения фирмы Borland. ПО в среде Turbo Pascal реализуется на процедурно- ориентированном языке Паскаль. Расширение языка Turbo Pascal предоставляет все возможности объектно-ориентированного программирования: наибольшую структурность, абстрактность, модульность, встроенные непосредственно в язык.
В Delphi упор ставится на написание ПО под Windows, много возможностей и легко запутаться. Программы, разработанные на TURBO Pascal, компактны, и занимают мало места на жестком диске. Современные технологии программирования, такие как Delphi, в буквальном смысле слова ”стоят на плечах” TP.
Неизвестно что и когда может пригодиться в жизни. Азбука Морзе широко используется на международном уровне.
Ознакомившись с программой, пользователь, возможно, заинтересуется данной системой передачи сигналов, и в дальнейшем захочет знать и применять код Морзе.
Список литературы:
1. Turbo Pascal для студентов и школьников - СПб.: БЧВ- Петербург, 2004. - 352с.: ил. (Г.Г. Рапаков, С.Ю. Ржеуцкая)
2. Turbo Pascal для школьников. Версия 7.0. - М.: Финансы и статистика, 1996. - 446с. (Попов В.Б.)
3. О.А. Меженный: Turbo Pascal. Учитесь программировать. Санкт- Петербург, 2001 год.
4. Информатика, 7- 11 класс. Киев, 2004. Гаевский А.Ю.
5. Turbo Pascal: Учись программировать. 2002. – 448с.: ил.(Меженный О.А.)