Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
10.07.2016
Размер:
148.99 Кб
Скачать

1-23. Диапазон значений, имеющих любой порядковый тип, определяется как интервальный тип данных. Отрезок устанавливается в диапазоне от минимального значения констант до максимального, которые отделяются друг от друга двоеточием "..". Константами могут выступать константы целого, символьного, логического или перечисляемого типа. Базовым типом называют скалярный тип, на котором задается отрезок.

Примеры диапазонов:

1) type

diap=0..255;

2) type

bukv='A'..'Z';

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

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

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

case переключатель of список выбора 1: оператор1; ... список выбора N: операторN; else оператор0 end;

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

Оператор case работает следующим образом. Если в одном из списков выбора найдено текущее значение переключателя, то выполняется оператор, соответствующий данному списку. Если же значение переключателя не найдено ни в одном списке, то выполняется оператор по ветке else или, если ветка else отсутствует, оператор case не выполняет никаких действий.

3, 24. К стандартным относятся целые, действительные, символьный и адресный типы.

Целые типы определяют константы,переменные и функции,значения

которых реализуются множеством целых чисел, допустимых в данной ЭВМ.

Shortint -128 .. 127

Integer -32768 .. 32767

Longint -2147483648 .. 2147483647

Byte 0 .. 255

Word 0 .. 65535

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

операции: сложение, вычитание, умножение, деление, получение остатка

от деления.

Операции отношения, примененные к целым операндам, дают результат

логического типа TRUE или FALSE ( истина или ложь ).

В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =,

неравенство <>, больше или равно >=, меньше или равно <=,больше >,

меньше < .

К аргументам целого типа применимы следующие стандартные (встроен-

ные) функции, результат выполнения которых имеет целый тип:

Abs(X), Sqr(X),

Следующая группа стандартных функций для аргумента целого типа да-

ет действительный результат:

Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X).

Эти функции вычисляют синус, косинус и арктангенс угла, заданного

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

ответственно.

6. Строкові данні. Функції по роботі з ними.

Строки в Паскале – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.

Примеры описания строк:

type

str_type = string[12];

const

n = 50;

var

s1: string;

s2, s3: str_type;

s4: string[n];

s5, s6, s7: string[7];

Процедуры и функции для работы со строками:

Функция Concat (s1, s2, ..., sn) возвращает строку, являющуюся слиянием строк s1, s2, ..., sn.

Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.

Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.

Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.

Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte.

Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.

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

Пример, объявление procedure MyProc(A: array[1..10] of Integer);

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

type ta = array[1..10] of Integer; procedure MyProc(A: ta);

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

Пример:

procedure SumArray(A:array of integer; var B: array of integer);

При таком определении передаваемый в функцию первый массив будет копироваться и с этой копией - массивом A, будет работать процедура. Второй открытый массив определен как var. Этот массив передается по ссылке, т.е. он не копируется, и процедура будет работать непосредственно с исходным массивом.

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

Очевидно, что всегда High = Length - 1.

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

Sum([1.2,4.45,0.1]);

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

procedure SumArray(A:array of integer; var B: array of integer); var i:word; begin for i:=0 to High(A) do B[i]:=A[i]+B[i]; end;

Вызов этой процедуры может иметь вид:

var A1,A2: array [1..3] of integer; begin <операторы заполнения массивов> SumArray(A1,A2); end;

8)

В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS и GRAPH3. Модули GRAPH, TURBOS и GRAPHS выделены в отдельные TPU-файлы, а остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES.

Стандартные модули подкдючаются таким способом:

Uses Printer;

begin

writeln (LST, 'Турбо Паскаль')

end.

Модуль SYSTEM подключается к любой программе независимо от того, объявлен ли он в предложении USES или нет, поэтому его глобальные константы, переменные и подпрограммы считаются встроенными в Турбо Паскаль.

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

Для того чтобы в программе можно было использовать содержимое модуля Crt, его надо импортировать (подключить) в программу. Делается это в секции, которая начинается со слова uses.

Чтобы очистить экран от всех надписей, требуется выполнить процедуру clrscr. Если перед этим был задан цвет экрана (с помощью textbackground), то экран будет залит соответствующим цветом.

