Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
000voprosy_k_ehkzamenu_po_oaipr_rakovcy.doc
Скачиваний:
4
Добавлен:
24.12.2018
Размер:
381.44 Кб
Скачать

«УТВЕРЖДАЮ»

Зав. кафедрой ИСТ

____________О.И.Наранович

Протокол № ____

от «___»_________ 2011 г.

Вопросы к экзамену по дисциплине «Основы алгоритмизации и программирования» 1 курс ИСТ-11, ИСТ12. (1 семестр)

Преподаватель: Раковцы Г.М.

  1. Алгоритм. Свойства. Типы

  2. Базовые структуры алгоритмов

  3. Способы описанияалгоритмов. Правила описаниясхем алгоритмов.

  4. Структура программы в языке Паскаль.

  5. Операции языка Паскаль.

  6. Конструкции языка паскаль : константа, переменные, индентификатор.

  7. Разновидность типов данных.

  8. Тип данных, определяемые пользователем.

  9. Перечисляемый и интервальный типы данных

  10. Логический тип данных. Логические операции and, or, xor, not.

  11. Символьный тип данных.

  12. Стандартные функции арифметических выражений.

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

  14. Ввод-вывод данных. Операторы процедур ввода в языке Паскаль

  15. Вывод данных в языке Паскаль. Форматный вывод.

  16. Условный оператор и его виды.

  17. Оператор безусловного перехода.

  18. Оператор выбора

  19. Циклы с заданным числом повторения. Оператор FOR.

  20. Понятие цикла. Оператор WHILE.

  21. Понятие цикла. Оператор REPEAT.

  22. Подпрограммы. Функции

  23. Подпрограммы. Процедуры

  24. Процедуры и функции. Основные отличия.

  25. Файлы. Общие понятия.

  26. Текстовые Файлы

  27. Блок-схема

  28. Тип данных массив. Описание, ввод, вывод массива.

  29. Ввод-вывод матриц. Операции над матрицами.

  30. Нахождение наибольшего значения в массиве. ( алгоритм)

  31. Нахождение наименьшего значения в массиве. ( алгоритм)

  32. Параметры-переменные в подпрограммах

  33. Параметры-значения и параметры-константы в подпрограммах

  34. Формальные и фактические параметры в подпрограммах

  35. Процедуры и функции работы со всеми типами файлов

  36. Структурированный тип данных. Множества

  37. Структурированный тип данных. Записи

  38. Записи с вариантной частью.

  39. Строковый тип. Процедуры и функции строковых данных

  40. Глобальные и локальные переменные в подпрограммах

  41. Бестиповые (нетипизированные) файлы.

  42. Компонентные (типизированные) файлы

  43. Графика. Модуль Graph.

  44. Базовые графические процедуры языка Паскаль.

  45. Стандартные модули в языке Паскаль

  46. Пользовательские модули в языке Паскаль. Описание и структура модуля.

  47. Множества, операции над множествами

  48. Рекурсия. Опережающее описание.

Ответы:

1.

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

Свойства алгоритмов

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

Обязательные свойства алгоритмов

1. Дискретность алгоритма-поочередное выполнение команд алгоритма за конечное число шагов приводящее к решению задачи.

2. Oпределенность (или точность) алгоритма - каждая команда алгоритма должна однозначно определять действие исполнителя.

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

4. Результативность (конечность) алгоритма - исполнение алгоритма должно закончиться за конечное число шагов.

Не обязательное свойство алгоритмов

5. Массовость алгоритма - обеспечивающие решения всего класса задач данного типа.

Свойство массовости не является необходимым свойством алгоритма. Оно скорее определяет качество алгоритма.

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

  1. Линейный

  2. Алгоритмы с ветвлением (ветвящийся)

  3. Алгоритмы с повторением (циклический)

Остановимся подробнее на каждом из типов.

1. Линейный алгоритм

ЛИНЕЙНЫЙ АЛГОРИТМ - действия выполняются друг за другом не зависимо ни от каких обстоятельств.

2. Ветвящийся алгоритм

В зависимости от того, выполняется или нет условие в точке ветвления, происходит выбор направления перехода к следующему элементу. Такой тип алгоритма называется ВЕТВЯЩИЙСЯ.

3. Циклический алгоритм

ЦИКЛИЧЕСКИЙ АЛГОРИТМ - некоторые действия повторяются многократно, пока выполняется условие, стоящее в точке ветвления. Если условие принимает значение ложь, происходит выход из цикла.  

2.

