Язык программирования Turbo Pascal 7.0

История развития языков программирования. Понятие алгоритма и схемы алгоритмов. Характеристика языка Turbo Pascal. Классификация типов данных и операторов языка Turbo Pascal 7.0. Использование процедур и функций в программах. Программы обработки данных.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 13.06.2016
Размер файла 515,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

5. Какие стандартные функции Turbo Pascal 7.0 Вам известны?

6. Какие операторы используются для ввода и вывода данных?

7. Для чего в программах используют оператор безусловного перехода? Перечислите безусловные функции Turbo Pascal 7.0.

8. Дайте характеристику условного оператора, его формата и схемы работы.

9. Дайте характеристику оператора выбора, его формата и схемы работы.

10. Что такое цикл и какая программа называется циклической?

11. Дайте характеристику схемы цикла.

12. Какие виды циклов Вы знаете?

13. Приведите общую форму записи цикла со счетчиком, цикла с предусловием, цикла с постусловием. Каковы их особенности?

5. Процедуры и функции

5.1 Использование процедур и функций в программах

Чтобы программы было проще понимать и записывать, следует делать их более компактными. Для этого в языке программирования Turbo Pascal имеются средства, позволяющие разбивать программу на логически связанные блоки (подпрограммы), каждый из которых решает некоторую подзадачу и могут выполняться в программе неоднократно. Это процедуры и функции.

Процедуры и функции - это законченные программные единицы, имеющие собственное имя, которые решают некоторую подзадачу.

Процедуры и функции помещаются в раздел описаний программы сразу же после описания переменных и перед словом Begin, указывающим начало ее основной части.

Структура описания процедур и функций до некоторой степени похожа на структуру программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Более подробно структура процедуры рассмотрена в соответствующих разделах. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, переменных. Исполняемая часть содержит собственно операторы процедуры или функции.

Если две подпрограммы, описанные на одном уровне, содержат взаимные вызовы друг друга, то используется механизм предварительных описаний.

Предварительное описание содержит заголовок подпрограммы, а вместо тела записывается служебное слово Forward. В этом случае заголовок полного описания может быть записан без списка параметров и (для функций) без типа результата.

Procedure A(X,Y: Real): Forward;

Procedure B(A,B: Integer): Forward;

. . . . . . . . .

Procedure A;

Begin

. . . . . . . .

End;

Procedure B;

Begin

. . . . . . . .

End;

Процедуры и функции различаются назначением и способом использования.

На вход подпрограммы в качестве исходных данных поступает совокупность параметров - аргументов, а на выходе формируются параметры - результаты. Причем процедура позволяет получить один или несколько результатов, а функция - только один.

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

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

Формальные параметры в заголовке процедур и функций записываются в виде и отделяются друг от друга точкой с запятой:

var имя параметра: имя типа

Ключевое слово var может отсутствовать. Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type. Список формальных параметров может отсутствовать.

Допустимы способы задания формальных параметров:

1. Параметры-значения - параметры, перед которыми отсутствует служебное слово Var и за которыми следует идентификатор типа.

Это наиболее распространенный и простой способ. Параметр - обычная локальная переменная. Любые действия внутри подпрограммы никак не отражаются на значениях переменной вне подпрограммы.

2. Параметры-переменные - параметр, перед которым ставиться слово Var и далее тип.

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

При этом фактические параметры должны быть переменными (не выражениями) того же типа, что и формальные параметры.

Переменные файловых типов могут передаваться в подпрограмму только как параметры - переменные.

3. Безтиповые параметры - это параметры со словом Var и не имеющие типа.

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

Единственным способом использования таких параметров является «наделение» их определённым типом.

К процедурам и функциям обращаются (их вызывают) из главной программы по имени с указанием фактических параметров.

Правила вызова процедур и функций:

o количество фактических параметров должно совпадать с количеством формальных;

o соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

Имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

5.2 Процедуры

Формат описания процедуры имеет вид:

PROCEDURE имя процедуры (формальные параметры);

раздел описаний процедуры

BEGIN

исполняемая часть процедуры - операторы;

END;

Формальные параметры - это список, который содержит имена переменных, массивов и типов, являющихся исходными данными и результатами процедуры. Он может отсутствовать. Элементы списка параметров описываются полностью, с указанием типов.

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

Формальные параметры - это просто объекты, которые позволяют описать, что будет делать процедура. Сами действия будут выполняться над теми значениями объектов, которые передаются процедуре при ее вызове. Поэтому при вызове процедуры должны соблюдаться следующие требования:

- количество передаваемых фактических параметров должно равняться количеству описанных в процедуре формальных параметров.

