Модуль в языке Pascal. Его структура. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модуль в языке Pascal. Его структура.



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

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

Все программные элементы модуля можно разбить на две части:

1) программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;

2) программные элементы, необходимые только для работы самого модуля, их называют невидимыми (или скрытыми).

unit <имя модуля>; {заголовок модуля}

interface

{описание видимых программных элементов модуля}

implementation

{описание скрытых программных элементов модуля}

begin

{операторы инициализации элементов модуля}

end.

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

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

1. Модуль SYSTEM.

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

2. Модуль DOS.

Модуль Dos реализует многочисленные процедуры и функции Pascal, которые эквивалентны наиболее часто используемым вызовам DOS, как, например, GetTime, SetTime, DiskSize и так далее.

3. Модуль CRT.

Модуль CRT реализует ряд мощных программ, предоставляющих полную возможность управления средствами компьютера РС, такими, как управление режимом экрана, расширенные коды клавиатуры, цвета, окна и звуковые сигналы.

4. Модуль GRAPH.

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

5. Модуль OVERLAY.

Модуль OVERLAY позволяет уменьшить требования к памяти программы DOS реального режима.

 


Алгоритмы нахождения минимального и максимального чисел.

. нахождение максимального числа из n введенных чисел.

...........

for i:=1 to n do begin

readln(a);

if a>=max then max:=a;

end;

Давайте рассмотрим простой пример:

  1. Function Min(a, b: Integer): Integer;
  2. begin
  3. if a<b then Min:=a
  4. else Min:=b;
  5. end;

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

 

Алгоритмы сортировки.

Сортировка массива – это упорядочение его элементов по возрастанию или по убыванию. Общеприняты два метода: метод выбора и метод обмена (пузырька).

Метод выбора.

Ищем минимальный элемент в массиве и меняем его местами с первым элементом.

Рассматриваем массив со второго элемента … и т.д.

{Программа сортировки массива из 10-ти чисел методом выбора}

program massort;

uses crt;

var

i,j,n,min,buf:integer;

a:array[1..10] of integer;

begin

clrscr;

writeln('Введите 10 чисел через пробел, затем "Inter"');

for i:=1 to 10 do read (a[i]);

for i:=1 to 10 do

begin

min:=i;

for j:=i+1 to 10 do

if a[j]<a[min] then

min:=j;

buf:=a[i];

a[i]:=a[min];

a[min]:=buf;

end;

writeln(' Упорядоченный массив ');

for i:= 1 to 10 do write(a[i]:4);

repeat {цикл для остановки программы }

until keypressed; {и показа результата}

end.

Наберите программу и запустите ее на выполнение. Убедитесь в работе программы.

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

 


Ветвления в Pascal.

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

В программе условие – это выражение логического типа (Boolean), которое может принимать одно из двух значений: True (истина) или False (ложь). Простое условие состоит из двух операндов и оператора сравнения:

a=b

В данном случае:

a – первый операнд;

b – второй операнд;

= – оператор сравнения.

 

ОПЕРАТОРЫ СРАВНЕНИЯ
Оператор Описание
> Больше
< Меньше
= Равно
<> Неравно
>= Больше или равно
<= Меньше или равно

 

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

Из простых условий при помощи логических операторов: and – ‘И’, or – ‘ИЛИ’, xor – ‘Исключающее ИЛИ’, not – ‘Отрицание’ можно строить сложные условия.

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

(s>0) and (t<60)

Выбор в точке разветвления алгоритма очередного шага программы может быть реализован при помощи оператора условия if и оператора выбора case.

Инструкция if позволяет выбрать один из двух возможных вариантов развития программы. Выбор осуществляется в зависимости от выполнения условия.

 

If < условие > then

begin

< оператор 1 >;

< оператор 2 >;

….

< оператор n >; { что нужно делать, если условие истинно}

end

Else

begin

< оператор 1 >;

< оператор 2 >;

….

< оператор n’ >; { что нужно делать, если условие ложно}

end;

 

Ветвь Else может отсутствовать. Тогда если условие ложно, то будут выполнятся команды, находящиеся после условного оператора. Если в инструкции If между словами begin и end находится только одна инструкция программы, то слова begin и end можно не писать.

If x>0 then

y:=sqrt(x)

else

y:=sqrt(abs(x));

Оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он организует разветвления в зависимости от значения некоторой переменной перечисляемого типа. Например, если as: integer в программе

Case as of

0: u=x+y;

1: u=y-x;

