рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Лекция 1. Интегрированная Среда и Состав языка Object Pascal. Состав языка

Лекция 1. Интегрированная Среда и Состав языка Object Pascal. Состав языка - Лекция, раздел Программирование,   Содержание Лекция 1. Интегрированная Среда И Состав ...

 

Содержание

Лекция 1. Интегрированная Среда и Состав языка Object Pascal.. 6

1.1 Работа с окнами. 7

1.2 Редактирование в Object Pascal. 9

1.3 Команды меню... 9

1.4 «Горячие» клавиши в Object Pascal. 10

1.5 Состав языка. 12

1.5.1 Алфавит и ключевые слова. 12

1.5.2 Идентификаторы.. 13

1.5.3 Знаки операций, разделители, выражения и операторы.. 13

Лекция 2. Описательная часть программы... 14

2.1 Структура программы.. 14

2.2 Описание констант. 16

2.3 Описание и использование меток. 16

2.4 Комментарии. 17

Лекция 3. Описание переменных.. 18

3.1 Структура раздела описания переменных. 18

3.2 Классификация типов данных. 19

3.2.1 Целочисленные типы.. 19

3.2.2 Логический тип. 20

3.2.3 Символьный тип. 20

3.2.4 Вещественные типы.. 23

3.3 Описание типов пользователя. 24

ЛЕКЦИЯ 4. Выражения.. 26

4.1 Порядок выполнения операций. 26

4.2 Выражения целого типа. 27

4.3 Вещественные выражения. 27

4.4 Логические выражения. 28

ЛЕКЦИЯ 5. программы Линейной структуры... 31

5.1 Операторы ввода (Read, Readln) 32

5.2 Операторы вывода (Write, Writeln) 32

5.2.1 Форматирование численных значений. 33

5.2.2 Вывод строковых, символьных и логических значений. 33

5.2.3 Вывод вещественных значений в экспоненциальном формате. 34

5.2.4 Расположение данного в поле вывода. Примеры.. 34

5.3 Оператор присваивания. 35

5.4 Составной оператор. 36

5.5 Стандартные процедуры и функции. 37

5.5.1 Понятие процедуры и функции. 37

5.5.2 Описание некоторых стандартных процедур и функций. 38

лекция 6. операторы ветвления (выбора) 40

6.1 Оператор ветвления IF. 40

6.2 Оператор множественного выбора (варианта) - case. 42

Лекция 7. Операторы организации циклов.. 45

7.1 Цикл типа for. 45

7.1.1 Прямая форма оператора for. 45

7.1.2 Обратная форма оператора for. 46

7.1.3 Советы для начинающих и примеры.. 47

7.2 Цикл типа While. 50

7.3 Цикл типа Repeat... Until. 51

7.4 Дополнительные операторы при программировании циклов. 53

7.4.1 Досрочный выход из цикла - break. 53

7.4.2 Переход к следующей итерации цикла - continue. 53

Лекция 8. Массивы... 54

8.1 Одномерные массивы.. 54

8.2 Сортировка одномерного массива. 57

8.3 Массивы с большей размерностью... 58

8.4 Констант-массивы.. 61

8.5 Генератор случайных чисел. 63

8.5.1 Описание функции Random.. 63

8.5.2 Применение случайных чисел при работе с массивами. 64

Лекция 9. Строки.. 66

9.1 Строковый тип. 66

9.2 Операции над строками. 67

ЛЕКЦИЯ 10. Записи и множества.. 72

10.1 Запись. 72

10.2 Множества. 76

11 Пользовательские процедуры и функции.. 78

11.1 Описание функции и процедуры.. 78

11.2 Понятие формальных и фактических параметров. 80

11.3 Способы передачи параметров в подпрограмму через заголовок. 82

11.4 Область видимости идентификаторов. 83

12 Файлы... 85

12.1 Основные понятия. 85

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

12.3 Текстовые файлы.. 98

 

 

Терехин В.В.

ВВЕДЕНИЕ В OBJECT PASCAL

 

 

Конспект лекций

 

Новокузнецк 2004

 

 

Лекция 1. Интегрированная Среда и Состав языка Object Pascal

Программа Object Pascal может работать в полноэкранном режиме или в оконном. Переход из одного режима в другой осуществляется путём нажатия клавиш… При запуске Object Pascal появляется окно, содержащее три видимые части:… Активизация верхней строки меню – F10, перемещение по пунктам меню - клавиши: вверх, вниз, вправо, влево, а для выбора…

Работа с окнами

  Рис.1.1. Окно Object Pascal

Редактирование в Object Pascal

Редактор Object Pascal имеет следующие возможности:

· открытие нескольких файлов одновременно;

· выполнение функций редактирования;

· передвижение, перекрытие и изменение размеров окон редактора;

· копирование текста из окна справочной системы;

· копирование между окнами.

 

Для выделения части текста при копировании, удалении и т. д. можно воспользоваться комбинацией клавиш Shift и стрелок. Занести фрагмент в буфер обмена - Ctrl+Insert, а из буфера обмена - Shift+Insert, удалить - Ctrl+Delete, перенести в буфер обмена - Shift+Delete.

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

Команды меню

В меню Edit продублированы основные команды работы с блоками и команда последовательной отмены действий в редакторе -Undo (Alt+BkSp). Меню Run предназначено для запуска программы в обычном режиме - Run (Ctrl+F9),… Меню Debug позволяет управлять отладкой программы, получать и устанавливать отладочную информацию: устанавливать точки…

Состав языка

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

Алфавит и ключевые слова

· буквы латинского алфавита как в верхнем A .. Z, так и в нижнем a .. z регистрах; · десятичные цифры 0.. 9; · шестнадцатеричные цифры 0.. 9, А, В, С, D, E, F;

Идентификаторы

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

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

Примеры:

А, С, Top_Not, RLeft_m - допустимые идентификаторы. 2Sum - недопустимый идентификатор, т. к, начинается с цифры. Now Elem - недопустимый идентификатор, т. к. содержит пробел. Sin - недопустимый идентификатор, так как совпадает с именем стандартной тригонометрической функции.

Знаки операций, разделители, выражения и операторы

Объекты языка (ключевые слова, идентификаторы) разделяют знаки операций и разделители. То, над чем совершаются какие-либо действия – будем называть операндами. Знаки операций указывают на действия, совершаемые над операндами. Они состоят из одного или нескольких символов. Типичные знаки операций: +, -, / и т.д. Они будут изучаться подробней при изучении типов данных и выражений.

