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

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

Строковые величины можно сравнивать между собой. Это относится также и к строковым переменным. Но как же компьютер определяет, какая строка больше:               та, которая длиннее?

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

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

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

Выражение

Результат

‘True1’’MOTHER’

True

‘Мама ‘ ‘Мама’

True

‘Cat’=’Cat’

True


Число, записанное в строковую переменную, естественно числом не является, но очень часто требуется его все же использовать в качестве числа. Для этого нужно произвести преобразование типа. Перевод строкового представления числа в числовое выполняет в Паскале оператор 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.

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

 

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


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

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


А  .-

Б  -…

В  .- -

Г - - .

Д  - ..

Е

Ж  …-

З  - - ..

И  ..

Й  . - - -

К  - . -

Л  . - ..

М  - -

Н  - .

О  - - -

П  . - - .

Р  . - .

С  …

Т  -

У  .. -

Ф  .. - .

Х  ….

Ц  - . - .

Ч  - . - - .

Ш  - - - -

Щ  - - . -

Ъ  - .. -

Ы  - - - .

Ь  - .. -

Э  .. - .

Ю  .. - -

Я  . - . -

 

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

 


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

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

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

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

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.