- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
Структура условного оператора передачи управления:
IF <условие> THEN <оператор 1> ELSE <оператор 2>;
(Если) (то) (иначе) - ключевые слова,
где <условие> - это произвольное выражение логического типа, которое может принимать два значения: истина (TRUE) и ложь (FALSE);
<оператор> - любой оператор языка Паскаль.
Сокращенная форма условного оператора:
IF <условие> THEN <оператор>;
Оператор безусловной передачи управления GOTO <метка> позволяет перейти к строке с идентификатором <метка>. В языке Турбо Паскаль допускается использовать в качестве меток также целые числа без знака [0 .. 9999].
Метка от оператора отделяется в программе двоеточием (':').
Все использованные в программе метки должны быть описаны в разделе описаний программы с указанием ключевого слова 'LABEL'.
Оператор выбора CASE позволяет в зависимости от значения какой-либо переменной или выражения <ключа_выбора> выполнить те или иные операторы, помеченные соответствующими константами.
Структура оператора:
CASE <ключ_выбора> OF
<конст.выбора1>:<оператор1>;
<конст.выбора2>:<оператор2>;
. . .
<конст.выбораN>:<операторN>
ELSE <оператор>
END;
где <ключ выбора> - выражение (переменная) любого порядкового типа;
<конст.выбора> - константа того же типа, что и <ключ.выбора>;
<оператор> - произвольный оператор ТП.
Пример. Составить программу для начисления зарплаты согласно следующему правилу: если стаж работы сотрудника менее пяти лет, то зарплата равна 50$, при стаже работы от пяти до 15 лет - 100$, свыше 15 лет зарплата повышается с каждым годом на 10$, причем при стаже, превышающем 30 лет, она составляет 300$.
Для программирования решения этой задачи определим математическую формулировку задачи:
50, если ST < 5;
ZP= 100, если 5 ≤ST 15;
100+ (ST -15)*10, если 15 < ST≤ 30;
300, если ST > 30;
где ZP -зарплата, ST-стаж работы. Далее построим СА (рис.2,а), ей соответствует следующая программа:
Program zarplata;
var ST: byte; {ST - стаж (байтовый (целый) тип)}
ZP: real; {ZP - зарплата (вещественный тип)}
begin
writeln ('введите стаж');
read(ST); ввод стажа
if ST<5 then ZP:=50 условный оператор
else if ST<15 then ZP:=100 вложенный условный оператор
else if ST>=30 then ZP:=300
else ZP:=100+(ST-15)*10;
writeln ('зарплата=',ZP:10:2,' $')
end.
Второй вариант реализации задачи с применением оператора выбора представлен СА (рис.2,б) и следующей программой:
Program zarplata2;
var ST: byte; {стаж (байтовый) тип)}
ZP: real; {зарплата (вещественный тип)}
begin
writeln('введите стаж');
read(ST); {ввод стажа}
case ST of {выбор из }
1..4: ZP:=50;
5..15: ZP:=100;
16..29: ZP:=100+(ST-15)*10;
else ZP:=300
end;
writeln('зарплата=',ZP:10:2,' $'); {вывод результата}
end.
Задание 1 (программа 2_1)
Вычислить значение функции в зависимости от интервала, в который попадает вводимый с клавиатуры аргумент:
1. Дляt[0,3], at2lnt при 1,
где a=-0.5,b=2 z= 1 при t<1,
eatcosbt при t>2,
2. Для x[0,4], при x2,
где а=2.3 f= х при 0.3< x 2,
cos(x-a) при x,
3. Для x[0,7], (a+b)/(ex+cosx) при 0 x2.3,
где a=-2.7,b=-0.27 z= (a+b)/(x+1) при 2.3 x5,
ex+sinx при 7,
4.Для i[7,12], ai4+bi при I< 10,
где a=2.2,b=0.3. y= tg(i+0.5) при I= 10,
e2i+ при I>10,
5. Дляx[0.9,5], x2-7/x2 при x<1.3,
где a=1.5 y= ax3+7 при 1.3 x3,
lg(x+7) при x,
6. Дляt[-1.4], при t<0.1,
где a=2.1,b=0.37. z= at+b при 0.1 t 2,
при t,
7. Для x [0,6], a esinx+2.5 при x<0.3,
где a=1.5. y = ecosx+a при 0.3 x<4,
(sin x)/(a+ex) при x 4,
8. Дляx[1,2], a/x+bx2-c при x,
где a=1.8,b=-0.5, c=3.5 y= (a+bx)/при x>1.2,
9. Дляt[1,5], t при t>a,
где a=2.5 z= t sin at при t=a,
e-at cos at при t<a,
10. Дляx[0,4], e-bx sin bx при x<2.3,
где a=1,b=3. y= сos bx при 2.3,
e-ax cos bx при x
11.Для t[0.5,3], at2-bпри t<a,
где a=1.3,b=6.5 z= a-b при a
a t2/3-при t>b,
12. Для x[0,2], |e-2x sin bx| при x >1,
где b=-2.9 y = cos bx при x = 1,
e-x cos bx при x < 1,
.
13. Для x[0.5,2] sin (cos ax) при x >1,
где a=-0.8 z = tg ax при x = 1,
a2 x при x < 1,
14. Для x[1,2], ln bx - 1/(bx+1) при x < 1.3,
где b=1.3. y = bx + 1 при 1.3 x 1.7,
ln bx +1/(bx+1) при x > 1.7,
15. Дляx[-1,1], ax2+bx2/3 при x<0.1,
где a=2.5,b=-0.9. z= a x2 при x=0.1,
b x2/3 при x>0.1.
16. Ввести координаты точки (x, y). Напечатать, в каком квадранте или на какой оси координат находится эта точка.
17. Ввести радиусы R1, R2 и высоту. Вычислить объем усеченного конуса: , гдеS- площадь оснований. Если R1 = R2 - объем и площадь цилиндра, если R1 = 0 или R2 = 0 - объем (hπr2) и площадь πr() поверхности конуса.
18. Ввести с клавиатуры цифру. Определить, какой системе счисления она может принадлежать.
19. Ввести число. Определить, делится ли оно нацело на два, три или на пять.
20. Ввести a, b, h. Если h=0, вычислить площадь прямоугольника; при a= b, найти площадь квадрата; в противном случае подсчитать площадь трапеции.
Задание 2 (программа 2_2)
1. Определить остаток от деления на восемь введенного числа х и написать восьмиричную цифру прописью.
2. По цифре (0..9), введенной с клавиатуры, напечатать название этой цифры.
3. С клавиатуры ввести число k (1..30). Определить, какому дню недели оно соответствует, если первое число -понедельник.
4. Ввести число и номер месяца. Напечатать дату с названием месяца прописью.
5. Идет k секунда суток. Вычислить, сколько прошло часов и полных минут к этому моменту, при этом согласовать со значением слова (час, часа, часов, минута, минуты, минут).
6. В зависимости от номера (N) типа фигуры, организовать ввод необходимых данных и вычислить при N = 1 - площадь круга, N = 2 - объем шара (4/3πR3), N=3 - объем цилиндра, N = 4 - площадь поверхности сферы 4πr2.
7. Ввести число N (0 ≤ N ≤ 15). Определить и напечатать шестнадцатеричную цифру, ему соответствующую.
8. Для целого числа R (1…99) напечатать фразу « Мне R лет », при некоторых значениях R слово «лет» заменить словом «год» или «года».
9. В зависимости от номера (N) типа фигуры, организовать ввод необходимых данных, и вычислить при к = 1-площадь прямоугольника, при к = 2-площадь параллелограмма, при к = 3-площадь трапеции (a+b)h/2. В последнем случае напечатать: является ли трапеция параллелограммом или ромбом.
10. Перевести введенное число 0 ≤ х ≤ 31 в шестнадцатеричную систему счисления.