Отличие процедуры от функции

1. Функция в отличие от процедуры возвращает единственное скалярное значение

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

3. Имя функции имеет тип.

4. Обращение к функции представляет операнд, а процедуры оператор.

 

22. то же что и 7

23. Метки и константы языка Паскаль. Правила задания и использования.

 

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

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

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

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

При описании переменных указывается не только их имя, но и тип. Что это значит? Именно то, сколько отвести под них памяти и что там планируется сохранять. Точнее хранится там всегда будут числа в двоичной системе счисления. Но что они значат, может быть чем угодно: числом целым, дробным, символом. Т.е. тип переменной определяет то, что мы можем сохранить в участке памяти, с которым связана описываемая переменная.

В примере ниже происходит ввод значений двух переменных пользователем и обмен их значений местами за счет третьей переменной, служащей буфером. Тип переменных integer. Это означает, что переменным можно присвоить только целые числа в диапазоне от -32768 до 32767. Под тип integer в языке программирования Паскаль отводится 2 байта, что равно 16 битам, а это значит, что можно хранить 216 (65536) значений (отрицательные и положительные числа, а также ноль). В этих диапазонах переменные x, y и b могут принимать какие угодно значения.

var x, y, b: integer;begin write ('Input first number: '); readln (x); write ('Input second number: '); readln (y); writeln ('x = ', x, ', y = ', y); writeln ('Changing values... changing values...'); b := x; x := y; y := b; writeln ('x = ', x, ', y = ', y); readlnend.

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

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

Главное преимущество констант заключается в том, что они описываются в начале программы и им сразу присваивается значение. При выполнении программы константы не изменяются. Но если при правке кода, программист решит поменять значение константы, он впишет в ее описание другое значение, а сам код программы редактировать не придется. Отсюда вывод, если в программе часто планируется использоваться какое-то число, то опишите его в разделе констант.

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

а) целые числа записываются без дробной части со знаком или без него;

б) вещественные числа записываются со знаком или без него, с фиксированной или плавающей точкой (например, +3.14 или -19е-5);

в) логическая константа - либо false либо true (ложь или истина);

г) символьная константа - любой символ, заключенный в апострофы (например, '<>', 'Y');

д) строковая константа - любая последовательность символов, заключенная в апострофы (например, 'это моя строка', ' "').

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

 

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

const pi = 3.14;var r, l, s: real;begin write ('Радиус? '); readln (r); l := 2 * pi * r; s := pi * r * r; write ('Длина: ', l:5:1, '. Площадь: ', s:5:1); readlnend.

Можно теоретически показать, что рассмотренных операторов вполне достаточно для написания программ любой сложности. В этом отношении наличие в языке операторов перехода кажется излишним. Более того, современная технология структурного программирования основана на принципе «программировать без GOTO»: считается, что злоупотребление операторами перехода затрудняет понимание программы, делает ее запутанной и сложной в отладке. Тем не менее, в некоторых случаях использование операторов перехода может упростить программу. Оператор перехода имеет вид: GOTO <метка>. Здесь GOTO - зарезервированное слово (перейти [на метку]); <метка> - метка. Метка в Турбо Паскале - это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. В целях совместимости со стандартным языком Паскаль в языке Турбо Паскаль допускается в качестве меток использование также целых чисел без знака. Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появиться в программе, метка должна быть описана. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток:

label

loop, 1b1, 1b2;

begin

.......

goto 1b1;

.......

loop: ......

.......

1b1:1b2: ......

........

goto 1b2;

.......

Действие оператора GOTO состоит в передаче управления соответствующему меченному оператору.

При использовании меток необходимо руководствоваться следующими правилами:

метка, на которую ссылается оператор GOTO, должна быть описана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы;

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

 

24.Команды MS DOS бывают двух типов:

1. Внутренние команды, их выполняет командый процессор COMMAND.COM (например, dir, copy).

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

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

РАБОТА С ФАЙЛАМИ

· Создание текстовых файлов