- порядок следования фактических параметров и их типы должны соответствовать порядку следования и типам формальных параметров. Это, в частности означает, что массивы должны иметь одинаковую размерность и содержать данные одного типа.

Параметры процедур делятся на 2 класса:

1) параметры-значения;

Параметр-значение используется в процедуре, но после окончания ее работы не изменяется. Как правило, это аргумент (исходное данное) процедуры.

2) параметры-переменные.

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

В заголовке параметру-переменной должен предшествовать описатель (слово) Var.

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры (список фактических параметров);

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

После выполнения процедуры происходит возврат в основную программу к оператору, стоящему после вызывающего.

5.3 Функции

Формат описания функции имеет вид:

FUNCTION имя функции (формальные параметры):тип результата;

раздел описаний функции

BEGIN

исполняемая часть функции

. . . . . . . .

Имя функции := Выражение;

END;

Формальные параметры - это аргументы функции. Они могут отсутствовать. Результат передается через имя функции, поэтому в заголовке указывается тип результата.

Для вычисления значения функции с конкретным параметром ее, как и процедуру, вызывают из основной программы с указанием фактических параметров-аргументов.

Вызов функции производится оператором, имеющим следующий формат:

имя функции (список фактических параметров);

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

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

имя функции := выражение;

Именно это значение и будет возвращено функцией в качестве результата.

Таких операторов может быть несколько, важно чтобы хотя бы один всегда срабатывал в процессе выполнения тела функции.

В теле функции могут использоваться (вызываться) и другие функции, стандартные или написанные пользователем.

После этого происходит возврат в вызывающий блок.

Смысл функции заключается в задании алгоритма вычисления некоторого значения и организации возврата этого значения в точку вызова.

В отличие от процедуры имя функции может встречаться в выражениях в качестве операнда. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д. Когда выражение вычисляется, функция выполняется и значением операнда становится величина, возвращаемая функцией.

Формальные параметры функции могут быть только параметрами-значениями. При ее вычислении они не изменяются.

Аргументы функции могут быть любых типов:

1) скалярные - числа, символы, булевские;

2) массивы;

3) другие типы.

Сама функция (результат) имеет только скалярный тип, (т.е. число - целое или вещественное, а также символ или булевская переменная).

К функции можно обращаться из основной программы; из другой функции и из самой себя.

Функции, которые вызывают сами себя, называются рекурсивными. Такие функции часто встречаются в математике, например, вычисление факториала, возведение числа в целую степень и др. Для рекурсивных функций необходимо вырабатывать условие завершения (иначе произойдет зацикливание).

Запишем рекурсивную функцию вычисления факториала.

Program recurs;

Var X,Y:integer;

Function Fact (K:Integer):LongInt;

Begin

If K=0 Then Fact := 1

Else Fact:= K*Fact(K-1);

End;

Begin

Writeln('Введите X');

Readln(X);

Y:=Fact(X);

Writeln('Факториал ',X,'равен',Y);

Readln;

End.

5.4 Примеры использования процедур и функций

Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

1 способ с помощью параметров-значений и параметров-переменных:

Program Search1;

var x,y,m: integer;

procedure MaxNumber(a,b: integer; var max: integer);

begin

if a>b then max:=a

else max:=b;

end;

begin

write('Введите x, y ');

readln(x,y);

MaxNumber(x,y,m);

writeln('max=',m);

readln;

end.

2 способ только с помощью параметров-значений:

Program Search2;

var x,y,m: integer;

procedure MaxNumber(a,b: integer);

begin

if a>b then writeln('max=',a);

else writeln('max=',b);

end;

begin

write('Введите x, y ');

readln(x,y);

MaxNumber(x,y);

readln;

end.

Рассмотрим аналогичный пример программы поиска максимума из двух целых чисел с использованием функций:

Program Search3;

var

x,y,m: integer;

function MaxNumber(a,b: integer): integer;

var

max: integer;

begin

if a>b then max:=a

else max:=b;

MaxNumber := max;

end;

begin

write('Введите x, y ');

readln(x,y);

m := MaxNumber(x,y);

writeln('max=',m);

readln;

end.

Контрольные вопросы

1. Для каких целей в программах используются подпрограммы? Какие виды подпрограмм Вам известны?

2. Чем отличаются процедуры от функций?

3. Каким образом описываются подпрограммы? Для чего предусмотрен механизм предварительных описаний?

4. Какие параметры подпрограмм называют входными и выходными?

5. Чем отличаются формальные параметры от фактических?

6. Какие способы задания формальных параметров Вам известны?