Разделители используются для разделения или, наоборот, группирования объектов языка. К ним относятся:

{ } [ ] ( ) . , ; =

Наиболее распространённый разделитель – это пробел (пустая позиция в строке на экране или на устройстве печати), обычно обозначаемый символом .

Выражения – это правила вычисления значений. В выражении участвуют операнды, объединённые знаками операций.

Оператор задаёт законченное описание некоторого действия, данных или элемента программы. Например:

X: integer;

Это оператор описания целочисленной переменной Х.

Лекция 2. Описательная часть программы

Структура программы

  <Часть описаний> Begin

Описание констант

В программах часто встречаются неизменные по ходу исполнения программы величины, которые называются константами. Раздел описания констант начинается с ключевого слова Const.

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

<идентификатор - имя константы> = <значение>;

 

Пример:

const

А = 75; Т = 3. 56; S = 'ABCD';

 

В этом примере приведена константа А целого типа, константа Т вещественного типа и константа S – строка из 4-х символов.

Описание и использование меток

  Label <список идентификаторов - имен меток, через запятую>;

Комментарии

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

Лекция 3. Описание переменных

Структура раздела описания переменных

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

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

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

Итак, структура описания переменных такова:

var

<список идентификаторов 1> : <тип переменных>;

<список идентификаторов 2> : <тип переменных>;

………………………………………………………….

<список идентификаторов n> : <тип переменных>;

Пример:

var

А, В, С, D : Real;

I, J, К, L, M : Integer;

U: Char;

Z: Boolean;

S: String;

В этом примере A, B, C, D – идентификаторы (имена) переменных. Ключевое слово Real в этой строке обозначает вещественный тип переменных из этого списка. Во второй строке приведён список идентификаторов переменных целого типа. В третьей строке описана одна переменная символьного типа, а в четвёртой – одна переменная логического типа, в пятой – одна переменная типа строки из символов.

Классификация типов данных

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

Имеется шесть основных классов типов:

· простые типы;

· строковые типы;

· структурные типы;

· тип указатель;

· процедурные типы;

· объектные типы.

 

Простые (скалярные) типы разделяются на два блока:

· порядковые -это целочисленные, логические, символьные;

· вещественные.

Целочисленные типы

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

 

Тип Диапазон Размер в памяти
Shortint -128.. 127 1 байт
Integer -32768. .32767 2 байта
Longint -2147483648..2147483647 4 байта
Byte 0..255 1байт
Word 0..65535 2 байта

Приведём пример описания переменных целого типа:

var

I, J : Integer;

К, L, M : Byte;

Z : Word; C : Shortint;

A: Longint;

Логический тип

Значениями логического типа являются встроенные идентификаторы False и True. Этот тип переменных задаётся ключевым словом Boolean. Поскольку логический тип является перечислимым, между этими значениями имеют место следующие отношения:

False < True .

Приведём пример описания переменных логического типа:

var

I, J : Boolean;

Символьный тип

Переменная типа Char хранит значение одного символа. В операторе присваивания задать значение символьной переменной можно тремя способами. Первый… ……………… Var Сh: Char;

Program p3_1;

uses CRT; {Подключение основной библиотеки}

Var ch : char;

Begin

writeln('Чтобы остановить работу ',

' программы нажми <Esc> ' );

Repeat

write('Нажми любую клавишу!');

ch := Readke; {Ожидание нажатия клавиши и ввод кода символа }

if ch = #0 then {Если 1-ый байт кода символа равен 0, то }

begin {вводим 2-ой байт, так как это функциональная клавиша }

ch := Readkey; {или комбинация клавиш}

write(#13,#10,' Это функциональная клавиша или комбинация',

' клавиш c кодом=',0,0,' ',Ord(ch));

End

else {Вариант, в котором символ не имеет графического изображения }

if Ord(ch) < 33 then write(' Символ не имеет графического',

' изображения. Его код=',Ord(ch))

else write(' Символ: ',ch,' его код=', Ord(ch));

Writeln;

until ch=#27; {Условие выхода из цикла – нажата клавиша <Esc> }

End.

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

Вещественные типы

Вещественные типы различаются диапазоном и точностью значений (смотри таблицу 3.3). Таблица 3.3. Характеристики вещественных типов Тип Диапазон …  

Описание типов пользователя

1. Полное соответствие стандартному типу. В этом случае переменные нового типа обладают такими же свойствами, что и переменные базового типа. type <идентификатор — имя типа> = <идентификатор

ЛЕКЦИЯ 4. Выражения

Порядок выполнения операций

Для нас важно выделить целые, вещественные, логические, символьные и строковые выражения, которые приходится чаще всего использовать в программах. … Порядок выполнения операций определяется их старшинством, или приоритетом.… Таблица 4.1. Приоритет операций Операция Приоритет Обращение к функции f(∙) …

Выражения целого типа

+ - сложение; - - вычитание; * - умножение;

Вещественные выражения

+ - сложение; - - вычитание; * - умножение;

Логические выражения

= - равно; <> - не равно; > - больше чем;

ЛЕКЦИЯ 5. программы Линейной структуры

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

Мы начнём изучение применения операторов в программе с операторов ввода-вывода. В языке Object Pascal имеется четыре основных оператора ввода/вывода: Read, Readln, Write, Writeln.

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

Операторы ввода (Read, Readln)

Read (<список переменных через запятую>);

Readln (<список переменных через запятую>);

 

Как только вычислительный процесс доходит до операторов Read, Readln происходит останов вычислений. Пользователь обязан набрать на клавиатуре только значения тех переменных, которые перечислены в списке ввода. Разделителем между значениями – является пробел. После этого нажимается клавиша Enter. При этом на экране отображаются вводимые с клавиатуры символы, начиная с позиции текстового курсора, а курсор после вывода очередного символа перемещается на позицию вправо.

Примеры:

Read (А) ; Read (А, В, С);

Readln (X, У, Z) ;

 

Оператор Read отличается от оператора Readln тем, что первый из них из строки ввода данных вводит столько из них, сколько перечислено в списке ввода. Например, в программе имеется оператор Read (i, j), а на клавиатуре мы набрали следующие данные: 4 5 7 и нажали клавишу <Enter> . Переменным i и j будут присвоены значения 4 и 5. Однако при следующем выполнении оператора Read (i, j) независимо от того, что мы наберём на клавиатуре, переменной i будет присвоено значение 7.