copy con имя_файла

После ввода этой команды нужно будет поочередно вводить строки файла. В конце каждой строки надо щелкать клавишей Enter. А после ввода последней - одновременно нажать Ctrl и Z, а затем Enter.

· Удаление файлов

del (путь)имя_файла

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

· Переименование файлов

ren (путь)имя_файла1 имя_файла2

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

· Копирование файлов

copyимя_файла (путь)имя_файла1

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

РАБОТА С КАТАЛОГАМИ

· Команда смены текущего диска

A:- переход на диск А

C:- переход на диск С

· Просмотр каталога

dir (путь)(имя_файла) (/p) (/w)

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

Изменение текущего каталога cdпуть Создание каталога mdпуть Удаление каталога rdпуть

25. Простые операторы в Паскале. Составной оператор.

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

2.1. Оператор присваиванияСинтаксис оператора присваивания <имя переменной> := <выражение>;

Примеры: k := 7; i := sqr(k); n := k * i;

В этих примерах оператор присваивания k := 7 служит для присваивания переменной k значения 7, оператор присваивания i := sqr(k) служит для присваивания переменной i значения k2 , т.е. значения 7 * 7 = 49, а оператор присваивания n := k * i присваивает переменной n значения k * k2 , т.е. значения 7 * 49 = 343.

При программировании широко используются операторы присваивания вида k := k + 1, смысл которого заключается в том, что надо “взять значение переменной с именем k, прибавить к нему единицу, а затем присвоить новое значение переменной с именем k”. Такой прием называют организацией счетчика.

2.2. Условный оператор

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

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

Пример: if x <= 0 then y := - a * x else y := b * exp(x);

Условный оператор позволяет использовать проверку истинности условия для выбора между разными возможными способами действия. В нем слова if, then и else являются зарезервированными. Если условное выражение, следующее за if истинно, то выполняется оператор (возможно, составной), следующий за then. Если условное выражение ложно, то выполняется оператор (возможно, составной), следующий за словом else. На месте любого оператора в конструкции if-then-else может стоять другой условный оператор if-then-else.

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

Оператор перехода. Метка

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

Синтаксис оператора перехода:

goto <метка>;

Метка - это "адрес" оператора, которому передается управление. Она представляет собой целое положительное число, содержащее не более 4 цифр (от 1 до 9999), либо символьное имя. Метка записывается перед оператором, отделяясь от него двоеточием. Каждая метка, используемая в программе, должна быть описана в разделе Label, так же, как и все описанные метки должны хотя бы один раз встретиться в тексте.

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

2.4. Составной операторСоставной оператор начинается ключевым словом begin и заканчивается ключевым словом end.

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

begin <оператор 1>; ... ; <оператор N> end;

Ключевые слова begin и end в составном операторе являются "операторными скобками", выделяющими группу операторов. Составной оператор можно записывать в любом месте программы, где можно писать оператор.Пример: if x < 1 then begin y := 1 - x; z := sqr(x) end else begin

y := 1 + x; z := ln(x) end;

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

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

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

Case <выражение> of

метка, ... , метка: <оператор 1>;

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

метка, ... , метка: <оператор N>;

end;

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

Значения в списках должны быть того же перечисляемого типа, что и выражение в операторе. Слова case и end действуют как операторные скобки.

Рассмотрим в качестве примера программу расчета площади пяти фигур s (квадрата со стороной a, прямоугольника со сторонами a и b, ромба с диагоналями d1 и d2, параллелограмма с основанием a и высотой h1, трапеции со сторонами a и b и высотой h2), если исходные данные задаются для одного из вариантов.

program ploshad;

Var a, b, d1, d2, h1, h2, s : real;

n:1..5;

Begin

read(n, a, b, d1, d2, h1, h2);

case n of

1: s := sqr(a);

2: s := a * b;

3: s := d1 * d2;

4: s := a * h1;

5: s := ((a + b) * h2) / 2;

end;

writeln('Площадь фигуры=',s)

End.

 

26.