7. Перечислите правила вызова процедур и функций.

8. Приведите формат описания процедуры.

9. Для чего используются формальные параметры процедуры?

10. Для чего используются фактические параметры процедуры?

11. Приведите формат описания функции.

12. Для чего используются формальные и фактические параметры функции?

13. Каким образом организуется вызов функции?

14. Какие функции называются рекурсивными?

6. Фрагменты программ обработки данных

6.1 Фрагменты программ обработки массивов

6.1.1 Заполнение массивов

Заполнение двумерного массива размерности, заданной пользователем, числами, введенными пользователем с клавиатуры

Writeln('Введите число строк - m');

Readln(m);

Writeln('Введите число столбцов - n');

Readln(n);

For i:=1 to m do

For j:=1 to n do

Begin

Writeln('Введите элемент [',i, ',',j, '] ');

Readln(Matrix[i,j]);

End;

Заполнение массива размерности 35 случайными числами

Randomize;

For i:=1 to 3 do

For j:=1 to 5 do

Matrix[i,j]:=random(100);

6.1.2 Вывод элементов массива на экран

Вывод элементов массива размерности 35 на экран последовательно в столбец

For i:=1 to 3 do

For j:=1 to 5 do

Writeln('Элемент [',i, ',',j, '] = ', Matrix[i,j]:3:3);

Вывод элементов массива размерности 35 на экран последовательно в стоку

For i:=1 to 3 do

For j:=1 to 5 do

Write(' Элемент [',i, ',',j, '] = ', Matrix[i,j]:3:3);

Вывод элементов массива размерности 35 на экран построчно

For i:=1 to 3 do begin

For j:=1 to 5 do

begin

write(' [',i,',',j,']=',Matrix[i,j]:3:3);

end;

readln;

end;

Вывод элементов одномерного массива, стоящих на четных местах, на экран построчно

For i:= 1 to n div 2 do

Write (X[2*i]);

6.1.3 Подсчет отрицательных и положительных элементов, их сумм и средних значений

Ko:=0;

Kp:=0;

So:=0;

Sp:=0;

For i:=1 To N Do

If X[i]>0 Then

Begin

Kp:=Kp+1;

Sp:=Sp+X[i]

End

Else

If X[i]>0 Then

Begin

Ko:=Ko+1;

So:=So+ X[i]

End;

If Ko<>0 Then

Begin

Sro:= So/Ko;

Writeln('Количество отрицательных чисел = ', Ko);

Writeln('Сумма отрицательных чисел = ', So:8:2);

Writeln('Среднее отрицательных чисел = ',Sro:8:2);

End

Else Writeln('В массиве нет отрицательных чисел.');

If Kp<>0 Then

Begin

Srp:= Sp/Kp;

Writeln('Количество положительных чисел = ', Kp);

Writeln('Сумма положительных чисел = ', Sp:8:2);

Writeln('Среднее положительных чисел = ', Srp:8:2);

End

Else Writeln('В массиве нет положительных чисел.');

End;

6.1.4 Нахождение минимального и максимального элементов двумерного массива

max:=mass[1,1]; k:=1; l:=1;

min:=mass[1,1]; s:=1; t:=1;

for i:=1 to m do

for j:=1 to n do

begin

if mass[i,j]>max then begin

max:=mass[i,j];

k:=i; l:= j;

end

else if mass[i,j]<min then begin

min:=mass[i,j];

s:=i; t:= j;

end;

end;

writeln ('Максимальный элемент массива [',k,',',l,']=',max:2:2);

writeln ('Минимальный элемент массива [',s,',',t,']=',min:2:2);

6.1.5 Сортировка массива

Сортировка - это расположение чисел в порядке возрастания или убывания.

Наиболее распространенный и простой метод сортировки - метод «пузырька». Он требует минимального объема памяти для данных, но затраты времени на реализацию этого метода велики. Суть метода «пузырька» в следующем.

Пусть дано n чисел, которые необходимо расположить (для определенности) в порядке возрастания. При упорядочении выполняются следующие операции:

1) числа сравниваются попарно: первое со вторым; второе с третьим; i-тое - с (i+1) - тым;

2) если меньшее стоит в паре на втором месте (числа в паре не упорядочены по возрастанию), то сравниваемые числа меняются местами.

За один такой просмотр массива минимальное число «вытолкнется», по крайней мере, на одно место вверх (вперед), а максимальное - переместится в самый конец (вниз), т.е. минимальное число как легкий пузырек воздуха в жидкости постепенно «всплывает» в начало последовательности. Отсюда - название метода. За n-1 просмотр произойдет полное упорядочение массива при любом исходном расположении чисел в нем.

