Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Линейные_разветвления

.pdf
Скачиваний:
32
Добавлен:
02.06.2015
Размер:
336.42 Кб
Скачать

11

writeln('Программа завершена. Нажмите Enter.');

readln end.

После набора исходного текста программы ее можно скомпилировать (меню Compile или F9) и запустить на исполнение (меню Run или Ctrl-F9). На этапе компиляции проверяется соответствие текста программы правилам языка. В случае обнаружения ошибок выдается соответствующее сообщение и выделяется строка с ошибкой. При успешной компиляции создается одноименный файл с расширением exe. При запуске на исполнение проверяется, была ли произведена компиляция программы. Если компиляции не было, то сначала программа компилируется, а затем происходит запуск на исполнение.

Запустите программу, проверьте результаты и пригласите преподавателя для проверки.

Задание 2. Вычислить расстояние между двумя точками с координатами (х1,у1) и (х2,у2).

Алгоритм решения данной задачи должен включать в себя следующие действия:

1.Ввод с клавиатуры координат X и Y первой точки.

2.Ввод с клавиатуры координат X и Y второй точки.

3.Вычисление расстояния по формуле: d = ( x1 - x2 )2 + ( y1 - y2 )2 .

4.Вывод на экран результата расчета.

Самостоятельно составьте блок-схему алгоритма, наберите текст программы, проверьте правильность ее работы, после чего пригласите преподавателя для проверки.

Задание 3. Треугольник задан координатами своих вершин. Найти периметр и площадь треугольника.

Алгоритм решения данной задачи должен включать в себя следующие действия:

1.Ввод с клавиатуры координат X и Y первой точки.

2.Ввод с клавиатуры координат X и Y второй точки.

3.Ввод с клавиатуры координат X и Y третьей точки.

4.Вычисление длин сторон треугольника a, b, c по формуле из задания 2.

5.Вычисление периметра треугольника p (сумма сторон).

6.Вычисление площади треугольника по формуле:

 

p

æ

p

ö

æ

p

ö

æ

p

ö

s =

 

× ç

 

- a÷

× ç

 

- b÷

× ç

 

- c÷

2

2

2

2

 

è

ø

è

ø

è

ø

7. Вывод на экран результатов расчета.

Самостоятельно составьте блок-схему алгоритма, наберите текст программы, проверьте правильность ее работы, после чего пригласите преподавателя для проверки.

12

Задания для самостоятельной работы (для каждого задания составить словесный алгоритм, нарисовать блок-схему и реализовать алгоритм в виде программы на языке Pascal):

1. Составить программу решения линейного уравнения ax + b = 0 (а ≠ 0). 2.Даны стороны прямоугольника a и b. Найти его площадь S = a·b и периметр P

= 2·(a + b).

3.Дана длина ребра куба a. Найти объем куба V= a3 и площадь его поверхности S = 6·a2.

4.Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).

5.Найти длину окружности L и площадь круга S заданного радиуса R: L = 2·π·R, S = π·R2.

6.Даны два неотрицательных числа a и b. Найти их среднее геометрическое, то есть квадратный корень из их произведения: a·b.

7.Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.

8.Даны катеты прямоугольного треугольника a и b. Найти его гипотенузу c и периметр P: c = a2 + b2 , P = a + b + c.