Цвет текста определяется процедурой textcolor, позиция курсора – gotoxy.

Для вывода символов на экран используются стандартные процедуры write и writeln.

Также существует процедура временной задержки delay (аргумент задается в микросекундах), если требуется выводить символы не сразу, а постепенно.

11. Типізований файл - це послідовність компонент будь-якого заданого типу (окрім типу "файл"). Доступ до компонент файлу здійснюється по їх порядковими номерами. Компоненти нумеруються, починаючи з 0. Після відкриття файлу покажчик (номер поточної компоненти) стоїть на його початку, на нульовому компоненті. Після кожної операції читання або запису покажчик зсувається до наступного компоненту.

Запис у файл:Write(f, список змінних) – процедура записує у файл f всю інформацію зі списку змінних.

Читання з файлу:Read(f, список змінних) - процедура зчитує з файлу f компоненти в зазначені змінні. Тип файлових компонент має відповідати типу змінних. Якщо буде зроблена спроба читання неіснуючих компонент, то відбудеться помилкове завершення програми. Необхідно або точно розраховувати кількість компонент, або перед кожним читанням даних робити перевірку їх існування (функція eof, див. вище)

Зсув покажчика файлу:Seek(f, n) - процедура зміщує покажчик файлу f на n-нну позицію. Нумерація у файлі починається з 0.

Визначення кількості компонент:FileSize(f): longint - функція повертає кількість компонент у файлі f.

Визначення позиції покажчика:FilePos(f): longint; - функція повертає порядковий номер поточного компонента файлу f.

Відсікання останніх компонент файлу:Truncate(f) - процедура відсікає кінець файлу, починаючи з поточної позиції включно.

5) ABS(x) Вычисление абсолютного значения x: |х|

SQR(x) Вычисление квадрата x: x*x

SIN(x) Вычисление синуса x: sin x

COS(x) Вычисление косинуса x: cos x

ARCTAN(x) Вычисление арктангенса x: arctg x

EXP(x) Вычисление экспоненты (числа Е) в степени x

EXP10(x) Вычисление 10 в степени x

LN(x) Вычисление натурального логарифма x

LOG(x) Вычисление десятичного логарифма x

SQRT(x) Вычисление квадратного корня из x

A DIV B Вычисление частного при делении А на В с отбрасыванием остатка

A MOD B Нахождение остатка от делении А на В

TRUNC(x) Нахождение целой части x

RANDOM(x) Псевдослучайное число в интервале [0, x]

ROUND(x) Округление значения x в сторону ближайшего целого

ODD(x) Проверяет аргумент на нечетность. Результат TRUE, если аргумент нечетный, FALSE – если четный.

ORD(x) Возвращает порядковый номер аргумента и, как следствие, преобразует величину порядкового типа в величину целого типа.

CHR(x) Определение символа языка Паскаль по его порядковому номеру

SUCC(x) Нахождение элемента, идущего после данного в перечне допустимых элементов

PRED(x) Нахождение элемента, идущего перед данным в перечне допустимых элементов

FRAC(X) Возвращает дробную часть x

INT(X) Возвращает целую часть x

Pi Значение математической постоянной π

EOF(x) Возвращает TRUE, если файл находится в стоянии “конец файла”, иначе FALSE, если нет конца файла

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

Pos

Синтаксис:function Pos(Строка: string; Подстрока: string): byte;Действие:Возвращает позицию (номер символа) подстроки в строке.

Length

Синтаксис:function Length(Строка: string): integer;Действие:Возвращает значение, равное количеству символов строки-аргумента.

Delete

Синтаксис:procedure Delete(var s: srting; НомерСимвола: integer; Сколько: integer);Действие:Удаляет из строки s ее часть, которая начинается с символа с номером п и состоит из i символов.

Сору

Синтаксис:function Copy(s: string; n:integer; 1: integer): string;Действие:Возвращает подстроку — часть строки а. Подстрока начинается с символа с номером л и состоит из i символов.

Concat