For k := 1 To n-1 Do

For i := 1 To n-1 Do

If X[i] > X[i+1] Then

Begin

A:=X[i];

X[i]:=X[i+1];

X[i+1]:=A

End;

6.2 Примеры обработки текстов

6.2.1 Основные задачи обработки текста

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

1. Строка текста или одно слово - одномерный массив символов, а несколько слов - это массив строк (двумерный массив символов).

2. Длина слов в тексте неодинакова. Обычно для разделения слов используются пробелы. Найти пробел в предложении можно, просматривая последовательно каждый его символ. Если очередной пробел найден, то предыдущее слово закончилось.

Формирование отдельных слов может быть осуществлено посимвольно, путем объединения слова (строки) с очередным символом, отличным от пробела (вначале формируемое слово должно быть пустым).

Возможны 2 способа представления текстов:

1) слова разделены всегда одним пробелом;

2) слова разделены одним или несколькими пробелами.

В наиболее часто встречающихся задачах обработки слов выделенные слова (массивы слов) обрабатываются в соответствии с условиями задачи, например, определяются длина слов или осуществляется анализ букв слов.

6.2.2 Выделение слов из текста

Ввести предложение, в котором слова разделены одним пробелом. Выделить слова, переписать их в массив слов и вывести на экран.

Текст программы, реализующей эту задачу, приведен ниже.

Program GetSl1;

CONST

m = 50; {Максимальное количество слов в предложении}

VAR

Predl : string; {Предложение}

Slovo : array[1..m] of string; {Массив для слов}

n, k, i: integer; {Вспомогательные переменные}

BEGIN

WriteLn('Введите предложение:');

ReadLn(Predl);

n := Length(Predl);

k := 1;

Slovo[k] := ''; {Пустое слово - 2 апострофа подряд}

For i := 1 to n do

If predl[i] <> ' ' then

Slovo[k] := Slovo[k] + Predl[i]

Else

begin

k := k + 1;

Slovo[k] := '';

end;

WriteLn('Слова из предложения: ');

For i := 1 to k do

WriteLn(Slovo[i]);

Readln;

END.

Пример

Ввести предложение, в котором слова могут быть разделены несколькими пробелами. Выделить слова и вывести их на экран.

В этом случае номер слова меняется при встрече с первым пробелом, а все последующие пробелы пропускаются.

Текст программы, реализующей эту задачу, приведен ниже.

Program GetSl2;

Const m = 50;

Var Predl : string;

Slovo : array [1..m] of string;

n,k,i : integer;

Begin

WriteLn('Введите предложение:');

ReadLn(Predl);

n := Length(Predl);

k := 1;

Slovo[k] := '';

i := 1;

While i<=n do

If predl[i] <> ' ' then {символ - не пробел}

begin

Slovo[k] := slovo[k] + predl[i];

i := i + 1;

end

Еlse {символ - пробел}

begin

k := k + 1;

slovo[k] := '';

While (predl[i]=' ') and (i <= n) do i := i + 1;

end;

WriteLn('Слова из предложения:');

For i := 1 to k do WriteLn(slovo[i]);

END.

6.2.3 Выделение символов в строке и расположение их по алфавиту

Ввести в ЭВМ строку из n символов латинского алфавита (n<30). Расположить их по алфавиту.

Буквы латинского алфавита 'A' - 'Z', 'a' -'z' имеют коды, значения которых возрастают. Для решения задачи можно применять алгоритм сортировки "пузырьком".

Текст программы, реализующей эту задачу, приведен ниже.

Program Sorts;

Var s : string;

sr : char;

n, i, k : integer;

Begin

writeln('Введите строку');

readln(s);

n := length(s);

for k := 1 to n-1 do

for i := 1 to n-k do

if s[i]>s[i+1] then

begin

sr :=s[i];

s[i] := s[i+1];

s[i+1] := sr;

end;

writeln('Строка с упорядоченными символами:');

writeln(s);

readln;

End.

6.2.4 Выделение символов в строке и подсчет их вхождения

Ввести предложение. Подсчитать количество гласных в нем. В более общей постановке задачи - символов из некоторого эталонного набора (согласные, звонкие согласные, цифры и т.д.).

Текст программы, реализующей эту задачу, приведен ниже.

Program Count_Gl;

Var

Predl,Gl:String; { Предложение и эталонная строка }

n,m,i,j,kol:Integer; { Вспомогательные переменные }

Begin

Gl:='аеёиоуыэюяАЕЁИОУЫЭЮЯ'; {Строка эталонов}