9.Даны два круга с общим центром и радиусами R1 и R2 (R1> R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2: S1= π·(R1)2, S2= π·(R2)2, S3=S1S2.

10.Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью, учитывая, что L = 2·π·R, S = π·R2.

11.Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму.

12.Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC.

13.Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.

14.Поменять местами содержимое переменных A и B и вывести новые значения

A и B.

15.Даны переменные A, B, C. Изменить их значения, переместив содержимое A в B, B — в C, C — в A, и вывести новые значения переменных A, B, C.

16.Даны переменные A, B, C. Изменить их значения, переместив содержимое A в C, C — в B, B — в A, и вывести новые значения переменных A, B, C.

17.Найти значение функции y = 3x6 − 6x2 − 7 при данном значении x. 18.Найти значение функции y = 4(x−3) 6−7(x−3) 3+ 2 при данном значении x.

19.Дано число A. Вычислить A8, используя вспомогательную переменную и три операции умножения. Для этого последовательно находить A2, A4 , A8. Вывести все найденные степени числа A.

20.Дано число A. Вычислить A15, используя две вспомогательные переменные и пять операций умножения. Для этого последовательно находить A2 , A3, A5, A10, A15. Вывести все найденные степени числа A.

13

21.Дано значение угла α в градусах (0 < α < 360). Определить значение этого же угла в радианах, учитывая, что 180◦ = π радианов.

22.Дано значение угла α в радианах (0 < α < 2·π). Определить значение этого же угла в градусах, учитывая, что 180◦=π радианов.

23.Дано значение температуры T в градусах Фаренгейта. Определить значение этой же температуры в градусах Цельсия. Температура по Цельсию TC и температура по Фаренгейту TF связаны следующим соотношением: TC=(TF−32)·5/9.

24.Дано значение температуры T в градусах Цельсия. Определить значение этой же температуры в градусах Фаренгейта. Температура по Цель сию TC и температура по Фаренгейту TF связаны следующим соотношением: TC=(TF−32)·5/9.

25.Считая, что Земля — идеальная сфера с радиусом R = 6350 км, определить расстояние до линии горизонта от точки с заданной высотой h над Землей.

26.Известно, что X кг конфет стоит A рублей. Определить, сколько стоит 1 кг и

Y кг этих же конфет.

27.Известно, что X кг шоколадных конфет стоит A рублей, а Y кг ирисок стоит B рублей. Определить, сколько стоит 1 кг шоколадных конфет, 1 кг ирисок, а также во сколько раз шоколадные конфеты дороже ирисок.

28.Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч

(U<V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой (путь = время · скорость). Учесть, что при движении против течения скорость лодки уменьшается на величину скорости течения.

29.Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. Данное расстояние равно сумме начального расстояния и общего пути, проделанного автомобилями; общий путь = время · суммарная скорость.

30.Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу. Данное расстояние равно модулю разности начального расстояния и общего пути, проделанного автомобилями; общий путь = время · суммарная скорость.

31.Дано расстояние L в сантиметрах. Используя операцию деления нацело, найти количество полных метров в нем (1 метр = 100 см).

32.Дана масса M в килограммах. Используя операцию деления нацело, найти количество полных тонн в ней (1 тонна = 1000 кг).

33.Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).

34.Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию деления нацело, найти количество отрезков B, размещенных на отрезке A.

14

35.Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A.

36.Дано двузначное число. Вывести вначале его левую цифру (десятки), а затем

— его правую цифру (единицы). Для нахождения десятков использовать операцию деления нацело, для нахождения единиц — операцию взятия остатка от деления.

37.Дано двузначное число. Найти сумму и произведение его цифр.

38.Дано двузначное число. Вывести число, полученное при перестановке цифр исходного числа.

39.Дано трехзначное число. Используя одну операцию деления нацело, вывести первую цифру данного числа (сотни).

40.Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем — его среднюю цифру (десятки).

41.Дано трехзначное число. Найти сумму и произведение его цифр.

42.Дано трехзначное число. Вывести число, полученное при прочтении исходного числа справа налево.

43.Дано трехзначное число. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число.

44.Дано трехзначное число. В нем зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число.

45.Дано трехзначное число. Вывести число, полученное при перестановке цифр сотен и десятков исходного числа (например, 123 перейдет в 213).

46.Дано трехзначное число. Вывести число, полученное при перестановке цифр десятков и единиц исходного числа (например, 123 перейдет в 132).

47.Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответствующую разряду сотен в записи этого числа.

48.Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответствующую разряду тысяч в записи этого числа.

49.С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала суток.

50.С начала суток прошло N секунд (N — целое). Найти количество полных часов, прошедших с начала суток.

51.С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала последней минуты.

52.С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала последнего часа.

53.С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала последнего часа.

54.Дни недели пронумерованы следующим образом: 0 — воскресенье, 1

— по-

недельник, 2 — вторник, . . . , 6 — суббота. Дано целое число K,

лежа-

15

щее в диапазоне 1–365. Определить номер дня недели для K -го дня года, если известно, что в этом году 1 января было понедельником.

55.Дни недели пронумерованы следующим образом: 0 — воскресенье, 1 — понедельник, 2 — вторник, . . , 6 — суббота. Дано целое число K, лежащее в диапазоне 1–365. Определить номер дня недели для K -го дня года, если известно, что в этом году 1 января было четвергом.

56.Дни недели пронумерованы следующим образом: 1 — понедельник, 2

— вторник, . . . , 6 — суббота, 7 — воскресенье. Дано целое число K, лежащее в диапазоне 1–365. Определить номер дня недели для K -го дня года, если известно, что в этом году 1 января было вторником.

57.Дни недели пронумерованы следующим образом: 1 — понедельник, 2

— вторник, . . . , 6 — суббота, 7 — воскресенье. Дано целое число K, лежащее в диапазоне 1–365. Определить номер дня недели для K -го дня года, если известно, что в этом году 1 января было субботой.

58.Дни недели пронумерованы следующим образом: 1 — понедельник, 2

— вторник, . . . , 6 — суббота, 7 — воскресенье. Дано целое число K, лежащее в диапазоне 1–365, и целое число N, лежащее в диапазоне 1–7. Определить номер дня недели для K -го дня года, если известно, что в этом году 1 января было днем недели с номером N.

59.Даны целые положительные числа A, B, C. На прямоугольнике размера A Ч B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника.

60.Дан номер некоторого года (целое положительное число). Определить соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год.

16

3. Разветвляющиеся вычислительные процессы

Алгоритмы решения большинства задач не являются линейными, то есть их выполнение не идет последовательно, а переходит от одной последовательности к другой с помощью специальных структур. Действия (вычисления), которые необходимо выполнить, могут зависеть от определенного условия, например входных данных или результатов, полученных во время выполнения программы.

Организация разветвляющихся вычислительных процессов на языке Pascal осуществляется с помощью условного оператора и оператора варианта.

Условный оператор

В языке Pascal условие — это выражение логического типа (boolean), которое может принимать одно из двух значений: истина (true) или ложь (false).

Условный оператор позволяет проверить заданное условие и в зависимости от результатов выполнить то или иное действие, то есть условный оператор

— средство ветвления вычислительного процесса. Формат записи: if условие then оператор_1 else оператор_2 ;

Выполняется условный оператор следующим образом. Сначала проверяется условие. Если условие истинно (true), то выполняется оператор, следующий за словом then (или несколько операторов находящиеся между словами begin и end). Иначе выполняется оператор, следующий за словом else (или несколько операторов находящиеся между словами begin и end).

Блок-схема этого алгоритма показана на рисунке 2.

условие

нет

да

оператор_1 оператор_2

Рисунок 2.

После инструкций, расположенных перед ключевым словом else, символ точки с запятой не ставится.

Если действие должно быть выполнено только при выполнении определенного условия и пропущено в случае его невыполнения, то оператор if записывается без альтернативной ветки else:

17 if условие then оператор_1;

Блок-схема алгоритма, соответствующая укороченной форме условного оператора, показана на рисунке 3.

условие

да

оператор_1 нет

Рисунок 3.

Оператор варианта

Условий, по которым организуются ветвления в программе, может быть не два, а больше. Для множественного выбора служит оператор варианта case. В общем виде он записывается следующим образом:

case выражение of константа_1 : оператор_1 ; константа_2 : begin

оператор_2 ; оператор_3 ; end;

.. . . . .

константа_N : оператор_N ; else оператор_K ;

end;

Выражение должно иметь целочисленный или символьный тип, а константы должны быть соответственно целочисленными или символьными.

Выполняется оператор варианта следующим образом. Сначала вычисляется значение выражения, следующего за словом case. Затем полученное значение последовательно сравнивается с константами. Если значение выражения совпадает с константой, то выполняется соответствующий этой константе оператор (или несколько операторов, расположенных между словами begin и end).

18

Если значение выражения не совпадает ни с одной из констант, то выполняется оператор (или несколько операторов между словами begin и end), следующий за словом else.

Альтернативная ветка else может отсутствовать.

Константы могут быть одиночными значениями, списком значений, разделенных запятыми, или диапазоном значений, разделенных двумя точками. Все константы должны быть уникальными.

Блок-схема алгоритма, соответствующего оператора варианта case, показана на рисунке 4.

 

 

 

выражение

 

 

 

иначе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

константа_1

константа_2

 

константа_N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

оператор_1

 

оператор_2

 

оператор_N

 

оператор_К

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

оператор_3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 4

Задание 1. Даны три вещественных числа х, у, z. Найти и вывести на экран максимальное из них.

Алгоритм решения данной задачи:

1.Ввод с клавиатуры значений x, y, z.

2.Условие: если x>y , тогда переменной max присваивается значение x, иначе переменной max присваивается значение y.

3.Условие: если z>max, тогда переменной max присваивается значение z.

4.Вывод на экран максимального значения – max.

Для реализации алгоритма необходимо описать четыре вещественных переменных: x, y, z, max.

Запустите MS Visio и составьте блок-схему программы, приведенную на рисунке 5.

19

начало

Ввод x, y, z

x>y

нет

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

max=x

 

max=y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z>max нет

да

max=z

Вывод max

конец

Рисунок 5

Запустите Pascal и наберите текст программы:

Program Example_2;

Uses crt; {или wincrt}

var x,y,z,max: real; begin

clrscr;

writeln('Программа нахождения максимума'); write('Введите 3 вещественных числа через пробел:');

readln(x,y,z);

if x>y then max:=x else max:=y; if z>max then max:=z;

writeln('Максимальное из них ',max:4:1); writeln('Программа завершена. Нажмите Enter.');

20

readln end.

Запустите программу, проверьте результаты и пригласите преподавателя для проверки.

Задание 2. С клавиатуры вводятся две даты в формате день, месяц, год (через пробел). Выдать сообщение «правильно», если первая введенная дата предшествует второй, и «неправильно», если наоборот.

Для реализации алгоритма необходимо описать шесть целочисленных переменных: day1, day2, month1, month2, year1, year2.

Алгоритм решения данной задачи:

1.Ввод с клавиатуры двух дат в формате: день, месяц, год (day1, day2, month1, month2, year1, year2).

2.Условие: если в первой дате год меньше или годы одинаковы и месяц в первой дате меньше или одинаковы годы и месяцы и день в первой дате меньше, тогда выводится «правильно», иначе выводится «неправильно».

Самостоятельно составьте блок-схему алгоритма, после чего наберите текст программы:

Program Example_3;

Uses crt; {или wincrt}

Var day1, day2, month1, month2, year1, year2 : integer; begin

clrscr;

writeln('Программа сравнения дат');

write('Введите первую дату: день, месяц, год через пробел:');

readln(day1, month1, year1);

write('Введите вторую дату: день, месяц, год через пробел:');

readln(day2, month2, year2);

if (year1<year2)or((year1=year2)and((month1<month2) or(month1=month2)and(day1<day2))) then writeln('правильно')

else writeln('неправильно'); writeln('Программа завершена. Нажмите Enter.');

readln end.

Запустите программу, проверьте результаты и пригласите преподавателя для проверки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]