2: u=x*y

else u=0;

end;

в соответствии со значением as вычисляется u. Если as=0, то u=x+y, as=1, то u=y-x, as=2, то u=x*y.

При всех других значениях as u=0.

Общий вид записывается следующим образом:

Case < селектор > of

список1: begin

< инструкции1 >

end;

список2: begin

< инструкции2 >

end;

списокn: begin

< инструкцииn >

end

Else

begin

< инструкции >

end;

end;

 

Селектор – выражение, значение которого определяет дальнейший ход выполнения программы (т.е последовательность инструкций, которая будет выполнена);

Список1 – список констант. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками.

Ветвь Else тоже может отсутствовать. Операторные скобки begin и end могут отсутствовать, если инструкции состоят только из одного оператора:

Uses Crt;

Var

Age, i: integer;

Begin

Clrscr;

i:=0;

writeln(‘Введите Ваш возраст:’);

readln(Age);

Case Age of

0,1,2: writeln(‘Вы слишком юны’);

3..7: writeln(‘Вы должны посещать детский сад’);

100: writeln(‘Вы долгожитель’)

else

writeln(‘O..O..O!!!!’);

end;

readln;

End.

Тип констант должен совпадать с типом селектора. Селектор может относиться к целочисленному, булевскому, литерному или пользовательскому типам. Дополните данную программу для возрастов 8 – 99 лет и запустите на выполнение. Проверьте работу программы.

 


Циклы в Pascal.

Цикл – это организованное повторение некоторой последовательности операторов. Реализовать его в Pascal можно следующим образом:

…..

Label Me1,Me2;

….

Me1: P1;

P2;

.

.

Pn;

Goto Me1;

….

Me2: Pk;

Me1 и Me2 – метки, которые описываются в разделе объявлений программы. Оператор перехода Goto Me1; передает управление на оператор, перед которым стоит метка Me1:. Для того, чтобы приведенный алгоритм не длился бесконечно, требуется с помощью одного из повторяемых операторов организовать условие выхода из цикла. Для данного примера, можно записать оператор Pn, как:

If <условие> Goto Me2;

Такой способ организации циклов характерен для языков Бейсик и Фортран. В языке Pascal для организации циклов и выхода из них используются операторы While, Repeat, For, а использование оператора Goto считается дурным тоном.

Оператор Repeat …Until (цикл с постусловием).

Этот оператор организует проверку выхода из цикла после каждого выполнения всех повторяемых операторов:

…..

Repeat

P1:

P2;

.

Pn;

Until B1;

…..

Здесь B1 – условие, записанное с помощью оператора логического типа.

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

Оператор While …do (цикл с предусловием).

Иногда удобнее организовать проверку условия выхода из цикла перед выполнением первого повторяемого оператора. Это осуществляется с помощью оператора цикла While …do:

While B1 do

Begin

P1;

P2;

Pn;

End;

……

Если повторяется только один оператор, то скобки begin …end; можно не писать. Как и в операторе Repeat, хотя бы один повторяемый оператор должен влиять на значение условия B1.

Оператор for …do (цикл с параметром).

Часто встречается ситуация, когда переменная цикла относится к целому типу и ее значение изменяется на единицу. В таком случае используется оператор for …do:

…..

for i:=m to n do

begin

P1;

P2;

….

Pn;

end;

……

Здесь переменные i,m,nцелого типа (m и n могут быть арифметическими выражениями целого типа). При m>n операторы P1,P2,...,Pn не выполняются ни разу. Если повторяется только один оператор, то скобки begin …end можно опустить.

Для организации цикла, в котором переменная уменьшается на единицу, существует разновидность оператора for:

For i:=m downto n do

Где m>=n.

Операторы цикла во многих случаях (но не во всех) взаимозаменяемы. Например, пусть нам необходимо посчитать сумму чисел от 1 до 10.

Используем Repeat

s:=0;

i:=1;

repeat

s:=s+i;

inc(i);

until i>10;

Используем While

s:=0;i:=1;

while (i<=10) do

begin

s:=s+i;

inc(i);

end;

3. Используем For

s:=0;

for i:=1 to 10 do s:=s+i;

В данном случае использование оператора For является предпочтительным, но так бывает не всегда. Оператор For всегда можно заменить операторами Repeat и While, в то время как заменить операторы Repea t и While на For в некоторых случаях достаточно проблематично (приходится использовать специальные конструкции прерывающие работу цикла).



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 767; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.173.112 (0.291 с.)