m:=Length(Gl);

WriteLn('Введите предложение');

ReadLn(Predl);

n := Length(Predl);

kol := 0;

For i:=1 to n do

For j:=1 to m do

If Predl[i] = Gl[j] then

kol:=kol + 1;

Writeln('Количество гласных в предложении = ',kol);

Readln;

End.

6.2.5 Выделение символов в строке и подсчет слов в строке

Ввести предложение длиной не более 80 символов и подсчитать количество слов в нем и количество букв "а". Будем считать, что одно слово от другого отделяется одним пробелом.

Текст программы, реализующей эту задачу, приведен ниже.

Program Predl;

Var

Pr : String;

i, n, Ks, Ka : Integer;

Begin

Ks := 0;

Ka := 0;

Writeln('Введите предложение');

Readln(Pr);

n := Length(Pr); {Длина предложения}

For i := 1 to n do

If Pr[i] = ' ' Then

Ks:= Ks + 1

Else

If Pr[i] = 'a' Then

Ka := Ka + 1;

If Pr[n]<> ' ' Then

Ks:=Ks+1; {если в конце предложения нет пробела}

Writeln('Количество слов в предложении равно ',Ks,

'количество букв а - ',Ka);

End.

6.2.6 Выделение слов и упорядочение их по длине

Ввести предложение. Упорядочить его слова по возрастанию длины и вывести их в столбик.

Текст программы, реализующей эту задачу, приведен ниже.

Program Sl;

Const m = 50;

Var Predl, Rsl : string;

Slovo : array [1..m] of string;

n,k,i,j,kol : integer;

BEGIN

WriteLn('Введите предложение');

ReadLn(Predl);

n := Length(Predl);

k := 1;

Slovo[k] := '';

i := 1;

While i<=n do

If predl[i] <> ' ' then {символ - не пробел}

begin

Slovo[k] := slovo[k] + predl[i];

i := i + 1;

end

Еlse {символ - пробел}

begin

k := k + 1;

slovo[k] := '';

While (predl[i]=' ') and (i <= n) do

i := i + 1;

end;

WriteLn('Слова из предложения');

For i := 1 to k do

WriteLn(slovo[i]);

For j := 1 to k-1 do

For i := 1 to k-j do

If Length(slovo[i])> Length(slovo[i+1]) then

Begin

RSl:= slovo[i];

slovo[i]:= slovo[i+1];

slovo[i+1]:=Rsl;

End;

WriteLn('Упорядоченные слова из предложения');

For i := 1 to k do

WriteLn(slovo[i]);

End.

6.2.7 Расположение слов по алфавиту

Ввести предложение. Упорядочить его слова по алфавиту и вывести их в столбик.

Текст программы, реализующей эту задачу, приведен ниже.

Program Sl;

Const m = 50;

Var Predl, Rsl : string;

Slovo : array [1..m] of string;

n,k,i,j,kol : integer;

BEGIN

WriteLn('Введите предложение');

ReadLn(Predl);

n := Length(Predl);

k := 1;

Slovo[k] := '';

i := 1;

While i<=n do

If predl[i] <> ' ' then {символ - не пробел}

begin

Slovo[k] := slovo[k] + predl[i];

i := i + 1;

end

Еlse {символ - пробел}

begin

k := k + 1;

slovo[k] := '';

While (predl[i]=' ') and (i <= n) do

i := i + 1;

end;

For j := 1 to k-1 do

For i := 1 to k-j do

If slovo[i]> slovo[i+1] then

Begin

RSl:= slovo[i];

slovo[i]:= slovo[i+1];

slovo[i+1]:=Rsl;

End;

WriteLn('Упорядоченные слова из предложения');

For i := 1 to k do

WriteLn(slovo[i]);

End.

Контрольные вопросы

1. Перечислите основные задачи обработки массивов данных.

2. Как осуществляется заполнение массива данными?

3. Как выполняется доступ к элементам массива?

4. Как осуществляется вывод элементов массива на экран?

5. Как осуществляется поиск среди элементов массива?

6. Как осуществляется сортировка элементов массива?

7. Перечислите основные задачи обработки текста.

8. Как осуществляется разделение фразы на отдельные слова?

9. Как осуществляется сортировка элементов текста?

10. Как осуществляется подсчет символов?

7. Модули

7.1 Общая характеристика модулей

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

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

В Turbo Pascal 7.0 существует 2 вида модулей:

1) модули пользователей;

2) стандартные модули.

Стандартные модули System, Dos, Crt, Printer, Graph, Overlay, Turbo3 и Graph3 содержат большое число разнообразных типов, констант, процедур и функций.