Базовые структуры алгоритмов — это определенный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий.

К основным структурам относятся следующие:

    • линейные

    • разветвляющиеся

    • циклические

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

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

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

    Циклическим называется алгоритм, в котором некоторая часть операций (тело цикла — последовательность команд) выполняется многократно. Однако слово «многократно» не значит «до бесконечности.

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

    • блок проверки условия

    • блок, называемый телом цикла

Существуют три типа циклов:

  • Цикл с предусловием

  • Цикл с постусловием

  • Цикл с параметром (разновидность цикла с предусловием)

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

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

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

3.

К основным способам описания алгоритмов можно отнести следующие:

  • словесно-формульный;

  • структурный или блок-схемный;

  • с использованием специальных алгоритмических языков;

  • с помощью граф-схем;

  • с помощью сетей Петри.

Перед составлением программ чаще всего используются словесно-формульный и блок-схемный способы Словесно-формульный способ. При словесно-формульном способе алгоритм записывается в виде текста с формулами по пунктам, определяющим последовательность действий. Пусть, например, необходимо найти значение следующего выражения: у=2а-(х+6). Словесно-формульным способом алгоритм решения этой задачи может быть записан в следующем виде: 1.Ввести значения а и х. 2.Сложить х и 6. 3.Умножить а на 2. 4.Вычесть из 2а сумму (х+6). 5.Вывести у как результат вычисления выражения. Блок-схемный. При блок-схемном описании алгоритм изображается геометрическими фигурами (блоками), связанными по управлению линиями (направлениями потока) со стрелками. В блоках записывается последовательность действий. Данный способ по сравнению с другими способами записи алгоритма имеет ряд преимуществ. Он наиболее нагляден: каждая операция вычислительного процесса изображается отдельной геометрической фигурой. Кроме того, графическое изображение алгоритма наглядно показывает разветвления путей решения задачи в зависимости от различных условий, повторение отдельных этапов вычислительного процесса и другие детали. Блок-схема должна содержать все разветвления, циклы и обращения к подпрограммам, содержащиеся в программе.

4.

Программа состоит из заголовка и блока.

Заголовок программы

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

program n (input, output, x, y,…);

здесь n – имя программы; input – файл ввода; output – файл вывода; x, y – внешние файлы, используемые в программе.

Заголовка может и не быть или он может быть без параметров.

Блок

Блок программы состоит из шести разделов, следующих в строго определенном порядке:

  1. раздел меток (label)

  2. раздел констант (const)

  3. раздел типов (type)

  4. раздел переменных (var)

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

  6. раздел действий (операторов).

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

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

Раздел меток (label)

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

Раздел констант (const)

Если в программе используются константы, имеющие достаточно громоздкую запись (например, число пи с 8-ю знаками), либо сменные константы (для задания варианта программы), то такие константы обычно обозначаются какими-либо именами и описываются в разделе const, а в программе используются только имена констант. Это делает программу более наглядной и удобной при отладке и внесении изменений.

Раздел типов (type)

Если в программе вводится тип, отличный от стандартного, то этот тип описывается в разделе type:

type t1 = вид_типа; где t1– идентификаторы вводимых типов.

Раздел переменных (var)

Пусть в программе встречаются переменные v11, v12,…; все они должны быть описаны следующим образом:

var v11, v12,…: type1; здесь v11, v12,… - имена переменных; type1 – тип переменных

Пример. var k, i, j: integer; a, b: real;

Каждая переменная должна быть описана до ее использования в программе и отнесена к одному и только одному типу. Названия разделов (const, type, var…) указываются только один раз.

Таким образом, в разделе var вводится имя каждой переменной и указывается, к какому типу эта переменная принадлежит. Тип переменной можно задать двумя способами: указать имя типа (например, real, color и т.д.), либо описать сам тип, например: array[1..16] of char

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

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

Раздел действий (операторов)

Эта часть программы начинается с ключевого слова begin и заканчивается словом end, после которого должна стоять точка. Раздел действий есть выполняемая часть программы, состоящая из операторов.

5.