Оператор Readln, независимо от длины списка ввода и длины строки ввода всегда игнорирует «лишнюю» информацию и ожидает нажатия клавиши <Enter>, даже если список ввода пуст. Поэтому, чтобы удержать экран пользователя перед глазами, полезно, перед завершением работы программы, вставить в неё оператор “Readln;” .

Операторы вывода (Write, Writeln)

Write(<список выражений, через запятую>);

Writeln(<список выражений, через запятую>);

 

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

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

Если вывод данных не отформатирован, то значение выводится вслед за предыдущим без какого-либо их разделения, то есть два последовательных данных «слипнуться».

Форматирование численных значений

< выражение > [: n1 [:n2] ] . Выводимым выражением может быть число, переменная или выражение, содержащее… Подпараметр n2 задает количество десятичных знаков в дробной части вещественного числа. Он может использоваться только…

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

При выводе символов и строк также возможно форматирование:

< выражение > [:n1 ] .

Здесь n1 – ширина поля вывода. Символы или строки выводятся на экран без изменений, но снабжаются пробелами слева, если задана ширина поля вывода и эта ширина больше, чем длина строки или символа.

При выводе логических выражений в зависимости от их значения выводятся строки TRUE или FALSE. (Ввод логических констант процедурами READ или READLN не предусмотрен).

Вывод вещественных значений в экспоненциальном формате

, где # - десятичная цифра. Такое изображение числа называется экспоненциальным.… s#.###...##E####,

Расположение данного в поле вывода. Примеры

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

Примеры:

 

Writeln (A: 6: 3);

Write( M: 7: 3, Т: 4: 2, В: 7: 4);

 

В дальнейшем мы познакомимся с типом String , а сейчас уточним, что операторы Write и Writeln позволяют выводить на экран строковые значения. Сами строковые значения заключаются в апострофы: 'ABCDF', 'мама мыла раму'. Пользуясь этим, мы можем выводить на экран различные сообщения и комментарии, чередуя в случае необходимости их со значениями выражений других типов.

Примеры:

 

1. Writeln('А=', А); {на экран будет выведена строка 'А=' и

значение переменной А : А=75}

2. Write('число простое '); {на экран будет выведена строка «число простое»,

курсор установится в следующей позиции за буквой «е»}

3. Writeln (' Yes ') ; {на экран будет выведена строка «Yes» и курсор

перейдёт на следующую строку в первую позицию}

Оператор присваивания

Присвоить переменной конкретное значение в языке Object Pascal можно двумя способами. Первый способ – это указать переменную в списке ввода оператора Read или Readln. Например:

Read(a, b);

В результате выполнения этого оператора переменным a и b будут присвоены конкретные значения.

Второй способ присвоения переменным значений – это указать переменную в левой части оператора присвоения. В Object Pascal оператор присваивания состоит из двух символов (:=) и отличается от символа операции сравнения (=).

Структура оператора присваивания:

<идентификатор переменной>:= < выражение соответствующего типа>;

 

Примеры:

А:= 5; B:= 3.7;

N:= Sqr(T) + Sqr(U);

M:= 25 * Т - 80 * L;

 

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

Обычно ошибки, возникающие при компиляции оператора присваивания, связаны с несоответствием типа выражения типу переменной (Type mismatch), а ошибки во время выполнения возникает из-за неправомочности операции в выражении: деление на ноль (Division by zero), неправильная операция с плавающей точкой (Invalid floating point operation).

Составной оператор

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

 

begin

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

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

……………….

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

end;

Примеры:

1)

begin

writeln(A[i] ) ;

max:= A [ i ] ;

inc(t);

k:= i;

end;

 

2)

begin

writeln('да');

n:= 1000;

end;

Иногда, ключевые слова begin – end называют операторными скобками, так как они окаймляют операторы внутри себя аналогично скобкам в арифметических выражениях..

Простейшим случаем составного оператора является пустой составной оператор:

begin

end;

Стандартные процедуры и функции

Понятие процедуры и функции

