- •ОРГАНИЗАЦИОННО–МЕТОДИЧЕСКИЙ РАЗДЕЛ
- •Цель и задачи дисциплины
- •Место дисциплины в профессиональной подготовке выпускников
- •Требования к уровню освоения курса
- •ТЕМАТИЧЕСКИЕ ПЛАНЫ
- •очная форма обучения
- •заочная форма обучения
- •СОДЕРЖАНИЕ ДИСЦИПЛИНЫ
- •КУРС ЛЕКЦИЙ
- •Описание языка Turbo Pascal
- •Основные команды и горячие клавиши
- •Алфавит языка Pascal – совокупность допустимых символов
- •Базовые элементы языка
- •Общая структура pascal-программы: Заголовок; Раздел объявления (описания) данных; Раздел описания действий с данными.
- •Понятие типа данных в Турбо Паскаль
- •Основные математические функции
- •Организация ветвлений в программе
- •Оператор условного перехода
- •Оператор выбора
- •Оператор безусловного перехода
- •Циклы
- •Арифметические циклы
- •Итерационные циклы с предусловием
- •Итерационные циклы с постусловием
- •Операторы завершения цикла
- •Процедуры и функции
- •Описание и вызов процедур и функций
- •Передача параметров
- •Локальные и глобальные идентификаторы
- •Рекурсивные функции и процедуры
- •Структурированные типы данных
- •Перечисляемый тип данных
- •Интервальный тип данных
- •Массивы
- •Строковый тип данных
- •Процедуры и функции для работы со строками
- •Тип запись
- •Файловые типы
- •Типы файлов Турбо Паскаль
- •Стандартные процедуры и функции
- •Работа с типизированными файлами
- •Работа с текстовыми файлами
- •Работа с нетипизированными файлами
- •Разработка модулей
- •Модуль Graph Инициализация графического режима
- •Простейшие графические процедуры и функции
- •Рисование геометрических фигур. Построение заполненных фигур
- •Работа с линиями
- •ЗАДАНИЯ ДЛЯ ПРАКТИЧЕСКИХ ЗАНЯТИЙ
- •Линейные алгоритмы
- •Целочисленная арифметика
- •Линейные программы
- •Логические выражения
- •Условные операторы
- •Оператор выбора
- •Операторы цикла
- •Обработка последовательностей
- •Минимумы и максимумы
- •Обработка числовых данных
- •Простейшие рекурсивные алгоритмы
- •Одномерные массивы
- •Двумерные массивы (матрицы)
- •Символы и строки
- •Массивы
- •Строки
- •Разбор выражений
- •Записи
- •Файлы
- •Двоичные файлы
- •Текстовые файлы
- •Создание модулей
- •Задания для самостоятельной работы студентов
- •Линейные программы
- •Ветвления
- •Циклы
- •Массивы линейные
- •Прямоугольные таблицы
- •Процедуры и функции
- •Символьные переменные
- •Графика
- •Задания для экзаменационных билетов
- •ТЕСТОВЫЕ ЗАДАНИЯ
- •Темы теоретическх вопросов для курсовой работы
- •Задания по практической части
- •Приложение
- •Образец оформления титульного листа
- •САМОСТОЯТЕЛЬНАЯ РАБОТА СТУДЕНТОВ
- •Графики СРС
В итерационных циклах производится проверка некоторого условия, и в зависимости от результата этой проверки происходит либо выход из цикла, либо повторение выполнения тела цикла. Если проверка условия производится перед выполнением блока операторов, то такой итерационный цикл называется циклом с предусловием (цикл "пока"), а если проверка производится после выполнения тела цикла, то это цикл с постусловием (цикл "до").
Особенность этих циклов заключается в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, а тело цикла с предусловием может ни разу не выполниться. В зависимости от решаемой задачи необходимо использовать тот или иной вид итерационных циклов.
Арифметические циклы
Синтаксис:
for переменная := значение 1 to значение 2 do оператор или
for переменная := значение 1 downto значение 2 do оператор
Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2.
Переменная цикла, начальное и конечное значения должны иметь порядковый тип. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.
Как и в случае использования оператора условного прехода, следует помнить, что синтаксис языка допускает запись только одного оператора после ключевого слова do, поэтому, если вы хотите в цикле выполнить группу операторов, обязательно надо объединить их в составной оператор (окаймить операторными скобками begin ... end). В противном случае будет сделана логическая ошибка программы.
Пример 1. Квадраты чисел от 2-х до 10-и. for x:=2 to 10 do WriteLn(x*x);
Пример 2. Латинский алфавит. for ch:='A' to 'Z' do Writeln(ch);
Пример 3. Использование цикла с downto. for i:=10 downto 1 do WriteLn(i);
Пример 4. Использование составного оператора. for x:=1 to 10 do begin
y:=2*x+3;
WriteLn('f(',x,')=',y);
end;
19
Пример 5. Найти все числа в диапазоне от 1 до N, делящиеся на M. var i, N, M : word;
begin
write (‘N, M =‘); read (N, M);
for i := 1 to N do
if i mod M = 0
then writeln (i) ;
end.
Циклические алгоритмы – организация счетчиков
Подсчет в цикле количества выполнений некоторого условия:
•До входа в цикл - подготовка, или инициализация счетчика (0).
•Внутри цикла -проверка условия и увеличение показаний счетчика в случае выполнения условия (процедура inc).
Пример. Сколько среди n случайных целых чисел из [0, 100) чисел > 50 ? uses wincrt;
var i, k, n : byte; begin
write ('n='); read (n); randomize; k := 0;
for i := 1 to n do
if random (100) > 50 then inc (k);
write ('k=', k)
end.
Циклические алгоритмы – вычисление сумм
Подсчет в цикле поэтапно изменяющегося значения суммы:
•До входа в цикл - подготовка, или инициализация накопителя (0).
•Внутри цикла - сложение показания накопителя с очередным слагаемым.
Пример. Найти сумму первых n слагаемых гармонического ряда. uses wincrt;
var i, n : byte; s : double;
begin
write ('n='); read (n);
s := 0;
for i := 1 to n do s := s + 1/i;
20
write (’сумма=', s :8 : 2)
end.
Примечание. Аналогично нахождение суммы по условию: if i mod 2 = 1 then s := s + 1/i;
{сумма нечетных по номеру слагаемых}
Циклические алгоритмы – вычисление произведений
Подсчет в цикле поэтапно изменяющегося значения произведения:
•До входа в цикл - подготовка, или инициализация накопителя (1).
•Внутри цикла - умножение показаний накопителя на очередной сомножитель.
Пример. Найти значение n! , для n 0, где n! = 1•2 • … • (n-1) • n , 0! = 1. uses wincrt;
var i, n : byte; fact : double;
begin
write ('n='); read (n); fact := 1;
for i := 1 to n do fact := fact * i;
write ( n : 2,’!=', fact : 10 : 0)
end.
Итерационные циклы с предусловием
Синтаксис:
while выражение do оператор
Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.
Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным (False), то оператор не будет выполнен ни разу.
Здесь также следует помнить, что позволяется использовать только один оператор после ключевого слова do. Если необходимо выполнить группу операторов, то стоит использовать составной оператор.
Пример. eps:=0.001;
while x > eps do x:=x/2;
21
Пример. Программа, позволяющая определить наибольший общий делитель двух чисел на основе алгоритма Евклида.
uses wincrt;
var n, m, a, b : longint; begin
write (‘исходные числа:’); read ( n , m);
a := n; b := m;
while a <> b do if a > b
then a := a - b else b := b - a;
write (‘НОД(‘ , n ,’ , ‘, m , ‘)=’, a);
end.
Итерационные циклы с постусловием
Синтаксис: repeat
оператор; оператор;
...
оператор until выражение
Операторы между словами repeat и until повторяются, пока логическое выражение является ложным (False). Как только логическое выражение становится истинным (True), происходит выход из цикла.
Так как выражение оценивается после выполнения операторов, то в любом случае операторы выполнятся хотя бы один раз.
Пример. repeat
WriteLn('Введите положительное число'); ReadLn(x);
until x>0;
Пример. Программа, позволяющая угадывать случайное целое число из [0, 100).
uses wincrt;
var n, n_rnd : byte; begin
randomize;
n_rnd := random (100) ;
{ программа “задумала” число} repeat
22