- •Лекции по Turbo Pascal 7.0
- •1 Курс, «Информатика»
- •Интегрированная среда Turbo Pascal 7.0
- •Первый шаг
- •Создание нового файла
- •Набор и редактирование текста программы
- •Клавиши перемещения курсора
- •Клавиши для редактирования текста:
- •Сохранение и открытие программ
- •Запуск программы
- •Завершение работы
- •А теперь, когда вы уже знаете, как набирать и запускать программы на компьютере, начнём изучать язык паскаль.
- •Первая программа
- •Краткая история
- •Что такое программа?
- •Зарезервированные слова
- •Переменные
- •Константы
- •Стандартные математические операции
- •В информатике, как и в математике, на ноль делить нельзя!
- •Оператор присваивания
- •Пример программы
- •Операторы ввода и вывода.
- •Оператор ввода Readln
- •Оператор вывода Write
- •Самостоятельные задания
- •Работа с цифрами
- •Выделение цифр числа
- •Конструирование числа по его цифрам
- •Обобщение
- •Самостоятельные задания
- •Условный оператор
- •Что такое условие?
- •Укороченный вариант условного оператора
- •Составной оператор
- •Составные условия
- •“Защита от дурака”
- •Вложенные условные операторы
- •Оператор выбора Case
- •Самостоятельные задания
- •Стандартные типы переменных
- •Общий обзор стандартных типов.
- •Целые типы
- •Вещественные типы
- •Способ записи вещественных чисел
- •Вывод на экран вещественных чисел
- •Точность и диапазон вещественных чисел различных типов
- •Вещественные функции
- •Линейная запись математических выражений
- •Логический тип
- •Символьные типы
- •Стандартные функции для работы со строками
- •Стандартные функции для типа char
- •Подпрограммы
- •Зачем нужны подпрограммы?
- •Процедуры
- •Аргументы процедуры
- •Результаты процедуры
- •Функции
- •Самостоятельные задания
- •Цикл For
- •Руками не трогать!
- •Нахождение суммы
- •Нахождение произведения
- •Нахождение количества
- •Цикл While ... Do
- •Цикл Repeat ... Until
- •2.7. Самостоятельные задания
- •Цикл в цикле
- •Натуральные числа
- •Делители чисел
- •Самостоятельные задания.
- •Простые числа
- •Самостоятельные задания.
- •Наибольший общий делитель двух чисел.
- •Самостоятельные задания.
- •Наименьшее общее кратное двух чисел
- •Самостоятельные задания.
- •Массивы
- •Определение и примеры
- •Операции с элементами массива
- •Анализ информации в массиве
- •Рекуррентные соотношения
- •Самостоятельное задание
- •Последовательность Фибоначчи
- •Другие рекуррентные последовательности
- •Оптимизация программ
- •Задача про интеллигентного студента.
- •Самостоятельные задания
- •Оформление программ
- •Понятие модуля
- •Управление цветом
- •Управление звуком
- •Опрос клавиатуры
- •Управление курсором.
- •Дополнительные задачи и вопросы
- •Теоретические вопросы
- •Практические задачи
- •Условия
- •Ряды и рекуррентные последовательности
- •Просмотр всех команд меню
- •Команды меню File
- •Команды меню Edit
- •Команды меню Search
- •Команды меню Run
- •Команды меню Compile
- •Команды меню Debug
- •Команды меню Options
- •Команды меню Window
- •Команды меню Help
- •Синтаксические ошибки
- •Ошибки выполнения
- •Логические ошибки
- •Средства отладки
- •Пошаговый режим работы программы
- •Просмотр/изменение переменных
- •Окно Watch
- •1. Теоретическая часть
- •1.1. Понятие алгоритма и его свойства.
- •1.2. Культура программирования
- •1.3. Устройство компьютера и его компоненты.
- •1.4. Информация
- •1.5. Логика
- •1.6. Системы счисления
- •1.7. Арифметические действия с двоичными числами
- •1.8. Информационные взаимодействия – коммуникации
- •1.9. Информационная революция
- •1.10. Компьютеры и информационное общество.
- •1.11. Польза и опасности компьютеризации.
- •1.12. Киберфобия.
- •1.13. Компьютеры и будущее
- •1.14. Понятие информационного моделирования.
- •2. Толковый словарик
-
Результаты процедуры
Процедура может ещё обладать результатами – это значения, которые возвращаются из процедуры в программу. В предыдущем примере у процедуры тоже был результат – сумма двух чисел. Однако он нигде не сохранялся, а только выводился на экран.
Чтобы оформить переменную-результат, надо в заголовке процедуры перед описанием переменной-результата приписать слово var. Вот пример полной программы с процедурой Summa, у которой два аргумента и один результат.
Program Procedure_with_arguments_and_result;
Var p, q, r : integer;
Procedure Summa (a, b : integer; var s : integer);
begin
s := a + b;
end;
begin
write (’Введите два числа: ’);
readln (p, q);
Summa (p, q, r ); { p,q - аргументы, r - результат }
Writeln (’Сумма введённых чисел: ’, r);
end.
При вызове процедуры переменные a,b внутри процедуры примут те же значения, что и переменные p,q в основной программе. По окончании работы в глобальную переменную r запишется то число, которое будет в переменной s (результате) процедуры.
Попробуйте ответить на вопрос: почему при вызове процедуры в качестве аргументов можно указывать конкретные числа, а в качестве результатов – нет?
Процедура может иметь сколько угодно аргументов и сколько угодно результатов. Главное, при вызове процедуры строго соблюдать порядок следования всех параметров!
Вот ещё один пример, который запрашивает координаты концов отрезка и находит координату точки, которая делит этот отрезок в отношении 1:3. Здесь используется процедура Seredina для нахождения середины отрезка, по заданным координатам его концов.
program Geometry;
var ax, ay, bx, by : integer;
cx, cy, dx, dy : real;
Procedure Seredina (x1, y1, x2, y2 : integer;
var x, y : real);
begin
x := (x1+x2) / 2;
y := (y1+y2) / 2;
end;
begin
write (’Введите координаты концов отрезка: ’);
readln (ax, ay, bx, by);
Seredina (ax, ay, bx, by, cx, cy);
{ точка (cx,cy) - середина отрезка ab }
Seredina (bx, by, cx, cy, dx, dy);
{ точка (dx,dy) - середина отрезка bc }
Writeln (’Точка (’, dx, ’, ’, dy,
’) делит отрезок в отношении 1:3’);
End.
Так как процедуры могут возвращать результаты в виде переменных, то отпадает необходимость выводить их на экран внутри процедуры. Мало того, это опасно делать, так как если ваша процедура будет вызываться много раз подряд, то представьте, сколько ненужных промежуточных данных будет выведено на экран!
Запомните: подпрограммы должны только вычислять, и ничего лишнего не выводить на экран!!!
-
Функции
Другой вид подпрограммы – функция оформляется, в таком виде:
Function <имя> (<параметры>): <тип>;
... ... { секция описаний функции }
Begin
... { раздел операторов }
End;
Отличительные особенности функции:
-
функция имеет только один результат (но может иметь несколько входных параметров – аргументов);
-
вызывать функции можно только из выражений;
-
результат обозначается именем функции и передаётся в вызываемое место.
Во всём остальном функция похожа на процедуру: она может иметь локальные переменные, обладает аргументами, можно даже оформлять дополнительные результаты так же, как и у процедуры.
Пример описания функции:
Function min (a, b : integer) : integer;
Begin
If a > b
then min := a
else min := b
end;
Функция находит меньшее из двух целых чисел. Здесь min - имя функции, оно же является одновременно и результатом этой функции – целое число. Формальными параметрами (аргументами функции) являются переменные целого типа a и b. Вызывается функция по своему имени с указанием фактических параметров. При этом вызов функции нужно делать непосредственно внутри выражения, например:
y := min(x,y) + min(k,l);
Нужно иметь ввиду, что при оформлении функции её результату (то есть её имени) можно только присваивать значения и нельзя его использовать как переменную, так как в этом случае компьютер подумает, что вы хотите этой записью снова вызвать функцию!
Например:
Function SummaCifr (a : integer) : integer;
Begin
SummaCifr := a mod 10;
SummaCifr := SummaCifr + a div 10; { Ошибка! }
end;
Эта запись является ошибочной. В таких случаях нужно использовать промежуточные переменные:
Function SummaCifr (a : integer) : integer;
var c : integer;
Begin
c := a mod 10;
c := c + a div 10;
SummaCifr := c;
end;