- •Оглавление
- •Введение………………………………………………………..……
- •I. Теоретический раздел работы………………………………………….….
- •I. Теоретический раздел работы…………………………………………….
- •I. Теоретический раздел работы……………………………………………..
- •2.2. Использование меню.
- •Работа 1
- •1.Введение.
- •2. Начало работы в среде Turbo Pascal.
- •2.1. Вызов Turbo Pascal.
- •2.3. Работа с окнами. Использование мыши.
- •2.4. Первая программа.
- •2.5. Работа с файлами
- •2.6. Основные приемы работы с текстовым редактором.
- •2.7. Меню Edit
- •3. В конце работы Вы должны уметь
- •Работа 2 ввод и вывод информации
- •I. Теоретический раздел работы
- •1. Введение.
- •2. Структура программы на языке Паскаль
- •3. Типы данных в языке Turbo Pascal.
- •4. Ввод и вывод данных.
- •II. Экспериментальный раздел работы
- •III. Дополнительный материал.
- •IV. Раздел заданий для самостоятельной работы.
- •Работа 3 расчет по формулам
- •I.Теоретический раздел работы
- •1. Некоторые понятия лексика языка Turbo Pascal.
- •2. Представление вещественных чисел на эвм.
- •3. Оператор присваивания
- •4. Алгебраические выражения.
- •5. Описание пользовательских подпрограмм-функций.
- •II.Экспериментальный раздел работы
- •III. Раздел заданий для самостоятельной работы.
- •Работа 4
- •I.Теоретический раздел работы
- •1. Некоторые сведения о целых типах данных.
- •2. Операции над целыми типами данных.
- •3. Представление целых чисел в компьютере.
- •4. Некоторые стандартные подпрограммы для работы с целыми числами.
- •II.Экспериментальный раздел работы
- •III. Раздел заданий для самостоятельной работы
- •Работа 5 Логический тип данных
- •I.Теоретический раздел работы
- •1. Некоторые сведения о логическом типе данных.
- •2. Логические выражения.
- •3. Основные законы алгебры логики.
- •4. Побитовые операции над целыми числами.
- •Работа 6
- •I.Теоретический раздел работы
- •1. Введение.
- •2. Оператор условного перехода if ... Then...Else
- •3. Условный оператор case...Of
- •II. Экспериментальный раздел работы
- •Работа 7
- •I. Теоретический раздел работы
- •1.Введение.
- •2. Оператор цикла while… do.
- •II. Экспериментальный раздел работы.
- •2. Оператор цикла repeat … until.
- •3. Суммирование рядов.
- •II. Экспериментальный раздел работы Пример 1. Пусть требуется найти сумму ряда:
- •III. Раздел заданий для самостоятельной работы
- •Работа 9 оператор цикла с параметром
- •I. Теоретический раздел работы
- •1. Введение
- •2. Оператор цикла for …do
- •3. Операторы завершения цикла
- •4. Алгоритм Горнера.
- •II. Экспериментальный раздел работы
- •III. Раздел заданий для самостоятельной работы
- •Список литературы
3. Условный оператор case...Of
Обычно при написании программы не рекомендуется использовать многократно вложенные друг в друга условные операторы, так как программа при этом становится громоздкой и трудно понимаемой. Для этих целей в языке Turbo Pascal существует специальный оператор выбора. Его синтаксис:
case N of
M1,...,Mr : S1;
K1, ...,Kp : S2;
...
D1,...,Dq : Si;
else S
end;
где N - переменная, называемая селектором или переключателем;
S1,...Si,S – операторы;
Mi, Ki,..., Di ... - метки (i=1,2,...), которые отличаются по смыслу от меток,
описываемых в разделе label;
case(выбор), of (из), else (иначе), end – служебные слова.
Отметим, что переключатель и метки должны быть одного и того же скалярного типа, за исключением вещественного.
Оператор case передает управление тому оператору Si, с одной из меток которого совпало значение селектора N, а затем управление передается на оператор, следующий за end. Если значение селектора N не совпало ни с одной из меток, то исполняется оператор S.
Ветвь оператора else S является необязательной. Тогда при отсутствии в списке выбора нужной константы оператор case завершит свою работу.
II. Экспериментальный раздел работы
Пример 1. Составим программу определения наибольшего из двух чисел.
Program Example 61;
function Max(a,b:real):real;
begin
if a>b
then Max:=a
else Max:=b;
end;
var x,y:real;
begin
writeln('Введите два числа x,y=?'); readln(x,y);
writeln('max=', Max(x,y):6:2); readln
end.
Разработайте алгоритм и составьте программу определения наибольшего числа из трех, четырех чисел. Используйте для ввода чисел генератор случайных чисел Randomize; Random. Проведите вычислительный эксперимент с программой.
Пример 2. Составим программу перевода декартовых координат x,y в полярные
координаты
. Формулы перевода:
0
если y=0
при
x=0
если y>0
если
y<0;
п
ри
x
>0
если y>=0
если
y<0;
при
x
<0
для любых y.
Составим программу.
Program Example62;
var x,y,r,fi,q:real;
begin
writeln('Введите декартовы координаты x,y=?');
readln(x,y);
r:=sqrt(sqr(x)+sqr(y));
if x=0 then if y=0 then fi:=0
else if y>0 then fi:=0.5*pi
else fi:=1.5*pi
else begin q:=arctan(y/x);
if x>0 then if y>=0 then fi:=q
else fi:=2*pi+q
else fi:=pi+q
end;
writeln('fi=',fi*180/pi:8:2,'grad');
readln
end.
Проведите отладку и тестирование программы. Программистами, в целях наглядности, не рекомендуется использовать вложенный оператор if..then…else после условия then, как это сделано в программе. Лучше вложение делать после служебного слова else. Измените согласно этой рекомендации порядок следования операторов. Проведите тестирование сделанных изменений.
Пример 3. Составим программу вычисления функции
Y
=
Program Example63;
Function Y(x:real):real;
function F1(x:real): real
begin
if x=0 then F1:=1
else F1:=1/exp(exp(ln((abs(x))/7.0))
end;
function F2(x:real): real
begin F2:=exp(ln(x)/3.0) end;
function F3(x:real): real
begin F3:=ln(x)/ln(3.0) end;
begin
if x <=0.0 then Y:=F1(x)
else if x<1.0 then Y:=F2(x)
else Y:=F3(x)
end;
var x:real;
begin
writeln(‘ Input x=?’); readln(x);
writeln(‘Y= ’,Y(x):12:6);
readln
end.
Разберитесь с листингом программы. Сделайте отладку и проведите тестирование.
Пример 4. Проведите вычислительный эксперимент с программой, использующей оператор case:
Program Example64;
var month:byte;
begin
writeln( ‘Введите номер месяца в году:’); readln(month);
case month of
1: writeln(‘зимняя сессия’);
2,3,4,5: writeln(‘весенний семестр’);
6: writeln(’летняя сессия’);
7,8: writeln(‘летние каникулы’);
9,10,11,12: writeln(‘осенний семестр’);
end;
readln
end.
Ш. Раздел для самостоятельной работы
A.
Составить программы.
1.1. Если целое число М делится нацело на целое число N, то вывести на экран частное от деления, а в противном случае вывести сообщение "М на N нацело не делится".
Дано целое число. Определить:
а) является ли оно четным;
б) оканчивается ли оно цифрой 7;
в) оканчивается ли оно четной цифрой. Составное условие не использовать.
Дано натуральное число.
а) Верно ли, что оно заканчивается нечетной цифрой?
б) Верно ли, что оно заканчивается четной цифрой?
В обеих задачах составные условия не использовать.
Дано двузначное число. Определить:
а) какая из его цифр больше: первая или вторая;
6) одинаковы ли его цифры;
в) равен ли квадрат этого числа учетверенной сумме кубов его цифр. Например, для числа 48 ответ положительный, для числа 52- отрицательный.
г) является ли сумма его цифр двузначным числом;
д) больше ли числа А сумма его цифр.
е) кратна ли трем сумма его цифр;
ж) кратна ли сумма его цифр числу А;
з) входит ли в него цифра 3;
и) входит ли в него цифра А;
к) входят ли в него цифры 4 или 7;
л) входят ли в него цифры 3, 6 или 9.
Даны цифры двух десятичных целых чисел: трехзначного
и двузначного
,
где
и
-
число единиц,
и
-
число десятков,
- число сотен.
Получить:
а)цифры, составляющие сумму этих чисел;
б) цифры, составляющие разность этих чисел.
Дано натуральное число п (п < 9999). Выяснить, является ли оно палиндромом ("перевертышем"), с учетом четырех цифр, как, например, числа 7777, 8338, 0330 и т.п. (палиндромом называется число, десятичная запись которого читается одинаково слева направо и справа налево).
Даны вещественные числа a, b, c (
).Выяснить,
имеет ли уравнение
вещественные корни.Даны три вещественных числа a, b, c. Проверить:
а) выполняется ли неравенство а < b< c;
б) выполняется ли неравенство b > а > с;
в) имеется ли среди них хотя бы одна пара равных между собой чисел;
г) сколько среди них отрицательных.
Даны вещественные положительные числа a, b, c
а) выяснить, существует ли треугольник со сторонами a, b, c.
б) можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон одного прямоугольника была параллельна или перпендикулярна каждой стороне второго прямоугольника.
В подъезде жилого дома имеется п квартир, пронумерованных подряд, начиная с номера a. Определить, является ли сумма номеров всех квартир четным числом. Формулу суммы членов арифметической прогрессии не использовать.
Составить программы.
2.1. Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увеличить второе число в пять раз.
Даны три целых числа. Вывести на экран те из них, которые являются четными.
Даны три вещественных числа. Возвести в квадрат те из них, значения которых неотрицательны.
Даны два вещественных числа. Условно принимая, что стандартной функции определения абсолютной величины числа нет, найти:
а) полу сумму абсолютных величин заданных чисел;
б) квадратный корень из произведения абсолютных величин заданных чисел.
Даны три вещественных числа. Вывести на экран:
а) те из них, которые принадлежат интервалу (1,6 - 3,8);
б) те из них, которые принадлежат интервалу (0,7-5,1).
В чемпионатe по футболу команде за выигрыш дается 3 очка, за проигрыш — 0, за ничью - 1. Известно количество очков, полученных командой за игру. Определить словесный результат игры (выигрыш, проигрыш или ничья).
Случайным образом вводятся координаты точек. Определить, сколько из них попадет в круг радиусом R с центром в точке (a,b).
Даны два прямоугольники, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой — вторым.
а) Определить, принадлежат ли все точки первого прямоугольника второму.
б) Определить, принадлежат ли все точки одного из прямоугольников другому.
в) Определить, пересекаются ли эти прямоугольники.
Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой — вторым. Найти координаты левого нижнего и правого верхнего углов минимального прямоугольника, содержащего указанные прямоугольники.
Проверить, принадлежит ли число, введенное с клавиатуры, интервалу (
).
Составить программы.
3.1. Определить, попадает ли точка с вводимыми координатами (x,y) внутрь прямоугольника, заданного уравнениями y=a, y=b, x=c, x=d (a>b, c>d).
Определить находится точка с координатами (x,y) выше или ниже прямой, заданной уравнением y=ax+b.
Определить находится точка с координатами (x,y) в кольце с радиусами R = 5, r = 3 с центром в точке (2,-1).
Является ли случайным образом введенный год високосным. У високосного года номер года делится на 4 или на 400, но не делится на 100.
Известны год и номер месяца рождения человека, а также год и номер месяца сегодняшнего дня (январь – 1 и т.д.). Определить возраст человека (число полных лет). В случае совпадения указанных месяцев считать, что прошел полный год.
Дано целое число п (1 < п < 99), определяющее возраст человека (в годах). Для этого человека напечатать фразу “мне п лет ”, учитывая при этом, что при некоторых значениях п слово “лет” надо заменить на слово “год” или “года”.
Дано натуральное число п ( 1 п 1188), определяющее возраст человека (в месяцах). Выразить возраст в годах и месяцах, например, 21 год 10 месяцев, 52 года 1 месяц, 46 лет ровно и т.п.
Известны год и номер месяца рождения двух человек. Определить, возраст каждого человека (число полных лет).
Известны год, номер месяца и день рождения человека, а также год, номер месяца и номер текущего дня месяца (1 — январь и т.п.). Определить возраст человека (число полных лет).
Известны год и номер месяца рождении человека, а также год и номер месяца сегодняшнего дня (1 январь и т.п.). Определить возраст человека (число полных лет и число полных месяцев). При определении числа полных месяцев дни месяца не учитывать, а использовать разность между номерами месяцев. Например, если месяц рождения февраль, а текущий (сегодняшний) месяц май, то число полных месяцев равно трем независимо от дней рождения и сегодняшнего.
Составить программы, используя оператор case.
4.1. Написать программу, которая бы переводила слова «ДОБРЫЙ ДЕНЬ» по выбору на один из пяти языков.
4.2. Найти остаток от деления целой части значения функции z=ln(x3+y3) на семь и в зависимости от его величины напечатать сообщение об одном из дней недели, пронумеровав их от 0 до 6.
4.3. Вычисления значения функции
y= ax+bx2+cx3, если 1<=x<2,
y= [a sin(x b)]c, если 2<=x<3,
, если 3<=x<4,
, если 4<=x<5,
если 5<=x<6.
4.4. Составить программу, которая в зависимости от порядкового номера дня недели (1, 2, ..., 7) выводит на экран его название (понедельник, вторник, .... воскресенье).
4.5. Составить программу, которая в зависимости от порядкового номера месяца (1,2, .... 12) выводит на экран его название (январь, февраль,…, декабрь).
4.6. Составить программу, которая в зависимости от порядкового номера месяца (1,2, …, 12) выводит на экран количество дней в этом месяце. Рассмотреть 2 случая:
год не является високосным (см. задачу 4.48);
год високосный (информация об этом вводится с клавиатуры).
4.7.
Мастям игральных карт условно присвоены
следующие порядковые номера: масти
"пики"—1,масти
трефы - 2, масти "бубны" — 3, масти
"червы" — 4. По
заданному номеру масти т
(
)
определить
название соответствующей масти.
4.8.
Игральным картам условно присвоены
следующие
порядковые номера в зависимости от их
достоинства: "валету" — 11, "даме"
— 12, "королю" — 13, "тузу"
14. Порядковые номера остальных карт
соответствуют
их названиям ("шестерка", "девятка"
и т.д.).
По заданному номеру карты k
(
)
определить
достоинство соответствующей карты.
4.9. С
начала 1990 года по некоторый день прошло
п
месяцев
и 2 дня (
).
Определить название месяца
(январь, февраль и т.п.) этого дня.
4.10. Дата некоторого дня определяется двумя натуральными числами: т (порядковый номер месяца) и п (число). По заданным п и т определить:
а) дату предыдущего дня (принять, что п и т не определяют 1 января);
б) дату следующего дня (принять, что п и т не определяют 31 декабря).
В обеих задачах принять также, что год не является високосным.
B.
Составить программы.
1.1. Дано трехзначное число. Определить, какая из его цифр больше:
а) первая или последняя;
6) первая или вторая;
в) вторая или последняя;
г)равен ли квадрат этого числа сумме кубов его цифр;
д) является ли сумма его цифр двузначным числом;
е) является ли произведение его цифр трехзначным числом;
ж) больше ли числа А произведение его цифр;
з) кратна ли пяти сумма его цифр;
и) кратна ли сумма его цифр числу А;
к) верно ли, что все его цифры одинаковые?;
л) есть ли среди его цифр одинаковые;
м) Выяснить, является ли оно палиндромом ("перевертышем"), т.е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево;
н) входит ли в него цифра 6;
о) входит ли в него цифра N.
п) входят ли в него цифры 4 или 7;
р) входят ли в него цифры 3, 6 или 9.
Дано четырехзначное число. Определить:
а) равна ли сумма двух первых его цифр сумме двух его последних цифр;
б) кратна ли трем сумма его цифр;
в) кратно ли четырем произведение его цифр;
г) кратно ли произведение его цифр числу А;
д) входит ли в него цифра 4;
е) входит ли в него цифра В.
ж) входят ли в него цифры 2 или 7;
з) входят ли в него цифры 3, 6 или 9.
1.2. Дано натуральное число п (п < 9999). Выяснить, верно ли, что это число содержит ровно три одинаковые цифры, если оно записано четырьмя цифрами, как, например, числа 3363, 4844, 0300 и т.п.
1.3. Дано натуральное число п (п < 9999). Выяснить, различны ли все четыре цифры этого числа (если оно записано четырьмя цифрами). Например, в числе 3678 все цифры различны, в числе 0023 — нет.
1.4. Даны вещественные положительные числа a, b, c, x, у. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и у. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.
1.5. Работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение двух минут — красный, в течение трех минут - опять зеленый и т.д. Дано вещественное число t, означающее время в минутах, прошедшее с начала очередного часа. Определить, сигнал какого цвета горит для пешеходов в этот момент.
1.6. Даны вещественные числа а, b, с ( ). Выяснить, имеет ли уравнение вещественные корни. Если такие корни имеются, то найти их. В противном случае ответом должно служить сообщение, что вещественных корней нет.
Составить программы.
Даны две тройки вещественных чисел. В каждой тройке все числа различные. Найти среднее арифметическое средних чисел каждой тройки (средним назовем такое число в тройке, которое больше наименьшего из чисел данной тройки, но меньше наибольшего).
Даны целые числа х и у. Написать программу определения знака разности х – у. Саму разность при этом не вычислять. Разрешается сравнивать числа х и у с нулем, а между собой можно сравнивать только модули чисел х и у.
Считая, что стандартные функции sin и cos применимы только к аргументам из отрезка [0,/2], вычислить у = sin x для произвольного числа х.
Даны числа a1, b1, c1, a2, b2, c2. Напечатать координаты точки пересечения прямых a1*x + b1*y = c1 и a2*x + b2*y = c2, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют.
Даны числа a, b и c (a ≠ 0).Найти вещественные корни уравнения a x4 + b x2 + c=0. Если корней нет, то сообщить об этом.
Решить систему неравенств
a x > b,
c x > d.
a, b, c, d вводятся с клавиатуры.
Даны три вещественных числа, Используя только два неполных условных оператора, определить:
а) максимальное значение заданных чисел;
б) минимальное значение заданных чисел.
Составить программы.
3.1. Даны отрезки А,B,C. Составить программу для определения возможности построения треугольника и вида этого треугольника.
3.2. Даны координаты трех точек. Определить тип треугольника (равнобедренный, равносторонний, прямоугольный, разносторонний), вычислить его площадь и периметр.
3.3. Определить попадает ли точка с координатами (x,y) внутрь треугольника, заданного координатами (x1,y1), (x2,y2), (x3,y3).
3.4. Вводятся три числа: g – год, m – месяц, n – число. Найти номер этого дня в году.
3.5. Известны год и номер месяца рождения двух человек. Определить, возраст каждого человека (число полных лет). Определить, кто из них старше.
3.6. Известны год, номер месяца и день рождения человека, а также год, номер месяца и номер текущего дня месяца (1 — январь и т.п.). Определить возраст человека (число дней).Учитывать неправильность в вводе дат. Так если первое число "больше" второго должно выводится соответствующее предупреждение.
3.7. Поезд прибывает на
станцию в а часов
b
минут и отправляется
в с часов
d
минут. Пассажир пришел
на платформу в п часов
m
минут. Будет ли поезд
стоять на платформе? Числа а,
b,
с, d,
п, т — целые, 0 < а
23, 0 < b
59, 0 < c
23, 0 < d
,
0 < n
23, 0 < т
59.
Составить программы, используя оператор case.
4.1. Дана
последовательность цифр, представляющая
собой записанные подряд ноль и 20 первых
натуральных
чисел. Найти цифру с номером п
в
этой последовательности (
).
4.2. Даны
целое число k
(
)
и последовательность
цифр 505152... 9899100101... 149150, в которой
выписаны подряд все натуральные числа
от 50 до
150. Определить k
-ю
цифру.
4.3. Даны
целое число k
(
)
и последовательность
цифр 123…91011…9899100101…109110, в
которой выписаны подряд все натуральные
числа от
1 до 110. Определить k -ю цифру.
4.4. В старояпонском календаре был принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названиями цветов: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла годы носили названия животных: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна, курица, собака и свинья. Например, 1984 год — год начала очередного цикла — назывался Годом Зеленой Крысы.
Составить программу, которая по заданному номеру года нашей эры п печатает его название по старояпонскому календарю. Рассмотреть два случая:
а) значение п ≥ 1984;
б) значение п может быть любым натуральным числом.
4.5. Дано целое число k
(
).
Определить, каким
будет k-й
день
года: выходным (суббота и воскресенье)
или рабочим, если 1 января — понедельник.
4.6. Дано число типа Word. Определить номер самого старшего бита отличного от нуля(Оператор Case должен содержать 16 меток).
4.7. Решите предыдущую задачу, с условием, что оператор Case должен содержать не более 8 меток.