Стандартные функции и процедуры языка Паскаль для работы со строками и символами Символы Chr(x : byte) : Char - Возвращает символ ASCII кода х Ord(c : Char) : Byte - Возвращает ASCII-код символа c UpCase(c : Char) : Char - Переводит символы 'a'..'z' в верхний регистр Pred(c : Char) : Char - Выдает предшествующий c символ Succ(c : Char) : Char - Выдает последующий за c символ Строки Length(s : String) : Byte - Возвращает длину строки s ConCat(s1, s2, s3 ... sn : String) : String - Возвращает конкатинацию (слияние) строк s1...sn Copy(s : String; start, len : Integer) : String - Возвращает подстроку длиной len, начинающуюуся с позиции start строки s Delete(VAR s : String; start, len : Integer) - Удалает подстроку длиной len начиная с позиции start строки s Insert(VAR s : String; SubS : String; start : Integer ) - Вставляет в s подстроку SubS, начиная с позиции start Pos(SubS, s : string) : byte - Ищет вхождение подстроки SubS в s и возвращает номер первого символа SubS в s, или 0, если s не соержит SubS Функции преобразования: * Function StrLower(s: String): String; Преобразует в строке S все прописные буквы в строчные * Function StrUpper(s: String): String; Преобразует в строке S все строчные буквы в прописные

6.

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

  1. Целочисленные константы. В качестве значений может использоваться любое целочисленное данное в десятичном или шестнадцатеричном формате (year=2003)

  2. Вещественные константы определяются числами, записанными в десятичном формате данных (time=0.2e+4, yyy=304.0)

  3. Символьные константы могут быть определены только посредством символов таблицы ASCII. При этом сам символ заключается в апострофы (var1='A')

  4. Строковые константы определяются произвольной последовательностью символов, заключенных в апострофы (stroke='IBM')

  5. Типизированные константы (переменные с начальным значением) . Каждой типизированной константе ставится в соответствие имя, тип, начальное значение (year1:integer =1995)

Переменной называется элемент программы, который предназначен для хранения, коррекции и передачи данных внутри программы. Раздел описания переменных начинается с зарезервированного слова var. Для объявления переменной необходимо указать имя переменной и ее тип. Однотипные переменные могут перечисляться через запятую перед указанием их типа. Пример:   a: integer;   b: boolean;   c, b: real;   e: integer; Все переменные делятся на глобальные и локальные. Глобальными являются переменные, объявленные вне процедур и функций, а локальными - объявленные внутри процедур и функций.

7.

Простые (скалярные) типы данных

К скалярным (scalar - простые) типам данных относят типы данных таких величин, значения которых не содержат составных частей.

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

Целочисленные типы данных

byte

shortint

integer

word

longint

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

Вещественные типы данных

real

single

double

extended

comp

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

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

символьный тип char определяется множеством значений кодовой таблицы ПЭВМ.

Каждому символу приписывается целое число в диапазоне от 0 до 255.

Булевский тип

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

Пользовательские типы

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

Интервальный тип (диапазон)

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

Структурированные типы данных

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

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

Строки

Строка (string) – это последовательность символов кодовой таблицы персонального компьютера. Количество символов в строке может изменяться от 0 до 255.

Массивы

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

Множества

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

Записи

Для записи комбинации объектов разных типов в Паскале применяется комбинированный тип данных – запись (record).

Файлы

Большие совокупности данных удобно иметь записанными во внешней памяти в виде последовательности сигналов. В Паскале для этих целей предусмотрены специальные объекты – файлы (file). Файлом называется совокупность данных, записанная во внешней памяти под определенным именем.

8. Пользовательские типы данных.

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

    1. Перечислимый тип данных задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. При описании отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Например, Var Season: (winter,spring,summer,autum );        Temp: (23,24,25,26);

    2. Интервальный тип позволяет задавать две константы,определяющие границы диапазона значений для каждой переменной.Обе константы должны принадлежать одному и тому же стандартному типу (кроме real). Например,  Var    S:1..30;                                   Сh:’a’..’f’;

    3. Указательный типыих значениями являются адреса памяти. В отличие от стандартного указательного типа Pointer, пользовательский тип определяет множество значений, которые указывают на динамические переменные опеределенного типа , называемого базовым типом. Указатель на какой-либо тип может быть описан до обьявления самого типа: Type PtStack=^Stack;          Stack=array[1..40] of real;

    4. Процедурный тип позволяет обьявлять переменные, которым допускается присваивание имен процедур, функций и методов, а ткже передавать такие переменные и имена в качестве параметров. Описание процедурных типов имеет такой же синтаксис, как и обьявление процедур и функций: Type Tproc1=procedure (var x,y:real);          Tproc2=function ( x:real):real;

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

type Cardsuit = (clubs, diamonds, hearts, spades);