Синтаксис:function Concat(si [, s2, ...,sN] : string): string;Действие:Возвращает строку, являющуюся объединением строк, указанных при вызове функции.

Chr

Синтаксис:function Chr{КодСимвола: byte): char;Действие:Возвращает символ с указанным кодом.

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

Описания данных текстуально предшествуют описанию действий и должны содержать упоминание всех объектов, используемых в действиях (операторах).

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

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

14. Текстові файли, ф-ї по роботі з ними.

Текстовий файл - це сукупність рядків, розділених мітками кінця рядка. Сам файл закінчується міткою кінця файлу. Доступ до кожного рядка можливий лише послідовно, починаючи з першого. Одночасний запис і читання заборонені.

Текстовий файл — форма подання послідовності символів в комп'ютері. Кожен символ з використовуваного набору символів кодується у вигляді одного байта, а іноді у вигляді послідовності двох, трьох і т. д. байтів.

Текстові файли розбиваються на рядки (лінії, англ. line). На сучасних платформах розбивка на рядки кодується символом зміни рядка, а іноді послідовністю двох символів (на деяких старих платформах розбивка на рядки робилося інакше). Взагалі, текстові файли можуть містити друковані символи, такі як букви, цифри й розділові знаки й деяку кількість керуючих символів, таких як знаки табуляції й зміни рядка.

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

ф-ї по роботі з ними :

Читання з текстового файлу:

Read(f, список змінних);

ReadLn(f, список змінних);

Запис в текстовий файл:

Write(f, список змінних);

WriteLn(f, список змінних);

15. Типизированные файлы

Файл, определенный стандартным или пользовательским типом данных, называется типизированным. Общая форма объявления типизированных файлов имеет вид:

Var <имя файла>: File of <тип компонент>;

Здесь тип компонент может быть любым типом данных, определенных в Pascal, но только не файловым. Для работы с типизированными файлами используются уже знакомые нам процедуры и функции: WriteReadSeekFilesizeFilepos, а также процедура Truncate:

Truncate(<имя файловой переменной>)

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

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

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

17) Локальные и глобальные идентификаторы

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

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

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

Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.

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

18. Параметри забезпечують механізм заміни, який дозволяє виконувати процедуру з різними початковими даними. Між фактичними параметрами в операторі виклику процедури і формальними параметрами у заголовку опису процедури встановлюється взаємо-однозначна відповідність у результаті їхнього перебору зліва направо. Фактичні параметри за кількістю і типами повинні дорівнювати кількості і типам формальних параметрів. Параметри, за допомогою яких здійснюється обмін значеннями змінних між підпрограмами та програмою, що їх викликає, можуть мати будь-який тип, в тому числі структурований. Існують два типи параметрів:  параметр-значення;  параметр-змінна.  Група параметрів, перед якими відсутнє зарезервоване слово Var, називається параметрами-значеннями.  Наприклад, в описі Procedure Korrect(S,K:real) S і K - параметри-значення. Формальний параметр-значення обробляється, як локальна стосовно процедури або функції, змінна. Зміни формальних параметрів-значень не впливають на відповідні значення фактичних параметрів.  Група параметрів, перед якими знаходиться ключове слово Var, називається параметрами-змінними. Наприклад, в описі Procedure Obr(Var A,B:integer); А та В - параметри-змінні. Параметр-змінна використовується в тому випадку, якщо значення повинно бути передане з процедури в блок, що її викликає. При активізації процедури або функції формальний параметр-змінна заміщується фактичною змінною, а тому будь-які зміни в значенні формального параметра-змінної відбиваються на фактичному параметрі.  І в тому, і в іншому випадку тип фактичного параметра повинен збігатися з типом формального. Якщо формальний параметр має рядковий тип, йому надається атрибут довжини, рівний 255, а тому і фактичний параметр в цьому випадку повинен також мати рядковий тип з атрибутом довжини, що дорівнює 255. У якості параметра-змінної може використовуватися будь-який тип, в тому числі файловий.

