- •Тема 1. Технология программирования. Основные понятия и подходы
- •1.1 Технология программирования и основные этапы ее развития
- •1.1 Проблемы разработки сложных программных систем (пс)
- •1.2 Блочно-иерархический подход к созданию сложных систем (сс)
- •1.4 Жизненный цикл и этапы разработки программного обеспечения
- •1.5 Оценка качества процессов создания программного обеспечения
- •Тема 2. Основы теории программирования
- •2.1 Понятие технологичности программного обеспечения
- •Диалоговые программы
- •2.2 Модули и их свойства
- •2.3 Основные понятия программирования. Средства описания структурных алгоритмов
- •Описание алгоритма с помощью естественного языка
- •Описание алгоритма с помощью блок-схемы
- •Описание алгоритма с помощью алгоритмических языков
- •2.4 Стиль оформления программы
- •Тема 3. Программирование на языке высокого уровня Pascal
- •3.1 Введение
- •3.2 Основные понятия языка Pascal
- •3.3 Операторы ввода-вывода данных
- •Простые типы данных
- •Структурированные типы данных
- •Работа с текстовыми файлами
- •Другие типы данных
- •3.5 Выражения, операнды, операции
- •Порядок вычисления выражений
- •3.5 Выражения, операнды, операции
- •Порядок вычисления выражений
- •3.6 Операторы языка Простые операторы
- •Структурные операторы
- •Работа с массивами
- •3.6 Подпрограммы
- •Процедуры
- •Функции
- •Рекурсивные подпрограммы
- •Параметры и аргументы
- •Стандартные процедуры и функции
- •3.7 Списки: основные виды и способы реализации
- •Вопросы для экзамена по курсу «Технология программирования»
- •1. Технология программирования и основные этапы ее развития
- •Задания для студентов заочной формы обучения по курсу «Технология программирования (ТеПр)»
- •Вопросы для экзамена по курсу «Технология программирования»
- •1. Технология программирования и основные этапы ее развития
Стандартные процедуры и функции
Стандартные (встроенные) процедуры и функции являются частью языка и могут вызываться по имени без предварительного описания.
Арифметические процедуры и функции реализуют математические операции, включая генерацию случайных чисел.
Abs(x) – вычисляет абсолютную величину x. Тип результата совпадает с типом параметра.
Int (x) – вычисляет целую часть x . Результат имеет вещественный тип.
Pi – возвращает значение числа pi =3,1415926…
Sqr(x) – возводит в квадрат значение x . Тип результата совпадает с типом параметра.
Sqrt(x) – извлекает квадратный корень из значения x . Результат имеет вещественный тип.
Random – генерирует значение случайного числа в диапазоне 0 .. 0,99. Тип результата вещественный.
Пример. for i :=1 to 3 do write ( Random :8:5);
Результат: 0.06919 0.78539 0.17197
Random(i) – генерирует значение случайного числа в диапазоне [0, i ). Тип результата целочисленный.
Пример. for i :=1 to 3 do write ( Random (10):3);
Результат: 7 2 9
Чтобы случайные числа были «более случайными», необходимо периодически менять базу генерации с помощью стандартной процедуры Randomize , которая при инициализации загружает новую базу в генератор случайных чисел.
Пример . for i:=1 to 10 do
begin
write ( Random (200):5);
Randomize ;
end ;
Скалярные процедуры и функции обрабатывают данные любого скалярного типа, кроме вещественного.
Процедура Dec(x, n) – уменьшает значение целочислен ной переменной x на n . При отсутствии n уменьшает на единицу.
Процедура Inc(x, n) – увеличивает значение целочислен ной переменной x на n. При отсутствии n увеличивает на единицу.
Функция Odd(x) возвращает значение булевского типа true при нечетном x и false при четном x .
Функции преобразования типов используются для преобразования значения одного скалярного типа в значение другого скалярного типа.
Функция Chr(x ) – возвращает символ ASCII с номером, равным значению x .
Функция Round(x) – возвращает значение x , округленное до ближайшего целого. Результат целочисленный.
Процедуры управления программой позволяют задерживать на определенное время выполнение операторов, досрочно выходить из подпрограммы, прекращать выполнение программы.
Delay(i) – задерживает выполнение программы на i миллисекунд.
Exit – осуществляет выход из текущего блока в окружающую среду. Если текущий блок – подпрограмма, выход происходит в основную программу. Если Exit стоит в операторной части основной программы, программа прекращает работу и передает управление в окно редактора кода.
Пример. if j=5 then Exit;
Задание 16. Составить программу, которая вводит с клавиатуры целое число и, в зависимости от его четности, вычисляет и выводит на экран либо сумму всех предшествующих введенному числу четных натуральных чисел, либо произведение всех предшествующих нечетных чисел. Вычисление суммы и произведения оформить в виде подпрограммы-функции Itog . В основной программе предусмотреть ввод с клавиатуры двух целых чисел и вызов для каждого из них функции Itog .
Задание 17. Построить процедуру Numbers , которая организует ввод n целых чисел и вычисление суммы всех четных и произведение всех нечетных чисел. Затем составить программу, которая принимает с клавиатуры количество целых чисел n, вызывает процедуру Numbers и выводит на экран результат ее работы, т.е. сумму всех четных и произведение всех нечетных чисел.
Задание 18* . Построить процедуру Game , моделирующую игру в кости двух игроков. Во время игры игроки ставят по $1 в банк и поочереди бросают кость (правильный кубик). Банк забирает тот, у кого выпало больше очков. При равном числе очков каждый вносит в банк еще по одному $, и игра продолжается. Игра заканчивается, когда у одного из игроков кончаются деньги. В основной программе осуществляется ввод с клавиатуры сумм денег каждого игрока, вызов процедуры Game и вывод на экран результата игры.
Модули
Кроме программ, структура которых рассмотрена выше, средства языка позволяют создавать модули. В отличие от программы, модуль не может быть запущен на выполнение. Модуль содержит элементы, например, переменные и подпрограммы, которые можно использовать в программе или в других модулях. Чтобы можно было использовать средства модуля, его необходимо подключить, указав имя этого модуля в разделе uses. Типичными примерами модулей являются модули System и SysUtils, содержащие большое количество стандартных подпрограмм. Некоторые из них уже были рассмотрены. Напомним, что для каждой формы приложения создается отдельный модуль.
Компилятор распознает модуль по его заголовку, и в результате компиляции создается не исполняемый файл (exe), как это было для приложения, а файл модуля с расширением dcu.
Модуль состоит из заголовка и 4 разделов: интерфейса (interface), реализации (implementation), инициализации (initialization) и деинициализации (finalization). В заголовке указывается слово unitи имя модуля. Модуль имеет следующую структуру:
Unit <Имя модуля>;
// Раздел интерфейса
Interface
Uses<Список модулей>;
Const<Список констант>;
Туре<Описание типов>;
Var<Объявление переменных>;
<Заголовки процедур>;
<3аголовки функций>;
// Раздел реализации
Implementation
Uses<Список модулей>;
Const <Список констант>;
Туре<0писание типов>;
Vаг<0бъявление переменных>;
<Описание процедур>;
<0писание функций>;
// Раздел инициализации
Initialization
<Операторы>
// Раздел деинициализации
Finalization
<0ператоры>
End.
В разделе интерфейса размещается описание идентификаторов, которые должны быть доступны всем модулям и программам, использующим этот модуль и содержащим его имя в списке. Кроме того, в нем объявляются типы, константы, переменные и подпрограммы. При этом для подпрограмм указываются только их заголовки. Другие используемые модули указываются в списке uses. Раздел интерфейса начинается словом Interface.
В разделе реализации располагается код подпрограмм, заголовки которых были приведены в разделе интерфейса. Порядок следования подпрограмм может не совпадать с порядком расположения их заголовков, указанных в разделе интерфейса. Допускается оставлять в заголовке только имя подпрограммы, так как список параметров и тип результата функции уже был предварительно указаны. В разделе реализации можно также описывать типы, объявлять константы и переменные и описывать подпрограммы, которые используются только в этом модуле и за его пределами не видны. Раздел реализации начинается словом Implementation.
В разделе инициализации располагаются операторы, выполняемые в начале работы программы, которая подключает эти модули. Разделы инициализации модулей выполняются в том порядке, в котором они перечислены списке разделаuses программы. Раздел инициализации начинается словом Initialization и не является обязательным.
При наличии раздела инициализации в модуле можно использовать раздел деинициализации, который начинается словом Finalization. В нем указываются операторы, выполняемые при завершении программы. Разделы деинициализации модулей выполняются в порядке, обратном порядку их перечисления в списке usesпрограммы.
