- •Программирование на языке паскаль Учебное пособие
- •1. Общая характеристика языков программирования
- •1.1. Языки программирования
- •1.2. Трансляторы
- •1.3. История создания языков
- •1.4. Базовые структуры языков программирования
- •Контрольные вопросы
- •2. Описание языка паскаль
- •2.1. Основные объекты языка
- •2.2. Структура Паскаль-программы
- •2.3. Типизация данных
- •2.4. Объявление данных
- •Контрольные вопросы
- •3. Простые операторы. Ввод/вывод данных
- •3.1. Оператор присваивания и выражения
- •3.2. Операторы вызова процедур. Ввод/вывод данных
- •3.2.1. Процедуры ввода read и readln
- •Общая форма записи оператора
- •3.2.2. Процедуры вывода write и writeln
- •Контрольные вопросы
- •Каково назначение процедуры writeln без параметров? Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4. Структурные операторы. Организация ветвлений и циклов
- •4.1. Составной и пустой операторы
- •4.2. Организация ветвлений. Операторы выбора
- •4.2.1. Оператор ветвления if
- •4.2.2. Оператор варианта case
- •Общая форма записи
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4.3. Организация циклов. Операторы повторения
- •4.3.1. Оператор while
- •4.3.2. Оператор repeat
- •4.3.3. Оператор for
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •5. Организация подпрограмм. Процедуры и функции
- •5.1. Процедуры и их типизация
- •5.1.1. Встроенные процедуры
- •5.1.2. Процедуры пользователя
- •5.1.3. Процедуры без параметров
- •5.1.4. Фактические и формальные параметры
- •5.1.5. Локальные и глобальные переменные
- •5.1.6. Процедуры с параметрами-значениями
- •5.1.7. Процедуры с параметрами-переменными
- •5.1.8. Комбинированные процедуры
- •5.2. Функции пользователя. Рекурсивные функции
- •5.2.1. Определение функции
- •О бщая форма записи заголовка функции
- •5.2.2. Функции пользователя
- •5.2.3. Рекурсивные функции
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •6. Массивы. Данные типа array
- •Одномерные массивы
- •Общая форма записи
- •Общая форма записи
- •6.2. Многомерные массивы
- •6.3. Способы работы с массивами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •Обработка литерных величин. Данные типа char и string
- •7.1. Тип данных char
- •Работа программы
- •7.2. Массивы литер
- •7.3. Тип данных string
- •7.4. Строковые функции и процедуры
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •8. Множества. Данные типа set
- •О бщий вид регулярного типа
- •8.1. Определение типа set
- •8.2. Операции над множествами
- •8.2.1. Принадлежность множеству
- •8.2.2. Сравнение множеств
- •8.2.3. Действия над множествами
- •8.3. Вывод множеств
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •9. Комбинированный тип. Данные типа record
- •9.1. Оператор типа record
- •9.2. Оператор with
- •9.3. Записи с вариантами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •10. Файловый тип
- •10.1. Определение и описание типизированного файла
- •Общая форма записи
- •10.2. Типы файлов. Процедура работы с файлами
- •10.3. Основные приемы работы с файлами
- •10.4. Текстовые файлы
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Типизированные файлы
- •Текстовые файлы
- •Программирование графики
- •Основные понятия компьютерной графики
- •Формирование изображения на экране
- •Инициализация графического режима
- •Простейшие графические операторы (процедуры)
- •Основные приемы работы с графикой
- •Работа с цветом
- •Заполнение (закрашивание) произвольной замкнутой фигуры
- •Построение простейших геометрических фигур
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Библиографический список
Контрольные вопросы
Какие виды подпрограмм используются в языке Паскаль?
На какие два типа принято подразделять процедуры?
Где располагаются встроенные процедуры и что нужно написать в разделе объявлений, чтобы вызывать их в нужном месте программы пользователя?
В каком разделе программы помещаются процедуры пользователя?
Какова роль параметров процедуры?
Чем отличаются параметры-переменные от параметров-значений?
Чем отличаются фактические параметры от формальных параметров?
Где объявляются локальные и глобальные переменные?
Каким образом в программе вызывается процедура?
В чем отличие заголовка процедуры от заголовка функции?
Какой переменной обязательно присваивается значение в теле функции?
Как в программе вызывается функция?
Что является отличительной чертой рекурсивной функции?
Каким образом в рекурсивной функции осуществляется выход из рекурсии?
Задачи какого типа лучше реализовывать с помощью рекурсивных функций?
Задания для самостоятельной работы
Пример 1. Вычислить значения функции f(x)=2 cos x+3, при x={1; 4; 7,5; 20}. Вывести результаты в два столбца: в первом - значения x, во втором - значения f(x). Вычисления провести двумя способами: с помощью функции и процедуры.
Решение. Аргумент и результат функции – действительные числа, поэтому используем тип Real. В теле функции будет только оператор присваивания – для вычисления значения выражения. Процедура отличается строкой заголовка, - для передачи в основную программу результатов вычислений добавим параметр-переменную fx. Чтобы вывести результаты в виде таблицы, используем форматный вывод.
program proc_1;
function f (x: Real):Real;
begin
f:=2*cos(x)+3
end;
procedure proc_f (x: Real; var fx: real);
begin
fx:=2*cos(x)+3
end;
var x, fx: real;
begin
Writeln('с использованием процедуры:');
Writeln(' x f(x)');
x:=1; proc_f (x,fx); Writeln (x:6:2, fx:6:2);
x:=4; proc_f (x,fx); Writeln (x:6:2, fx:6:2);
x:=7.5; proc_f (x,fx); Writeln (x:6:2, fx:6:2);
x:=20; proc_f (x,fx); Writeln (x:6:2, fx:6:2);
Readln;
Writeln('с использованием функции:');
Writeln(' x f(x)');
Writeln(1:6, f (1):6:2);
Writeln(4:6, f (4):6:2);
Writeln(7.5:6:2, f (7.5):6:2);
Writeln(20:6, f (20):6:2);
Readln;
end.
Пример 2. Создать рекурсивную функцию поиска i-го члена последовательности, заданной рекуррентной формулой A1=const1, A2=const2, Ai=3Ai-2-Ai-1. Вывести через пробел значения рекурсивной функции при значениях аргумента от 1 до 10 включительно.
Решение. По условию задачи аргумент может принимать только целые значения, поэтому функция имеет параметр-значение типа Integer. Выход из рекурсии в данном случае осуществляется при двух значениях аргумента (при i=1, i=2), поэтому в рекурсивной функции необходимы два вложенных условных оператора или же оператор выбора case. В приведенном примере использованы операторы if, но попробуйте самостоятельно записать решение с помощью оператора выбора. В основной программе значения аргумента - целые последовательные числа, поэтому следует воспользоваться оператором цикла с параметром for.
program proc_2;
function A (i: Integer): Integer;
begin
if i=1 then A:=1 else
if i=2 then A:=3 else А:=3*A(i-2)-A(i-1)
end;
var i: Integer;
begin
for i:=1 to 10 do Write (A(i),' ');
Readln
end.