на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Написание программы "телеграф" на Turbo Pascal
p align="left">В переменную 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

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

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

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

А .-

Б -…

В .- -

Г - - .

Д - ..

Е

Ж …-

З - - ..

И ..

Й . - - -

К - . -

Л . - ..

М - -

Н - .

О - - -

П . - - .

Р . - .

С …

Т -

У .. -

Ф .. - .

Х ….

Ц - . - .

Ч - . - - .

Ш - - - -

Щ - - . -

Ъ - .. -

Ы - - - .

Ь - .. -

Э .. - .

Ю .. - -

Я . - . -

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

14

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

Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 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 являются так называемыми операторными скобками, в которые заключены операторы, входящие в составной оператор. Когда в зависимости от определённого условия, требуется обеспечить последовательное выполнение некоторого набора операторов, без составного оператора не обойтись.

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



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.