В языке Object Pascal принцип модульности обеспечивается использованием подпрограмм-функций, подпрограмм-процедур ( в дальнейшем просто функций и… Чтобы обратиться к определённой функции или процедуре в исполнительной части… Функции, при обращении к ней, присваивается значение, соответствующее типу функции (смотри п. 4.3). Поэтому её можно…

Описание некоторых стандартных процедур и функций

Abs( x) — функция возвращает абсолютное значение (модуль) параметра х. Тип аргумента x и значения функции - вещественный или целый. Тип значения… Sqr( x ) - функция возвращает квадрат значения параметра х. Тип аргумента x и… Round(x) - функция относится к классу функций преобразования типов. Она преобразует вещественные значения в целые по…

Примеры программ линейной структуры

В общем случае в программе линейной структуры необходимо выполнить:

· ввод исходных данных с клавиатуры, диска и т.п. устройств;

· расчёты в соответствии с логикой задачи;

· вывод на экран результатов расчётов.

 

Пример задачи. Найти площадь поверхности и объем шара, если известно, что длина его радиуса равна а.

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

Далее, согласно известным формулам для площади и объёма шара, выполним расчёты площади и объёма. В заключение, программа должна вывести на экран значения площади и объёма шара, сопроводив эти числа поясняющим текстом.

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

Рис. 5.1. Пример программы линейной структуры

 

На рис. 5.2 приведено окно выполнения программы на рис. 5.1.

Рис. 5.2. Окно исполнения программы с рис. 5.1

 

 

Лекция 6. операторы ветвления (выбора)

Оператор ветвления IF

Оператор ветвления IF (иногда его называют оператором выбора или условным оператором) имеет следующую структуру:

 

If <выражение типа Boolean >

then <оператор(ы) 1>

else <оператор(ы) 2>;

 

Условный оператор в виде блок-схемы можно изобразить так, как это показано на рисунке 6.1. На этом рисунке В – это логическое выражение, чаще всего оно содержит операции отношения. Если В истинно, то выполняются действия 1, в ином случае – действие 2. Действие – это один или несколько операторов языка Object Pascal.

 

                   
   
 
     
 
 
 
     


 


else часть: Действие 2
then часть: Действие1  

 


Рис.6.1. Блок-схема оператора IF

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

 

if <выражение типа Boolean > then <оператор(ы)>;

 

Блок-схема оператора IF с неполным ветвлением представлена на рис. 6.2. Пример полного ветвления:

if a > b then a:= 75 else b:= 75;

 

Пример неполного ветвления:

if (a < 0) or (b < 0) then a:= -934;

 
 


 

Рис.6.2. Блок-схема оператора IF с неполным ветвлением

Если возникает необходимость в then или else части выполнить несколько операторов, то они объединяются в один составной оператор.

Пример:

if (a < d) or (b < d) then

begin

writeln('d= ', d);

r:= d;

m:= a;

end

else

begin

writeln('l= ' , l);

r := l;

m: = t ;

n: = у;

end;

Заметим, что операторы if могут быть вложенными в друг друга. Решение следующей задачи использует именно такую конструкцию.

Задача. С клавиатуры вводятся три целых числа, вывести их на экран в порядке возрастания.

program р6_1;

var

a, b, c, xl, х2, хЗ : integer;

begin

WriteLn('Введите три числа: a, b, c');

Readln(a, b, c);

{ Сначало располагаем по возрастанию числа a и b }

if a < b then begin

x1 := a; x2 := b;

end

else begin

x1 := b; x2 := a;

end;

{ Далее, располагаем в порядке возрастания ещё и c }

if c < х1 then begin

x3 := x2; x2 := x1; x1 := c;

end

else { в else части помещается вложенный оператор if }

if c < x2 then begin

x3 := x2; x2 := c;

end

else x3 := c;

Writeln('Числа в порядке возрастания: ', x1, ' ' , x2, ' ' , x3);

end.

Оператор множественного выбора (варианта) - case

Ситуация множественного выбора возникает при написании программ достаточно часто: обработка нажатия клавиш, обработка списков, файловых потоков и т. д. В этом случае использование обычного ветвления затруднительно, так как структура программы становиться слишком сложной. Оператор множественного выбора позволяет достаточно компактно решить подобные задачи. Блок-схема выполнения этого оператора представлена на рис. 6.3. На этом рисунке: I - выражение или переменная целого типа; n- количество ветвей. Управление передаётся на ветвь, номер которой совпадает со значением выражения или переменной I.

Форма записи оператора case:

 

case <выражение порядкового типа I> of

<список значений и диапазонов 1>: <оператор 1>;

<список значений и диапазонов 2>: <оператор 2>;

………………………………………………………..

<список значений и диапазонов n>: <оператор n>;

else <оператор n +1>;

end;

 
 


 


Sn
S2
S1

 

 


Рис.6.3. Блок-схема оператора множественного выбора

 

Выполнение оператора case … of начинается с вычисления выражения I, после ключевого слова case. Далее, полученное число сверяется со значениями на ветках. Эти значения на каждой ветви записаны до двоеточия. В случае равенства числа значению на какой-либо из ветвей, будут выполнятся оператор(ы), записанные после двоеточия на этой ветви. В структуре оператора case допускается использование альтернативы else, если во всех списках значений и диапазонов не встретилось значение выражения I, то программа будет выполняться по ветке else.

Примеры:

1)

case A of

1, 2, 3: n:= 75;

4 . . 6: n:= 134;

7 . . 10, 17 . . 23: n:= 247 ;

end;

 

2)

case chr(M) of

'A', 'Б', 'Е', 'Р’: begin writeln(M); Inc(X); end;

'Л’ , 'K', ‘T’, 'И' : begin

writeln(M-32) ;

Inc(Y);

end;

, 'Ю, 'Э' : begin writeln(M-27) ; Inc (Z) ; end;

end;

3)

case V of

1, 2, 7: Write ('Да') ;

4, 6, 8: Write ('Может быть’);

else Write ( 'Нет' ) ;

end;

Задача. С клавиатуры вводится число 0 ≤ п ≤ 5. Вывести на экран числительное, соответствующее этому числу.

program p6_2 ;

var

n: integer;

begin

Writeln (' Введите число’);

Read ln(n) ;

case n of

1 : write ( ' один' ) ;

2: write (' два ');

3: write ( 'три' ) ;

4: write ( 'четыре' ) ;

5: write ( ' пять ' ) ;
else

write ('число не подходит');

end;

end.

Лекция 7. Операторы организации циклов

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

Цикл типа for

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

Прямая форма оператора for

Запись прямой формы этого оператора имеет вид:

 

for <идентификатор переменной порядкового типа> :=

n1 to n2 do <оператор(ы)>;

где <идентификатор переменной порядкового типа> - это счётчик или параметр цикла, который изменяется от начального значения n1 (меньшее значение) до n2 (большее значение соответствующего типа). Параметр цикла при каждой итерации изменяется на единицу. Если n1 > n2, то оператор цикла вообще не выполняется. <оператор> - это один простой или составной оператор языка Pascal. Обычно этот оператор называют телом цикла.

Примеры:

1)

for i:=1 to 100 do S:= S + i*i;

В этом примере i параметр или переменная цикла, которая изменяется от 1 до 100. Телом цикла является оператор присваивания S:= S + i*i , который будет выполняться 100 раз.

2)

for c:= 'A' to 'Z' do Writeln(ord(c), ' - ', c) ;

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

3)

for t:= 300 to 400 do if (t mod 3) = 0 then Writeln(t);

В этом примере параметром цикла является переменная целого типа t , которая изменяется от начального значения 300 до конечного значения 400. В теле цикла выполняется вывод на экран тех значений переменной t , которые кратны трём.

Обратная форма оператора for

Запись обратной формы этого оператора имеет вид:

for <идентификатор переменной порядкового типа> :=

n1 downto n2 do <оператор>;

 

nl — начальное (большее) значение соответствующего типа; n2 – конечное (меньшее) значение соответствующего типа. На каждой итерации параметр цикла изменяется на величину -1. Если n1 < n2, то оператор цикла вообще не выполняется.

Примеры. Эти примеры повторяют вышеприведённые примеры, но счётчик цикла изменяется в обратном направлении.

1)

for i:= 100 downto 1 do S:= S + i*i;

2)

for c:= 'Z’ downto 'A' do Writeln(ord(c), ' - ', c) ;

3)