Модуль System подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за кодовым словом USES.

В модуль System входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции Турбо-Паскаля, которые не вошли в другие стандартные модули (например, Inc, Dec, Getdir и т.п.).

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

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

Модуль состоит из следующих частей:

· заголовок модуля;

· интерфейс модуля;

· исполнительная часть модуля;

· секция инициализации.

Общая структура модуля:

unit UnitName1;

interface

...

implementation

...

begin {может отсутствовать-используется, если необходимо поместить операторы инициализации}

...

end.

Все разделы модуля, за исключением секции инициализации, являются обязательными. Обязательна также указанная последовательность разделов.

Заголовок модуля

Заголовок модуля состоит из зарезервированного слова unit и идентификатора. Идентификатор модуля должен быть уникальным. Пример заголовка:

unit MyModule;

Модуль должен быть помещен в файл, имя которого совпадает с именем модуля, а его расширение должно быть .PAS.

Интерфейс модуля

Через интерфейс осуществляется взаимодействие основной программы с модулем (модуля с модулем). В интерфейсе указываются константы, типы, переменные, процедуры и функции, которые могут быть использованы основной программой (модулем) при вызове этого модуля.

Интерфейс начинается словом interface. Далее после слова uses указываются имена модулей, которые используются данным модулем (необязательная часть). После этого могут быть: раздел объявления констант, раздел объявления типов, раздел объявления переменных, раздел объявления процедур и функций. Объявление процедуры может содержать директиву inline. В разделе объявления процедур и функций указываются лишь заголовки подпрограмм (за исключением тех подпрограмм, которые используют директиву inline). Сами подпрограммы приводятся в исполнительной части.

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

Исполнительная часть модуля

Исполнительная часть включает все подпрограммы модуля. Она может также включать локальные метки, константы, типы и переменные.

Исполнительная часть начинается словом implementation. Затем после слова uses указываются имена модулей, которые используются подпрограммами данной исполнительной части (этот раздел необязателен). Если какой-то модуль уже указан в интерфейсе модуля, то в исполнительной части его повторять не следует. Далее могут быть: раздел объявления меток, раздел объявления локальных констант, раздел объявления локальных типов, раздел объявления локальных переменных. Затем идут описания подпрограмм модуля. При описании подпрограмм допустимо использовать сокращенные заголовки.

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

Секция инициализации

В некоторых случаях перед обращением к модулю следует провести его инициализацию (например, установить связь с теми или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т. д.). Необходимые действия можно выполнить в секции инициализации модуля. Эта секция начинается словом begin, после которого идут исполняемые операторы, а затем помещается слово end. с точкой. Операторы секции инициализации выполняются единственный раз в момент запуска программы.

Если инициализация модуля не нужна, то в секции помещается лишь слово end. (с точкой).

Использование модуля в основной программе

Чтобы использовать подпрограммы, константы, типы, переменные, описанные в интерфейсе модуля, в основной программе следует записать слово uses, после которого указать имя (имена) модуля (модулей). После этого в основной программе можно использовать идентификаторы, указанные в интерфейсах перечисленных модулей.

7.2 Основные процедуры и функции модуля Crt

1. Работа с клавиатурой и звуком

ReadKey - функция, возвращающая символ нажатой клавиши без вывода его на экран. Тип результата - Char. Аргумента у функции нет. Специальные клавиши на клавиатуре (функциональные F1 - F12, управления курсором, Alt, Ctrl и т.д.) генерируют расширенные коды. При нажатии такой клавиши функция ReadKey возвращает сначала нулевой, а затем - расширенный код клавиши.

Repeat

Writeln('Продолжаем?- Да/Нет (Д/Н)');

S := ReadKey;

Until (S='H') OR (S='н') ;

KeyPressed - функция без аргумента, возвращает значение True (истина), если клавиша нажата, и False (ложь) в противном случае. Символ, соответствующий нажатой клавише, остается в буфере клавиатуры. Функция не распознает клавиш перевода регистра (Shift, Alt, NumLock и т.д.).

WriteLn('Работа окончена. Нажмите любую клавишу ...');

Repeat Until KeyPressed;

Delay(задержка : word); - процедура, которая выполняет задержку на число миллисекунд, задаваемых параметром задержка.

Sound(частота : word); - процедура, которая включает внутренний излучатель звука, который будет издавать звуковой сигнал с частотой, заданной параметром частота.

NoSound выключает внутренний излучатель звука.

Внимание! Звуковой сигнал, включенный процедурой Sound, будет звучать до тех пор, пока его не выключить обращением к процедуре NoSound.

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