Перечислимый тип может использоваться в объявлениях переменных и формальных параметров функций (процедур, методов). Значения перечислимого типа могут присваиваться соответствующим переменным и передаваться через параметры соответствующих типов в функции. Кроме того, всегда поддерживается сравнение значений перечислимого типа на равенство и неравенство. Некоторые языки поддерживают также другие операции сравнения для значений перечислимых типов. Результат сравнения двух перечислимых значений в таких случаях определяется, как правило, порядком следования этих значений в объявлении типов — значение, которое в объявлении типа встречается раньше, считается «меньше» значения, встречающегося позже. Иногда перечислимый тип или некоторый диапазон значений перечислимого типа также может быть использован в качестве типа индекса для массива. В этом случае для каждого значения выбранного диапазона в массиве имеется один элемент, а реальный порядок следования элементов соответствует порядку следования значений в объявлении типа.

Интервальный тип.

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

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

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

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

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

К логическим относятся типы Boolean, ByteBool, Bool, wordBool и LongBool. В стандартном Паскале определен только тип Boolean, остальные логические типы введены в Delphi  для совместимости с Windows.

Все логические типы могут принимать лишь два значения: False (ложь) и True (истина). Иногда говорять, что логическая переменная имеет значение "да" или "+" (истина), "нет" или "-" (ложь).

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

Var a: Boolean;

      d34, Done: Boolean;

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

a:=True;

Done:=False;

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

Логические операции

Логические операции применяются к величинам логического типа, результат операции — тоже логического типа. Имеется одна унарная логическая операция not (отрицание) и три бинарные операции and (и), or (или), xor (исключающее или).

Логическая операция not

Ставиться перед логической переменной (выражением). Инвертирует (меняет на противоположное) значение логической переменной или логического выражения.

Логическая операция and

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

Логическая операция or

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

Логическая операция xor

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

11.

Символьный тип (Сhar) — простой тип данных, предназначенный для хранения одного символа в определённой кодировке. Основным применением является обращение к отдельным знакам строки.

Значениями символьного типа char являются элементы конечного и упорядоченного множества символов, зависящего от текущей кодовой таблицы. В языке паскаль это множество состоит из 256 символов, пронумерованных от 0 до 255. В это число символов входят все символы, которые вы можете получить на экране с помощью нажатия какой либо клавиши или комбинации клавиш, а также другие не видимые символы. Первые 128 символов с кодами от 0 до 127 всегда соответствуют так называемым “Ascii – символам ” , а остальные 128 в различных таблицах используются для кодировки букв того или иного алфавита.

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

Компилятор с языка программирования может обрабатывать управляющие символы определенным в нем нестандартным образом. В тексте программы константы символьного типа записываются двумя способами. Наиболеее наглядный из них – это заключение любого изображаемого символа в апострофы. Например: ‘*’, ‘f’, ‘1’. Для того чтобы таким способом представить сам символ апостроф, его записывают внутри апострофов дважды: ‘’’’ Второй способ позволяет задавать любые символьные константы. В том числе и соответствующие управляющим символам, по их кодам. В этом случае обозначение константы начинается с символа “#”, за которым следует десятичный код (т.е. номер от 0 до 255) соответствующего символа. Например #13, #65. Если мы считываем значение символьной переменной с клавиатуры или из файла, то соответствующий символ должен быть набит уже без апострофов. А если считывается последовательность символов (текст), то они набиваются все подряд, без разделителей, так как и пробел, и другие разделители числовых констант также являются значимыми символами. Множество символьных констант является упорядоченным так, что символ “c1” считается меньше символа “c2”, если код первого символа соответственно меньше кода второго. Строчные и прописные буквы являются различными символами, то есть 'a' <> 'A', объясняется это тем, что в любой кодовой таблице каждой из них соответствует свой символ. Все строчные и прописные английские буквы, а также символы для десятичных цифр упорядочены между собой, то есть '0' < '9', 'A' < 'Z' и 'a' < 'z', но 'Z' < 'a'. С символьным типом связаны следующие функции: 1) функция chr(i) выдает по порядковому номеру символа в кодовой таблице соответствующий символ.следовательно, на месте i может стоять целочисленное выражение, значение которого находится в диапазоне от 0 до 255; 2) функция ord(с), наоборот, выдает номер символа с в кодовой таблице, здесь с — или переменная символьного типа, или символьная константа, или функция, результатом выполнения которой является символ (например, chr); 4) функция pred(с) выдает символ, предшествующий в кодовой таблице символу “с”. Для символа с кодом 0 значение этой функции также не определено; 5) функция upcase(с) переводит символы, обозначающие строчные английские буквы, в прописные, остальные символы (в том числе и соответствующие русским буквам) она оставляет неизменными. Например, upcase('f') есть 'F', а upcase('*') есть '*'. Обратной функции, т.е. функции, переводящей прописные буквы в строчные, в стандартной библиотеке не существует.