for t:= 400 downto 300 do if (t mod 3) = 0 then Writeln(t);

 

Как вы заметили, в теле цикла может выполняться только один оператор, который записан непосредственно за структурой for … do. Поэтому, если возникает необходимость, мы можем воспользоваться составным оператором и объединить в теле цикла несколько операторов.

Примеры:

1)

for i: = 1 to 100 do

begin

Writeln(i , ‘)’ );

S:= S + i*i ;

Writeln(S);

end;

2)

for h:= 'F’ to 'X do

begin

readln(b, c);

k: = chr(ord(b) - ord(h));

m: = m + chr(ord(c) + ord(h));

writeln (k, m);

end;

 

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

Пример:

program р7_1;

type

Month = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov);

var

i: Month;

z: integer;

begin

z : = 0 ;

for i := Jan to Sep do z := z + Ord(i)*32;

Writeln(z);

end.

Советы для начинающих и примеры

1.Постарайтесь не изменять счетчик цикла в самом цикле. Если хорошо подумаете, то поймете, что в этом нет необходимости, а последствия этого могут оказаться непредсказуемыми.

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

3. Перед использованием цикла постарайтесь точно понять, «почувствовать» как он работает, что происходит со счетчиком, сколько раз он выполняется, как изменяются переменные в выражениях типа S := S + ..., Р:= Р * . . . и т. п. Их корректность зависит от построения выражения и начальных значений переменных.

Например:

p := 0;

for i: = 1 to n do p: = p* i;

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

Задача. Табулировать функцию f(x) на отрезке [а,b] с шагом h.

program p7_3;

var

a, b, h, x, y : Real;

i, n : integer;

begin

Writeln('введите начало и конец отрезка’);

Read(a, b);

Writeln('введите шаг');

Read(h);

х:= а; { начальное значение переменной х }

n:=round((b-a)/h); { количество полных интервалов }

for i:= 1 to n do

begin

y:= sin(x); { находим значение функции,

для текущего значения аргумента }

Writeln(i, ' х= ' , х, ' у= ' , у) ; { выводим на экран номер шага,

значение аргумента и значение функции }

x:=x+h; { увеличиваем аргумент на значение шага }

end;

end.

Задача. Вычислить выражение .

program p7_4;

var

S, f: real;

i, n: integer;

begin

Write('Введите n: ’);

Read(n); { Ввод значения переменной n }

f: = 1;

S: = 0; { начальное значение переменных f и S }

for i: = 1 to n do

begin

f: = f*2;

S:= S + sin(i)/f;

end;

Writeln(' S= ', S: 6: 4) ;

end.

Задача. Вычислить выражение

,

где n, а и b вводятся с клавиатуры.

 

program p7_5;

var

a, b, P, k, 1: real;

i, n: integer;

begin

Write('Введите значения a, b и n: ');

Readln (a, b, n);

k:= 1; { начальное значение переменных k,1 и Р }

1:= 1;

P:= 1;

for i:= 1 to n do

begin

k:= k * a;

1:= 1 * b;

P:= P * (sin(k) + cos(l));

end;

Writeln(‘ Произведение = ', P: 6: 4);

end.

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

 

program р7_6;

var

i, j : integer;

begin

for i:= 1 to 5 do

for j:= 1 to 5 do writeln ('i= ', i, ' j= ', j);

end.

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

i=1 j=1

i=l j=2

i=l j=3

i=l j= 4

i=l j= 5

………

………

………

i=5 j= 2

i=5 j= 3

i=5 j= 4

i=5 j= 5

Каждая строка, выводимая на экран, соответствует одному выполнению тела цикла.

Цикл типа While

  While <выражение типа Boolean> do <оператор>;  

Цикл типа Repeat... Until

Этот цикл во многом похож на цикл While, но отличается от него тем, что условие проверяется не в начале цикла, а в конце, и это не условие продолжения цикла, а условие выхода из него.

В отличие от цикла While, тело цикла Repeat... Until всегда выполняется по крайней мере один раз.

 

Repeat

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

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

……………….

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

Until <выражение типа Boolean>;

 

В данном случае <выражение типа Boolean> - это условие выхода из цикла (пока условие - ложно, тело цикла выполняется). Конструкция цикла такова, что для организации тела не требуется объединять операторы в один составной, потому что часть программы между служебными словами Repeat и Until и так является его телом.

Примеры:

1)

х := 0;

Repeat

x: = x + 1 ;

Write('х= ', х);

у: = sin(х);

Writeln(' x= ', x, ' у= ', у);

Until x = 100;

 

2)

х := 10;

Repeat

t: = t - 1;

Until t = 0;

Задача. Вычислить выражение с точностью e.

program p7_8;

var

S, е, х : real;

i : integer;

begin

Writeln('Введите точность');

Readln(e);

S := 0;

i := 1;

Repeat

x:= 1/(i*i*i) ;

S := S + x;

i : = i + 1 ;

Until x < e;

Writeln(Summa = ' , S:10:8) ;

end.

Дополнительные операторы при программировании циклов

Досрочный выход из цикла - break

Иногда необходимо бывает проводить проверку на возможный выход из цикла где-нибудь в его середине, а не в начале или конце. Такой выход из цикла обеспечивается процедурой break, которая прерывает выполнение самого внутреннего вложенного цикла, будь то for, while или repeat.

Пример. Повторим задачу из предыдущего пункта: вычислить выражение с точностью e.

program p7_9;

var

S, е, х: real;

i: integer;

begin

Writeln('Введите точность');

Readln(e);

S := 0;

For i :=1 to 1000 do begin

x:= l/(i*i*i) ;

S:= S + x;

{ если точность вычисления суммы достигнута, то выход из цикла }

If x < e then break;

end;

Writeln(Summa = ' , S:10:8) ;

end.

Переход к следующей итерации цикла - continue

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

Пример:

……………………

while abs(p) > e do

begin

………………….

for i : = 1 to m do

begin

…………………………

if y <= 0 then continue;

…………………………

p: = p+y;

end;

if p > 1 then break;

……………………………

s: = s+p;

end;

………………………

В этом примере во внутреннем цикле пропускаются итерации в случае отрицательных или равных нулю величин y, а во внешнем – цикл прервется, если величина p превысит 1.

Лекция 8. Массивы

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

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

Одномерные массивы

  <список идентификаторов>: array [< диапазон изменения индекса>] of <тип элементов массива>;

Сортировка одномерного массива

  A1 < A2 < … < An-1 < An  

Массивы с большей размерностью

...: array [... ] of array ... Подобная запись достаточно громоздка (несколько раз записывается служебное…  

Констант-массивы

  Одномерный массив <идентификатор — имя массива>: array [<диапазон изменения индекса> ] of <тип элементов> =

Генератор случайных чисел

Описание функции Random

Если необходимо при каждом запуске программы, использующей Random, иметь различные последовательности случайных чисел, то перед обращением к Random… Обращение к функции: Random ( N ) , где N – целое число типа word. Функция… Пример:

Применение случайных чисел при работе с массивами

При создании произвольных массивов чаще всего используют функцию-генератор случайных чисел. Приведём пример создания произвольного одномерного… program p8_7; uses CRT;

Лекция 9. Строки

Строковый тип

Пример: program p9_1; const

Операции над строками

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

S := 'Мама мыла раму';

S : = 'ABC ' ;

S := S1;

При работе со строками допустимо использовать операцию конкатенации (сложения - «+»).

Пример:

Sl := 'ABC’ ;

S2: = 'DEF’ ;

S := S1 +S2;

 

После выполнения последнего оператора присваивания переменная S будет иметь значение 'ABCDEF'.

Как явствует из примера, сложение строк - это простое их объединение, причем первое слагаемое стоит в новой строке на первом месте, второе - на втором и т. д.

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

Length(S) - функция определяет реальную длину строки (количество символов). Тип результата – integer, тип аргумента S - string.

Примеры:

1)

S : = 'ABCD' ;

t := length (S) ;

После выполнения оператора присваивания целая переменная t будет иметь значение 4 (символа).

2)

S:= 'Мама мыла раму';

t:= length (S) ;

После выполнения последнего оператора присваивания целая переменная t будет иметь значение 14 (символов).

Pos( Sl, S2 ) - функция возвращает число типа byte, равное номеру первой позиции вхождения подстроки S1 в строку S2.

Примеры:

1)

S:= 'ABCDEF';

Sl:= 'CDE';

t := pos(Sl , S);

Переменная t будет иметь значение 3.

2)