20.В мові Паскаль використовується два види підпрограм ­­­­­­- процедури та функції. Вони відрізняються між собою структурою та способом виклику. При проектуванні програми визначається, які частини алгоритму треба реалізувати як процедури, а де знадобиться функція. Підпрограми-функції використовуються для реалізації алгоритму та повернення в головну програму одного результату в вигляді імені функції.Ім'я функції вибирається довільно (як ім'я змінної).

Структура функції:

Function ім'я(список формальних параметрів): тип імені;

  {локальні дані}

  Begin

    ...

              ім'я := ...;

              ...

            End;

Типом функції може бути скалярний тип, тобто: цілий, дійсний, логічний, символьний та рядковий типString.Відносно формальних параметрів, локальних та глобальних даних в функції діють такі ж самі обмеження та вимоги, що і в процедурах. В виконавчій частині підпрограми-функції повинен бути хоча б один оператор в якому імені функції:призначається значення. Звернення до функції виконується з якого-небудь арифметичного виразу так, як і до стандартних функцій тину sin(x), ln(x), тощо. Результат роботи функції передається в місце її виклику.

Приклад. Використання функції для обчислення степені.

Програма:

Var x,y,z Real ;

Function Step(a:real; b:real):real;

 Begin

  If a<=0 then

   Begin

                Writeln( 'перевірте дані');

                 Halt(0);

             End;

             If b=0 then Step:=1

                       else Step:=exp(b*ln(a));

            End;

Begin

 Readln(x:y);  

 Z:=Step(x,y)+Step(y,x);

 Writeln(x,y,z);

End.

22. Оператор цикла с постусловием (repeat)

В операторе цикла с постусловием (начинающимся со слова

repeat) выражение, которое управляет повторным выполнением после-

довательности операторов содержится внутри оператора repeat.

Результат выражения должен быть булевского типа. Операторы,

заключенные между ключевыми словами repeat и until, выполняются

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

значение True. Последовательность операторов выполнится по край-

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

после каждого выполнения последовательности операторов.

Приведем примеры оператора цикла с постусловием:

repeat

K := I mod J;

I := J;

J := K;

until J = 0;

repeat

Write('Введите значение (0..9):');

Readln(I);

until (I >= 0) and (I <= 9);

23)

ЛИнструкция WHILE:

WHILE условие DO ;

begin

{Инструкции} end ;

Проверяется значение выражения условие (выражение логического типа), если оно равно True (условие выполняется), то выполняются инструкции, находящиеся между begin и end (инструкции цикла). Затем снова проверяется значение выражения условие, и так продолжается до тех пор, пока значение выражения условие не станет равным False. Таким образом, после слова while записывается условие выполнения инструкций цикла.

Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.

27. Массивы. Массивом называется ряд (последовательность, набор) величин одного типа (например, real, integer или char), имеющих одно имя (один идентификатор).

С точки зрения компьютера речь идет о массиве однотипных ячеек его памяти.

Отдельные ячейки называются элементами массива. Номер ячейки называется индексом соответствующего элемента массива. Базовый тип массива - это тип ячеек, из которых состоит массив. Каждый элемент массива - отдельная величина (переменная). Чтобы "обратиться" к ней надо указать: имя массива (общее имя всего набора величин); индекс (номер) элемента. Описание типа массива задается следующим образом:

type

имя типа = array[ список индексов ] of тип

Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных.

Вводить и выводить массивы можно только поэлементно.

Пример.Ввод и вывод одномерного массива.

const

n = 5;

type

mas = array[1..n] of integer;

var

a: mas;

i: byte;

begin

writeln('введите элементы массива');

for i:=1 to n do readln(a[i]);

writeln('вывод элементов массива:');

for i:=1 to n do write(a[i]:5); end.

28.Оператор условного перехода. Оператор условия предназначен для выполнения или невыполнения каких-либо действий, зависящих от результата условия типа Boolean. Этот оператор применяют для разветвления выполнения программы, т. е. если данное условие истинно (и только в этом случае!), то выполняется некоторая последовательность операторов, в противном случае выполняются другие операторы. Вид оператора условия таков:

if условие then оператор1 else оператор2;

Оператор условия может быть записан и в упрощенной форме:

if условие then оператор;