12.

стАндАртные мАтемАтические функции

обращение

тип Аргумента

тип результа

функция

AbS(X)

целый, вещественный

целый, вещественный

модуль АргументА

ArctAN(X)

целый, вещественный

вещественный

АрктАнгенс

coS(X)

целый, вещественный

вещественный

косинус

eXP(X)

целый, вещественный

вещественный

ех - экпонентА

frAc(X)

целый, вещественный

вещественный

дробнАя чАсть х

INt(X)

целый, вещественный

вещественный

целАя чАсть х

lN(X)

целый, вещественный

вещественный

нАтурАльный логАрифм

rANDoM

&NbSP;

вещественный

псевдослучАйное число [0,1]

rANDoM(X)

целый

целый

псевдослучАйное число [0,х]

rouND(X)

вещественный

целый

округление до ближАйшего целого

SIN(X)

целый, вещественный

вещественный

синус

Sqr(X)

целый, вещественный

вещественный

квАдрАт х

Sqrt(X)

целый, вещественный

вещественный

корень квАдрАтный из х

truNc(X)

вещественный

целый

ближАйшее целое, не превышАющее х по модулю

13.

Составной оператор - это последовательность произвольных операторов программы, заключенная в операторные скобки - зарезервированные слова begin ... end. Составные операторы - важный инструмент Object Pascal, дающий возможность писать программы по современной технологии структурного программирования (без операторов перехода goto).

Фактически весь раздел операторов, обрамленный словами begin ... end, представляет собой один составной оператор. Поскольку зарезервированное слово end является закрывающей операторной скобкой, оно одновременно указывает и конец предыдущего оператора, поэтому ставить перед ним символ “;” необязательно. Наличие точки с запятой перед end означает, что между последним оператором и операторной скобкой end располагается пустой оператор. Пустой оператор не содержит никаких действий, просто в программу добавляется лишняя точка с запятой. В основном пустой оператор используется для передачи управления в конец составного оператора: как и любой другой, пустой оператор может быть помечен, и ему можно передать управление.

14.

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

Поэтому язык программирования должен иметь инструменты, как для ввода данных, так и их вывода. В Паскале это процедуры read и readln для ввода данных и write и writeln – для вывода. Операторы с окончанием ln отличает то, что после их выполнения происходит перевод указателя на новую строку.

Откуда можно ввести данные в программу? С клавиатуры, файла.

Куда можно вывести данные? На экран, в файл, на принтер.

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

Ввод данных с клавиатуры

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

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

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

15.

Вывод данных на экран. Форматированный вывод

Вывод данных на экран или файл в языке программирования Pascal осуществляется с помощью процедур write и writeln. Здесь будет рассмотрен вывод только на экран.

Допустим, нам требуется отобразить на экране пару фраз. Если мы хотим, чтобы каждая из них начиналась с новой строки, то надо использовать writeln, если нет – то write.

Особого смысла использовать два оператора write, когда можно все фразы записать в одном, конечно нет. Write чаще используется, когда после какого-то сообщения на экране требуется получить данные от пользователя. Т.е. выводим на экран «Введи число: » и не переводим курсор на новую строку, а ждем ввода.

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

Во втором случае мы видим, что процедуры вывода (как write так writeln) позволяют конструировать выводимую информацию из различных компонент (строк-констант и переменных).

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

16.

Условные операторы Pascal-Паскаль

Условные операторы позволяют выбирать для выполнения те или иные части программы в зависимости от некоторых условий. Если, например, в программе используются вещественные переменные x и z, и на каком-то этапе решения задачи требуется вычислить z=max(x, y), то желаемый результат получается в результате выполнения либо оператора присваивания z:=x, либо оператора присваивания z:=y. Поскольку значения переменных x и y заранее неизвестны, а определяются в процессе вычислений, то в программе необходимо предусмотреть оба эти оператора присваивания. Однако на самом деле должен выполниться один из них. Поэтому в программе должно содержаться указание о том, в каком случае надо выбирать для исполнения тот или иной оператор присваивания.