S:= 'АВСАВСАВСАВС ‘ ;

S1:= 'BС';

t := pos(S1, S) ;

Переменная t будет иметь значение 2.

 

Copy ( S, n, l) - функция возвращает подстроку длиной l символов из строки S начиная с символа, имеющего номер позиции n.

Примеры:

1)

S := 'ABCDEFG’ ;

S1 := copy(S, 3, 4);

В данном случае функция возвратит значение 'CDEF'.

2)

S := 'мама мыла раму';

S1 := copy(S, 6, 4);

Функция возвратит значение 'мыла'.

 

Delete( S, n, l ) — процедура удаляет l символов из строки S, начиная с позиции n.

Примеры:

1)

S := 'ABCDEFG’;

delete (S, 3, 4) ;

После вызова процедуры переменная S будет иметь значение 'ABG'.

2)

S := 'мама мыла раму';

delete (S, 6, 5);

Переменная S будет иметь значение 'мама раму'.

 

Insert( S1, S2, n ) - процедура вставляет строку S1 в строку S2, начиная с позиции n.

Примеры:

1)

S:= 'ABCDE';

S1:= 'GHIJ’;

Insert(S1, S, 3);

После вызова процедуры Insert переменная S будет иметь значение 'ABGHIJCDE'.

2)

S := 'мама раму';

S1 := 'мыла ';

Insert(S1, S, 6) ;

Переменная S будет иметь значение 'мама мыла раму'.

 

В отличии от массивов, строки можно выводить на экран и вводить с клавиатуры используя операторы Write и Writeln, Read, Readln.

Примеры:

Write('мама ');

Write('мыла ') ;

S': = 'раму' ;

Writeln (S) ;

Read(S);

Readln(S1) ;

 

Задача:

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

'ABC(DEFG)HUK' или 'мама (мыла) раму'.

Требуется отделить фрагмент в скобках и вывести его на экран.

program р9_2;

var

S: String;

nl, n2: integer;

begin

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

Readln(S) ;

{ находим позицию первого вхождения '(' }

nl := pos( '(', S);

{- находим позицию первого вхождения ')' }

n2 := роз( ')', S);

{ по двум позициям определяем длину фрагмента = n2 - nl -1 }

S := copy (S, nl + 1, n2 - nl - 1}; { и вырезаем фрагмент }

Writeln(' Фрагмент строки:', S);

end.

 

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

program p9_3;

Const

S: String = 'ABC DEFG HIJ KL';

var

i: integer;

S1: String;

begin

i: = 1;

writeln(' Список слов:');

while i < = length(S) do

begin

{ проходим по возможной цепочке пробелов }

While ( S[i] = ' ') and (i <= length(S)) do i : = i + 1 ;

S1 : = '' ; { S1 – пустая строка }

{ проходим по слову }

While ( S[i] <> ' ') and ( i <= length(S)) do

begin

S1:= S1 + S[i];

i : = i + 1 ;

end;

Writeln(S1);

end;

end.

 

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

Val( S, X, Er) – процедура преобразует строку S в число, которое записывает в переменную X. В процессе перевода строки в число может возникнуть ошибка, например, строка содержит нецифровой символ. Поэтому, в параметр Er записывается значение ноль, если перевод в число прошел успешно и номер символа, на котором перевод был прерван, в обратном случае. Тип параметра Х может быть целым и вещественным, по желанию пользователя. Примеры:

1)

{ X: Integer}

S:= '423' ;

Val (S, Х, Er);

{после вызова процедуры целая переменная X будет иметь

значение 423, а Еr = 0 }

2)

{R: Real}

S:= ‘ 423.5' ;

Val (S, R, Er);

{ Переменная R будет иметь значение 423. 5, а Er = 0 }

3)

{ X: Integer}

S := ' 342ABC ' ;

Val(S, X, Er);

{ после вызова процедуры Ег = 4, на четвертом символе

произошел сбой }

 

Ниже приведена программа для преобразования строки символов в целое число.

program р9_4;

var

I, Code: Integer;

S: String;

begin

WriteLn('Введите строку для преобразования ');

ReadLn(S);

Val (S , I, Code) ;

{ Если произошла ошибка... }