Procedure Zvuk(freq, long : word);

Begin

Sound(freq);

Delay(long);

NoSound;

End; { Zvuk }

2. Управление цветом

Можно задавать и изменять цвет текста и фона с помощью следующих процедур:

TextBackGround (Color:Byte); - задает цвет фона.

TextColor(Color:Byte); - задает цвет текста.

Параметр Color (цвет) может задаваться выражением целого типа, которое должно принимать значения в диапазоне 0..15, или одной из определенных в модуле Crt констант цветов (название цвета на английском языке). Константы для фонового и основного цвета и их значения приведены ниже:

Цвет текста может быть любой, а цвет фона - из восьми первых..

Black = 0 (черный)

DarkGray = 8 (темно-серый)

Blue = 1 (синий)

LightBlue = 9 (светло-синий)

Green = 2 (зеленый)

LightGreen = 10 (светло-зеленый)

Cyan = 3 (бирюзовый)

LightCyan = 11 (светло-голубой)

Red = 4 (красный)

LightRed = 12 (розовый)

Magenta = 5 (малиновый)

LightMagenta = 13 (светло-малиновый)

Brown = 6 (коричневый)

Yellow = 14 (желтый)

LightGray = 7 (светло-серый)

White = 15 (белый)

Константа мерцания имеет имя Blink, а значение - 128.

TextMode (Mode:Integer); - процедура; задает указанный текстовый режим (mode).

3. Создание окон и позиционирование курсора

Window(X1,Y1,X2,Y2:byte); - процедура, которая определяет на экране текстовое окно. Параметры (X1,Y1) представляют собой координаты верхнего левого угла окна, а параметры (X2,Y2) - нижнего правого.

Это окно не имеет визуально наблюдаемых границ. Минимальный размер текстового окна - один столбец на одну строку.

Если передаваемые координаты окажутся недопустимыми, то обращение к процедуре игнорируется. По умолчанию при запуске программы определяется окно (1,1,80,25), что соответствует всему экрану.

Пример.

Window (1,1,80,25);- окно во весь экран

Window (1,24,80,24);- одна строка (24-ая) внизу экрана.

ClrScr - процедура; очищает экран (последнее открытое окно), и устанавливает курсор в левый верхний угол экрана. Обычно выполняется перед выводом данных на экран.

Очистка заключается в окрашивании экрана фоновым цветом.

TextBackGround(Blue); {Назначен синий цвет для фона }

ClrScr; { Весь экран окрашивается в синий цвет }

Window(1,1,60,20); { Назначено новое окно }

TextBackGround(LightGray); { Цвет фона }

ClrScr;{ Прямоугольная область экрана с координатами }

{ (1,1,60,20) окрасится в светлосерый цвет }

GoToXY(X,Y : Byte); - процедура, которая устанавливает курсор внутри текущего окна в позиции с координатами (X, Y); X задает столбец, а Y - строку. Координаты крайних точек экрана приведены на рис. 8.1.

Рис. 7.1. Координаты углов экрана в текстовом режиме

Имеются две функции, позволяющие узнать текущее положение курсора на экране.

WhereX - возвращает координату X для текущей позиции курсора в текущем окне. Тип результа: byte. Аргументов - нет.

WhereY - возвращает координату Y для текущей позиции курсора в текущем окне. Тип результа: byte. Аргументов - нет.

Контрольные вопросы

1. Для чего в Turbo Pascal используются модули?

2. Какие виды модулей используются в Turbo Pascal?

3. Какова структура модуля?

4. Дайте характеристику процедур и функций модуля Crt.

Заключение

Существует ряд объективных причин, обусловивших выдающийся успех языка Turbo Pascal. Среди них в первую очередь необходимо указать следующие:

Язык в естественной и элегантной форме отразил важнейшие современные концепции технологии разработки программ:

- развитая система типов,

- ориентация на принципы структурного программирования,

- поддержка процесса пошаговой разработки.

Благодаря своей компактности, концептуальной целостности и удачному первоначальному описанию, предложенному автором языка, Turbo Pascal легок для изучения и освоения.

Несмотря на относительную простоту языка, Turbo Pascal пригоден для весьма широкого спектра приложений, в том числе для разработки очень больших и сложных программ.

Кроме того, Turbo Pascal стандартизован во многих странах, в том числе международной организацией по стандартизации ISO.