Это указание естественно сформулировать с использованием отношения x>y. Если это отношение при текущих значениях x и y справедливо (принимает значение true), то для исполнения должен выбираться оператор z:=x; в противном случае для исполнения должен выбираться оператор z:=y (при x=y безразлично, какой оператор выполнять, так что выполнение оператора z:=y в этом случае даст правильный результат).

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

if B then S1 else S2

Здесь if (если), then (то) и else (иначе) являются служебными словами, В – логическое выражение, а S1 и S2 – операторы.

Выполнение такого условного оператора в Паскале сводится к выполнению одного из входящих в него операторов S1 или S2: если заданное в операторе условие выполняется (логическое выражение В принимает значение true), то выполняется оператор S1, в противном случае выполняется оператор S2.

Алгоритм решения упомянутой выше задачи вычисления z= max( x, y) можно задать в виде условного оператора Паскаля

if x>y then z:= x else z:= y

При формулировании алгоритмов весьма типичной является такая ситуация, когда на определенном этапе вычислительного процесса какие-либо действия надо выполнить только при выполнении некоторого условия, а если это условие не выполняется, то на данном этапе вообще не нужно выполнять никаких действий. Простейшим примером такой ситуации является замена текущего значения переменной х на абсолютную величину этого значения: если x<0, то необходимо выполнить оператор присваивания x:= - x; если же x>=0, то текущее значение х должно остаться без изменений, т.е. на данном этапе вообще не надо выполнять каких-либо действий.

В подобных ситуациях удобна сокращенная форма записи условного оператора в Паскале:

if B then S

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

В языке программирования Паскаль в условном операторе между then и else, а также после else по синтаксису может стоять только один оператор. Если же при выполнении (или невыполнении) заданного условия надо выполнить некоторую последовательность действий, то их надо объединить в единый, составной оператор, т.е. заключить эту последовательность действий в операторные скобки begin... end (это важно!). Если, например, при x< y надо поменять местами значения этих переменных, то условный оператор будет записан следующим образом в Паскале:

if x<y then begin r:=x; x:=y; y:=r end

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

if B1 then if B2 then S1 else S2

допускает, вообще говоря, две разные трактовки:

  • как полный условный оператор Паскаля вида

if B1 then begin if B2 then S1 end else S2

  • как сокращенный условный оператор Паскаля вида

if B1 then begin if B2 then S1 else S2 end

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

Оператор выбора Паскаля

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

Структура оператора выбора в Паскале такова:

Case <ключ_выбора> of <список_выбора> [else <оператор_иначе>] end

Здесь case, of, else, end – зарезервированные слова (случай, из, иначе, конец);

  • <ключ_выбора> - выражение порядкового типа;

  • <список_выбора> - одна или более конструкций вида:

    • <константа_выбора>: <оператор>;

  • <константа_выбора> - константа того же типа, что и выражение

    • <ключ_выбора>;

<операторы> - произвольные операторы Паскаля.

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else <оператор_иначе> можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.

Например, составим программу, которая по номеру дня недели выводит на экран его название:

Пример программы с использованием Case of

Program dni_nedeli;

Var n: byte;

Begin

Readln(n);

Case n of

1: writeln(‘понедельник ’);

2: writeln(‘вторник ’);

3: writeln(‘среда ’);

4: writeln(‘четверг ’);

5: writeln(‘пятница ’);

6: writeln(‘суббота ’);

7: writeln(‘воскресенье’);

else writeln(‘дня недели с номером’, n,’нет’);

  end;

end.

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

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов ‘ y’ или ‘ Y’ выведет на экран «Да», а при вводе ‘ n’ или ‘ N’ – слово «Нет».

Пример программы с использованием Case of с несколькими переменными

Var ch: char;

Begin

Readln(ch);

Case ch of

N, n: writeln(‘Да ’);

Y, y: writeln(‘Нет ’);

End;

End.

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

17.

Помимо операторов условного перехода существует также оператор безусловного перехода goto. Формат:

goto метка

Оператор goto переходит при выполнении программы к определенному оператору программы, перед которым находится метка. Метка должна быть описана в разделе описания меток той программы (процедуры или функции), в которой она используется. Нельзя перейти из одной процедуры или функции в другую.

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

Пример

program pr;

label 1;

var c:char;

…..

begin

1:

…..

writeln('вы хотите повторить программу, i/n');

readln(c);

if c='i' then goto 1;

if c='n'then writeln('Спс. за использование программы')

end.

18.

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

case выражение of вариант : оператор; ... вариант : оператор; end;

или

case выражение of вариант : оператор; ... вариант : оператор; else оператор end;

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

19., 20, 21.