if Сode <> 0 then Writeln('Ошибка в позиции: ' , Code)

else Writeln( 'Значение= ', I);

end.

 

Процедура Str преобразует число (целое или вещественное) в символьный вид - строку. Обращение к процедуре - Str ( X, S) , X – целое или вещественное число, S – символьный вид этого числа. При переводе числовых значений можно указывать формат перевода, подобно тому, как мы это делали при вызове Write и WriteLn.

Примеры:

{ Т: Integer }

Str(T: 6, S) ;

 

{М: Real}

Str(M : 4: 2, S);

Str(T, S);

Str(M, S);

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

program p9_5;

const I = -5322;

var

S: string [11] ;

begin

Str(I, S) ;

Writeln(' Число =', S ) ;

end.

ЛЕКЦИЯ 10. Записи и множества

Запись

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

Разнотипность компонент записи позволяет использовать ее в качестве набора данных, описывающих некоторый информационный объект. Например, при описании учащихся данного класса школы можно рассмотреть следующие индивидуальные характеристики отдельного ученика: фамилию, имя, месяц и число рождения, вес, рост, номер парты и т. д. Видно, что все данные об ученике разного типа. Действительно, фамилия, имя – строки; месяц, номер парты – целые числа; вес и рост – вещественные числа. Таким образом, для хранения информации об учащихся воспользоваться массивом практически невозможно. Но структурированный тип Record предназначен как раз для этого.

При описании переменной - записи предварительно определяют идентификатор типа Record в разделе описания типов.

type

<идентификатор пользовательского типа> = record

<список 1 идентификаторов полей записи>: <тип полей>;

<список 2 идентификаторов полей записи>: <тип полей>;

………………………………………………………………

<список n идентификаторов полей записи>: <тип полей>;

end;

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

Данный путь не единственный, можно описать переменную типа Record, при этом не описывая типа.

 

var

<список идентификаторов переменных>: record

<список 1 идентификаторов полей записи>: <тип полей>;

<список 2 идентификаторов полей записи>: <тип полей>;

………………………………………………………………

<список n идентификаторов полей записи>: <тип полей>;

end;

Примеры:

1)

type

child = record

f, i: String;

m, d, n: integer;

x, v: Real;

end;

var

a, b, c: child;

 

2)

var

a, b, c: record

f, i: String;

in, d, n: integer;

r, v: Real;

end;

 

3)

Month = (Jan, Feb, Mar, Apr, May, Jun, Jly,

Aug, Sep, Oct, Nov, Dec);

Date : record

D: 1 . . 31;

M: Month;

Y: 1900 .. 2020;

end;

 

В примерах 1) и 2) переменные a, b, c – это имена записей. В результате описания они имеют один и тот же тип и структуру. В примере 3) Date – имя записи, а разнотипные поля D, M, Y- имеют пользовательский тип (номер дня, месяц, год).

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

Примеры:

a.f , b.r , a.v, c.m

 

Переменные типа «запись» (указано только первое имя) могут участвовать в операторах присваивания, но никакие операции над ними выполняться не могут. Арифметические или любые другие операции могут выполняться только над отдельными полями записи.

Примеры:

a . f := 'Иванов’ ;

a . i := 'Иван' ;

а . т := 12;

a . d := 23;

a . n := 6 ;

a . r := 1.78;

a . v := 63.5;

m := m + a. r;

t := а . r / a . v;

 

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

 

with <переменная-запись> do <оператор>;

 

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

with <переменная-запись>[,<переменная-запись>] do <оператор>;

 

Пример (используем запись из приведённого выше примера):

with a do

begin

f:=’Иванов’ ; n:=6; d:=23; r:=1.78; v:=63.5;

end;

 

Запись может быть элементом массива. Такой массив называют массивом записей. Пример ниже показывает применение массива записей.

type

Point = record

X, Y: Real;

end;

Vector = array[1.. 3] of Point;

 

В этом примере Point – это запись, то с двумя полями -координатами точки, а Vector – это массив записей. Программа, использующая массив записей приведена ниже.

program p10_1;

{ программа осуществляет ввод информации об учащихся класса,

выводит на экран введенную информацию и отношение роста ученика

к его массе}

const

n = 30; { количество учеников в классе }

type

child = record { Этот тип – это запись, содержащая

информацию об ученике }

f, i : String;

m, d, n : integer;

r, v : Real ;

end;

TKlass = array[1.. n] of child; { Этот тип является массивом записей, содержащих информацию об учащихся класса }

Var

A: TKlass; { А экземпляр типа TKlass }

i, n : integer;

t : real;

begin

Write('Введите количество учеников – n , 0 < n < 30 ' );

Readln(n);

{ ввод данных об учениках }

for i := 1 to n do

begin

Writeln(' N ' , i) ;

Write('введите фамилию: '); Readln(A[i] . f);

Write('введите имя: '); Readln(A[i] . i);

Write('введите месяц рождения: '); Readln(A[i] . m);

Write('введите день рождения: '); Readln (A [i] .d);

Write('введите рост: '); Readln(A[i].r);

Write('введите вес: '); Readln(A[i].v);

Write('введите номер парты: '}; Readln(A[i].n);

end;

{ вывод на экран списка учеников и их данных }

for i:= 1 to n do

Writeln(i: 2, '/', A[i].f : 10, '/' , A[i].i : 10, '/' , A[i].d : 2,

'/' , A[i].m: 2, '/' , A[i].n : 2, '/ ' , A[i] . r : 4 : 1 , '/' ,

A[i].v: 4 : 1 , '/' , A[i] . r , '/' , A [i] .v : 6: 3) ;

end.

Множества

  <имя типа> = set of <базовый тип>; Примеры:

Описание функции и процедуры

  Function <идентификатор функции> (<списки параметров>) : <тип значения функции>;

Понятие формальных и фактических параметров

Формальные параметры - это переменные, используемые при описании подпрограммы в её заголовке, а фактические - это те параметры, которые мы передаем…   function sin(x: Real): Real;

Способы передачи параметров в подпрограмму через заголовок

Если необходимо изменить значение переданного параметра внутри подпрограммы, то в заголовке перед именем параметра или списком параметров ставится… Необходимо уяснить следующее: - на месте фактического параметра, в случае передаче его по ссылке, в строке вызова подпрограммы может быть записана…

Область видимости идентификаторов