Перечисленные преимущества обусловливают необходимость изучения языка программирования Turbo Pascal студентами с целью ознакомления с алгоритмическими и структурыми технологиями программирования для дальнейшего освоения объектно-ориентированного программирования в среде Delphi.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Немнюгин С.А. Turbo Pascal. Программирование на языке высокого уровня: учеб. для вузов. 2-е изд. / С.А. Немнюгин. СПб.: Питер, 2003. 544 с.

2. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: практикум / Т.А. Павловская. СПб.: Питер, 2006. 317 с.

3. Турбо Паскаль 7.0 К.: Издат. группа BHV, 1996. 448 с.

4. Малыхина М. П. Программирование на языке высокого уровня Turbo Pascal: учеб. Пособие / М.П. Малыхина. СПб.: БХВ-Петербург, 2006. 544 с.

5. Культин Н. Программирование в Turbo Pascal 7.0 и Delphi / Н. Культин. СПб.: БХВ-Петербург, 2007. 400 с.

Размещено на Allbest.ru

...

Подобные документы

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.

    курсовая работа [519,3 K], добавлен 25.06.2011

  • Изучение текстового режима языка программирования Turbo Pascal. Написание игры "Змейка" с помощью средств, процедур и функций языка программирование Turbo Pascal. Структурное и функциональное описание разработки. Листинг и общие примеры работы программы.

    контрольная работа [286,3 K], добавлен 10.04.2011

  • Строгая типизация и наличие средств структурного (процедурного) программирования императивного языка Pascal. Структура программы, выражения, строки. Правила и описание типов, процедур и функций, операторов ввода - вывода, модулей и подпрограмм.

    курсовая работа [37,3 K], добавлен 28.06.2008

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

  • Понятие и история развития языка Turbo Pascal, оценка его графических возможностей и особенностей. Инициализация графического режима. Управление экраном и окнами, цветом и фоном, принципы работы с текстом. Построение графиков функций и изображений.

    курсовая работа [159,9 K], добавлен 17.12.2014

  • Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.

    курсовая работа [37,7 K], добавлен 03.05.2012

  • История появления и распространения Turbo Pascal - среды разработки для языка программирования Паскаль. Общий вид объявления файлового типа. Входная, выходная и промежуточная информация. Алгоритм решения задачи: словесный алгоритм, блок-схема, программа.

    курсовая работа [359,4 K], добавлен 05.01.2010

  • Характеристика используемой операционной системы, языка программирования. Структура программы на языке Turbo Pascal 7.1. Операторы языка Turbo Pascal. Проведение сортировки записей. Алгоритмы программы и подпрограмм. Причины возникновения ошибок.

    курсовая работа [454,1 K], добавлен 13.06.2014

  • Базовые информационные технологии в управлении. Целый и вещественный тип данных языка программирования Turbo Pascal. Создание программы в интегрированной инструментальной оболочке Turbo Pascal 7.0. Полезные качества информационных технологий управления.

    курсовая работа [1,1 M], добавлен 12.02.2015

  • При помощи Turbo Pascal достаточно не просто создать программу, которая бы демонстрировала работу с базами данных. Для этого существует огромное количество специализированных программ. Основа и сущность формирования базы данных при помощи Turbo Pascal.

    курсовая работа [479,7 K], добавлен 04.07.2008

  • История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.

    курсовая работа [102,7 K], добавлен 23.12.2011

  • Краткая характеристика интегрированной среды Turbo Pascal. Принципы программирования разветвляющихся алгоритмов, циклических структур, задач обработки символьных данных, множеств. Правила записи данных в текстовый файл. Понятие явной и косвенной рекурсии.

    учебное пособие [1,5 M], добавлен 10.12.2010

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • Разработка алгоритма поставленной задачи по обработке числовой информации в среде Turbo Pascal 7.0 с базовым языком программирования Pascal, отладка программы, реализующей разработанный алгоритм. Описание структуры программы, ее вспомогательных процедур.

    курсовая работа [668,0 K], добавлен 25.02.2010

  • Особенности разработки программ на языке Turbo Pascal на примере программы обработки массива данных с построением диаграммы. Функции программы и основные требования к ней. Состав входных и выходных данных. Использование предметной области "Садовод".

    курсовая работа [789,1 K], добавлен 13.03.2013

  • Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.

    отчет по практике [2,1 M], добавлен 02.05.2014

  • Процедура сложения и вычитания матриц (с учетом коэффициента перед матрицами). Основные концепции языка Turbo Pascal. Фортран как один из пионеров программирования Дейкстрой. Первый компилятор Паскаля на платформах DEC. Основные стандарты языка.

    контрольная работа [21,6 K], добавлен 08.03.2011

  • Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.

    курсовая работа [359,0 K], добавлен 23.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.