Приведем примеры использования операторов условия:

if а > 0 then b: = sqrt (a) else b: = a * 2; // Оператор условия if a = 10 then b: = b + 1; // Упрощенная форма

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

В отличие от других языков программирования в Object Pascal приоритет операций отношения меньше, чем у логических» операции, по этому отдельные составные части сложного логического выражения заключаются в скобки. Например, такая запись предыдущего оператора будет неверной: if a>b and b <> 0 then …// Ошибка так как фактически (с учетом приоритета операции) компилятор будет транслировать такую строку: if a> (b and b)<>0 then…

16. Файли Поняття файлу досить широке. Це може бути звичайний файл на диску, комунікаційний порт ЕОМ, пристрій друку, клавіатура або інші пристрої.

При роботі з файлами виконуються операції введення - виведення. Операція введення означає перепис даних із зовнішнього пристрою (із вхідного файлу) в основну пам'ять ЕОМ, операція виведення - це пересилання даних з основної пам'яті на зовнішній пристрій (у вихідний файл).

Файли на зовнішніх пристроях часто називають фізичними файлами. Їхні імена визначаються операційною системою. У програмах мовою Паскаль імена файлів задаються за допомогою рядків. Наприклад, ім'я файлу на диску може мати вигляд:

'c:\ABC150\pr.txt'

Типи файлів Турбо Паскаль

Турбо Паскаль підтримує три файлових типи:

  • текстові файли;

  • типізовані файли;

  • нетипізовані файли.

Доступ до файлу в програмі відбувається за допомогою змінних файлового типу. Змінну файлового типу описують одним з трьох способів: file of тип - типізований файл (вказаний тип компоненти); text - текстовий файл; file - нетипізований файл.

Приклади опису файлових змінних:

var

f1: file of char;

f2: file of integer;

Будь-які дискові файли стають доступними програмі після зв'язування їх з файловою змінною, оголошеної в програмі. Всі операції в програмі здійснюються тільки за допомогою пов'язаної з ним файлової змінної.

Assign(f, FileName)

пов'язує файлову змінну f з фізичним файлом, повне ім'я якого задано в рядку FileName

Reset(f)

відкриває для читання файл, з яким пов'язана файлова змінна f.

Rewrite(f)

відкриває для запису файл, з яким пов'язана файлова змінна f.

Close(f)

закриває відкритий до цього файл з файлової змінної f.

Rename(f, NewName)

дозволяє перейменувати фізичний файл на диску, пов'язаний з файловою змінною f.

Erase(f) видаляє фізичний файл на диску, який був зв'язаний з файловою змінною f.

29.Понятие цикла. Виды циклов. При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. В программировании блоки кода, которые требуется повторять не единожды, оборачиваются в специальные конструкции –циклы. У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.

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

Цикл for Часто цикл for называют циклом со счетчиком. Этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. Т.е. количество повторений может быть вычислено заранее (хотя оно не вычисляется).

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

Цикл for существует в двух формах:

for счетчик:=значение to конечное_значение do

тело_цикла;

for счетчик:=значение downto конечное_значение do

тело_цикла;

Счетчик – это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных. Если между начальным и конечным выражением указано служебное слово to, то на каждом шаге цикла значение параметра будет увеличиваться на единицу. Если же указано downto, то значение параметра будет уменьшаться на единицу.

Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться.

var

i, n: integer;

 

begin

write ('Количество знаков: ');

readln (n);

 

for i := 1 to n do

write ('(*) ');

 

readln

end.

Цикл while

Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, еслиfalse – то нет.

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

var

i, n: integer;

 

begin

write ('Количество знаков: ');

readln (n);

 

i := 1;

while i <= n do begin

write ('(*) ');

i := i + 1

end;

 

readln

end.

Цикл repeat

Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

var

i, n: integer;

 

begin

write ('Количество знаков: ');

readln (n);

 

i := 1;

repeat

write ('(*) ');

i := i + 1

until i > n;

 

readln

end.

В примере, даже если n будет равно 0, одна звездочка все равно будет напечатана.

Соседние файлы в папке Информатика