1. Глобальными переменными называются переменные, описанные в головной программе. Они доступны в любом ее месте и во всех ее подпрограммах. 2. Подпрограмма описывается в некотором описательном разделе назовем его… На рисунке 11.1 приведена структура программы с вложенными подпрограммами: в головную программу вложена процедура 1 и…

Основные понятия

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

В языке Object Pascal имеются три вида файлов: текстовые, типизированные и нетипизированные.

Файловая система Паскаля — это часть DOS (дисковой операционной системы). Она имеет древовидную структуру (смотри рис. 12.1).

Корневой каталог, например диска С (логические диски имеют идентификаторы соответствующие буквам английского алфавита - А, В, С, D... ) может содержать подкаталоги, в которых возможно находятся другие подкаталоги и т. д. В корневом каталоге и во всех подкаталогах содержатся файлы. На рисунке 12.1 в корневом каталоге находятся два каталога TURBO и TOOLS. Оба, в свою очередь, содержат по 4 файла.

С:

TURBO

BIN

BGI

EXAMPLE

UNIT

TOOLS

ARC

SYS

MOUSE

DRIVERS

Рис.12.1. Пример файловой системы на диске С

 

Любой файл характеризуется основным именем и расширением, которые разделяются точкой. Основное имя состоит максимум из восьми символов, а расширение - максимум из трех символов. Расширение, как правило, указывает на предназначение файла. Например, pas - текст программы на Object Pascal, txt - текстовый файл, dat - файл с данными и т. п.

Примеры:

turbo.ехе

met_pas.pas

tools.с

gol_txt

autoexec.bat

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

Примеры:

'C:\TURBO\BGI'

'D:V'

'D:\ARM\BLM\STOP'

'C:\TOOLS\MOUSE'

 

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

Файлом (файловой переменной) в Object Pascal является объект типа file. При использовании файловой переменной необходимо учитывать следующие ограничения:

1.Файловой переменной не разрешается присваивать другое значение.

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

Работа с файлом, в общем случае, включает четыре операции:

· установление соответствия между файловой переменной и файлом на внешнем устройстве;

· открытие файла;

· чтение информации или запись её в файл;

· закрытие файла.

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

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

Текстовые файлы

Доступ к элементам текстового файла организуется последовательно. Указатель при считывании очередного элемента файла перемещается к следующему… Read(fp, a, s); Здесь происходит присваивание переменным a и s значений двух очередных элементов их файла, связанного с файловой…

– Конец работы –

Используемые теги: Лекция, Интегрированная, среда, состав, языка, Object, Pascal, состав, языка0.097

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Лекция 1. Интегрированная Среда и Состав языка Object Pascal. Состав языка

Что будем делать с полученным материалом:

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

Еще рефераты, курсовые, дипломные работы на эту тему:

ЛЕКЦИЯ № 1. Факторы выживания в природной среде ЛЕКЦИЯ № 2. Обеспечение водой ЛЕКЦИЯ № 3. Обеспечение питанием ЛЕКЦИИ по ОБЖ
КЛАСС Содержание Стр I четверть ЛЕКЦИЯ Факторы выживания в природной среде ЛЕКЦИЯ... ЛЕКЦИЯ Факторы выживания в природной... ЛЕКЦИЯ Обеспечение питанием...

Лекция первая. ИСТОРИЯ СОЦИОЛОГИИ КАК ОБЛАСТЬ ЗНАНИЯ Лекция вторая. ИЗ КАКИХ ИДЕЙ РОДИЛАСЬ СОЦИОЛОГИЯ: ИНТЕЛЛЕКТУАЛЬНЫЕ ИСТОКИ НОВОЙ НАУКИ Лекция третья. СОЦИОЛОГИЯ ОГЮСТА КОНТА ЛЕКЦИИ
Оглавление... ОТ АВТОРА... Лекция первая ИСТОРИЯ СОЦИОЛОГИИ КАК ОБЛАСТЬ ЗНАНИЯ Лекция вторая ИЗ КАКИХ ИДЕЙ РОДИЛАСЬ СОЦИОЛОГИЯ ИНТЕЛЛЕКТУАЛЬНЫЕ ИСТОКИ НОВОЙ НАУКИ...

Учебная программа курса. 4. Лекция 1. История психологии как наука. 5. Лекция 2. Античная философия и психология. 6. Лекция 3. Развитие психологии в Средневековый период. 19. Лекция 16. Тревога и защита
Введение... Учебная программа курса... Рабочая программа курса Лекция История психологии как наука...

Этапы создания программы в среде Pascal ABC.NET 1. Запустить среду разработки Pascal ABC.NET
Лабораторная работа Разветвляющиеся программы Этапы создания программы в среде PascalABC NET... Запустить среду разработки PascalABC NET...

Лекции 1.ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ. 2 ЛЕКЦИИ 2. МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ. СИСТЕМЫ СЧИСЛЕНИЯ. 12 ЛЕКЦИЯ 3. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ ЭВМ. 20 ЛЕКЦИЯ 4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРОВ.. 49 Широко распространён также англоязычный вар
gl ОГЛАВЛЕНИЕ... Лекции ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ... ЛЕКЦИИ МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ СИСТЕМЫ СЧИСЛЕНИЯ...

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

Формирование лексических навыков английского языка на среднем этапе обучения в средней школе
Попытаемся ответить на эти вопросы.Как известно, программа требует к концу второго года обучения усвоения 550 лексических единиц далее ЛЕ , куда… Исходя из этой средней цифры и следует проводить функционально ориентированный… Естественно, что реально-информативное содержание каждой темы подтемы требует соответствующего лексического…

Лекция 1. Морфология – центр языкового пространства, и для того, чтобы узнать язык, надо прежде всего понять его морфологию
Введение в морфологию... Морфология центр языкового пространства и для того чтобы узнать язык надо прежде всего понять его...

Два объекта истории русского языка: живой язык диалектный и литературный язык
Новые общественные функции приобретает русский язык по мере сложения новой исторической общности советского народа он становится межнациональным... Современный период... Горшкова Хабургаев ИГРЯ...

Интегрированная среда языка программирования ТУРБО ПАСКАЛЬ
Общая структура программ на языке Паскаль... Интегрированная среда языка программирования ТУРБО ПАСКАЛЬ... Основные файлы пакета Турбо Паскаль...

0.031
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам