Определение принадлежности точки выделенным областям на плоскости
Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке Турбо Паскаль логических задач.
Задание на программирование: используя технологию структурного программирования разработать разветвляющуюся программу для решения индивидуальной задачи определения места нахождения на плоскости точки с произвольно заданными координатами.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель – условия принадлежности точки выделенным областям на плоскости.
3) Построить схему алгоритма решения задачи.
4) Составить программу на языке Турбо Паскаль.
5) Входные данныевещественного типа realвводить с клавиатуры по запросу. Выходные данные (сообщения)выводить на экран в развернутой форме.
6) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов.
7) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.
15. 16.
17. 18.
19. 20.
21. 22.
23. 24.
25. 26.
27. 28.
29. 30.
31. 32.
33. 34.
35. 36.
37. 38.
39. 40.
41. 42.
43. 44.
45. 46.
47. 48.
49. 50.
Пример схемы алгоритма и текст программы определения местоположения точки на плоскости для варианта задания вида:
Математическая модель (условия принадлежности точек выделенным областям)
- условие 1 (принадлежность области M1):
x > 1 {правее линии x = 1}
x < 2 {левее линии x = 2}
y > 1 {выше линии y = 1}
y < 2 {ниже линии y = 2}
(x – 1)2 + (y – 1)2 > 1 {вне правой верхней окружности}
- условие 2 (принадлежность области M2):
(x + 1)2 + (y – 1)2 < 1 {внутри левой верхней окружности}
y < x + 2 {ниже линии y = x + 2}
y > 1 {выше линии y = 1}
- условие 3 (принадлежность области M3):
x2 + y2 > 1 {вне центральной окружности}
(x + 1)2 + (y + 1)2 < 1 {внутри левой нижней окружности}
y > -1 {выше линии y = -1}
y > -x - 2 {выше линии y = -x - 2}
- условие 4 (принадлежность области M4):
y < 0 {ниже оси x}
(x – 1)2 + (y + 1)2 > 1 {вне правой нижней окружности}
(x + 1)2 + (y + 1)2 > 1 {вне левой нижней окружности}
x2 + y2 < 1 {внутри центральной окружности}
- условие 5 (принадлежность области M5):
(x – 1)2 + (y + 1)2 > 1 {вне правой нижней окружности}
(x – 1)2 + (y – 1)2 > 1 {вне правой верхней окружности}
x < 2 {левее линии x = 2}
x > 1 {правее линии x = 1}
y < -x + 2 {ниже линии y = -x + 2}
y > -1 {выше линии y = -1}
Схема алгоритма решения
Начало |
Ввод x, y |
x=0 и y=0 |
да нет
Вывод (.) в НК |
усл. 1 |
да нет
Вывод (.) в М1 |
усл. 2 |
да нет
усл. 3 |
Вывод (.) в М2 |
да нет
усл. 4 |
Вывод (.) в М3 |
да нет
усл. 5 |
Вывод (.) в М4 |
да нет
Вывод (.) в М5 |
Вывод вне зон |
Конец |
Текст программы
Program Tochka;
{Определение местоположения точки на плоскости.
Входные данные: x, y - координаты точки
Выходные данные: s - сообщение}
Var x, y: Real;
s: String;
Begin
{Ввод исходных данных}
Write('Введите координаты точки x и y: ');
ReadLn(x, y);
{Анализ координат}
If (x = 0) And (y = 0)
Then s:= ' в начале координат'
Else If(((x-1)*(x-1)+(y-1)*(y-1))>1)AND(x>1)AND(x<2)AND(y>1) AND(y<2) {Область М1?}
Then s:= ' в области М1'
Else If(y>1)AND(y<x+2)AND(((x+1)*(x+1)+(y-1)*(y-1))<1) {Область М2?}
Then s:= ' в области М2'
Else If(x*x+y*y>1)AND(((x+1)*(x+1)+(y+1)*(y+1))<1)AND(y>-1)AND(y>-x-2)
{Область М3?}
Then s:= ' в области М3'
Else If(y<0)AND(((x-1)*(x-1)+(y+1)*(y+1))>1)AND(x*x+y*y<1)AND
(((x+1)*(x+1)+(y+1)*(y+1))>1) {Область М4?}
Then s:= ' в области М4'
Else If(((x-1)*(x-1)+(y+1)*(y+1))>1)AND(x>1)AND(x<2)AND(y>-1)
AND(y<-x+2)AND(((x-1)*(x-1)+(y-1)*(y-1))>1) {Область М5?}
Then s:= ' в области М5'
Else s:= ' вне всех обозначенных областей';
{Вывод сообщения}
WriteLn('Положение точки:', s);
ReadLn;
End.
Лабораторная работа №6
Многовариантные вычисления по ключу
Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке Турбо Паскаль многовариантных вычислений.
Задание на программирование: используя технологию структурного программирования разработать разветвляющуюся программу для решения индивидуальной задачи выбора варианта вычисления по ключу.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель:
- составить список различных вариантов получения выходных данных задачи;
- выявить ключ выбора - данное целого типа, значения которого могут служить ключами различных вариантов выполнения действий;
- с помощью формул описать варианты получения выходных данных задачи в зависимости от значения ключа выбора варианта.
3) Построить схему алгоритма решения задачи.
4) Составить программу на языке Турбо Паскаль.
5) Входные данныевводить с клавиатуры по запросу.
6) Выходные данные выводить на экран в развернутой форме с пояснениями.
7) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов, в том числе с ошибочными входными данными.
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1.
Определить название месяца года, следующего за заданным месяцем.
2.
Определить название k-го месяца после заданного месяца года.
3.
Определить название столицы по заданному названию страны.
4.
Определить название десятичной цифры по заданному ее значению.
5.
Определить написание заданной десятичной цифры римскими цифрами.
6.
Определить двоичный код заданной десятичной цифры.
7.
Определить сезон года (зима, весна, лето, осень), на который приходится заданный месяц.
8.
Определить название континента (Азия, Америка, Африка, Европа) по заданному названию страны.
9.
Определить название цвета радуги, следующего за заданным цветом.
10.
Определить название интервала (секунда, терция, кварта, квинта, секста, септима), образованного двумя заданными нотами (до, ре, ми, фа, соль, ля, си).
11.
Определить величину в метрах некоторой длины, заданной в одной из указанных единиц измерения (километр, метр, дециметр, сантиметр, миллиметр).
12.
Для целого числа k от 1 до 130 вывести фразу “Мне k лет”, учитывая при этом, что при некоторых значениях k слово “лет” надо заменить словом “год” или “года”.
13.
Для натурального числа k вывести фразу “Мы нашли k грибов в лесу”, согласовав слово “гриб” с числом k.
14.
Для целого числа d от 1 до 9999, обозначающего денежную единицу, дописать слово “рубль” в правильной форме.
15.
Для целого числа d от 1 до 9999, обозначающего денежную единицу, дописать слово “копейка” в правильной форме.
16.
Вычислить стоимость междугородного телефонного разговора заданной продолжительности. Цена одной минуты определяется по указанному коду города.
17.
Вывести указанное слово из группы однотипно склоняемых слов (степь, боль, тетрадь, дверь) в заданном падеже (им., род., дат., вин., твор., предл.).
18.
Корабль сначала шел по заданному курсу (север, восток, юг, запад). Затем его курс был изменен согласно заданному приказу (вперед, вправо, назад, влево). Определить новый курс корабля.
19.
Определить количество дней в указанном месяце заданного года.
20.
Определить, образует ли заданная тройка чисел y (год), m (месяц), d (день) правильную дату.
21.
По заданной дате d (день), m (месяц), y(год) определить дату d1, m1, y1 следующего дня.
22.
Определить порядковый номер того дня високосного года, который имеет заданную дату d (день), m (месяц).
23.
Определить d (день), m (месяц) – дату k-го по счету дня високосного года.
24.
Считая, что год не високосный и его 1 января приходится на день недели wd1, определить wd – день недели, на который приходится день с датой d (день), m (месяц).
25.
Считая, что год не високосный и его 1 января приходится на день недели wd1, определить количество пятниц в году, приходящихся на 13-е числа месяца.
26.
Определить десятичный код буквы латинского или русского алфавита в противоположном регистре по таблице кодировки ASCII. Результатом работы программы должно быть сообщение вида: «Для прописной буквы … латинского алфавита десятичный код строчной буквы равен …». Или: «Для строчной буквы … русского алфавита десятичный код прописной буквы равен …». Или: «Введённый символ не является буквой латинского или русского алфавитов».
27.
Определить длину конкретного моста в городе Санкт-Петербурге по его названию.
28.
Определить название вокзала в городе Санкт-Петербурге, с которого отправляется Ваш поезд, по пункту назначения.
29.
Определить число союзных республик, входивших в состав СССР, в конкретном году (с 1922 по 1991 годы).
30.
Определить название константы цвета, объявленной в модуле CRT, по её значению (от 0 до 15).
31.
Определить число долларовых миллиардеров из России по данным журнала Forbs в конкретном году (с 2001 по 2016 годы).
32.
Определить место сборной России по футболу в рейтинге ФИФА в конкретном году (с 2006 по 2016 годы).
33.
Определить количество станций и протяжённость конкретной линии Санкт-Петербургского метрополитена по номеру линии.
34.
Определить название команды-чемпиона в чемпионатах КХЛ в конкретном году (с 2009 по 2016 годы).
35.
Определить название команды-чемпиона в чемпионатах NHL в конкретном году (с 2007 по 2016 годы).
36.
Определить название команды обладателя Кубка УЕФА по футболу в конкретном году (с 2007 по 2016 годы).
37.
Определить название команды победителя клубного чемпионата мира FIFA в конкретном году (с 2007 по 2016 годы).
38.
Вычислить стоимость покупки в магазине некоторого количества определённого товара. Количество купленного товара и его вид задаётся пользователем. Цена единицы товара определяется по его названию.
39.
Определить фамилию лётчика-космонавта СССР и продолжительность его прибывания в космосе по порядковому номеру его полёта (из первой десятки).
40.
Определить стоимость одного жетона для проезда в метро г. Санкт-Петербурга с 2000 по 2016 годы.
41.
Определить фамилию и имя Героя Советсткого Союза в соответствии с номером присуждения звания из первой десятки Героев.
42.
Определить название и высоту горной вершины из первой пятёрки самых высоких горных вершин мира по её номеру в этой пятёрке.
43.
Определить название и глубину морской впадины из первой пятёрки самых глубоких морских впадин мира по её номеру в этой пятёрке.
44.
Определить название и длину реки из первой пятёрки самых длинных рек мира по её номеру в этой пятёрке.
45.
Определить название планеты солнечной системы по её порядковому номеру в зависимости от расстояния от Солнца.
46.
Определить название и число жителей самого большого по численности населения города мира из первой пятёрки самых больших городов по его номеру в этой пятёрке (по состоянию на 2016 год).
47.
Определить название и число жителей самого большого по численности населения города РФ из первой пятёрки самых больших городов по его номеру в этой пятёрке (по состоянию на 2016 год).
48.
Определить порядковый номер Москвы в списке самых дорогих для проживания городов мира в конкретном году (с 2006 по 2016 годы).
49.
Определить стоимость и фамилию хозяина самой дорогой яхты из первой пятёрки самых дорогих яхт по её номеру в этой пятёрке (по состоянию на 2016 год).
50.
Определить фамилию и страну победителя конкурса Евровидения в конкретном году (с 2001 по 2016 годы).
Пример программы
Program PloFig;
{Вычисление площадей геометрических фигур.
Входные данные: t - тип фигуры,
a,l,h,r - параметры фигур.
Выходные данные: s - площадь фигуры.}
Var
t:Byte;
a,l,h,r,s:Real;
Begin {Ввод и контроль}
WriteLn('Задайте тип фигуры:');
Write('1-квадрат,2-прямоугольник,3-круг? ->');
ReadLn(t);
If (t<1)or(t>3)
Then Begin
WriteLn('Ошибочный тип фигуры!');
Write(‘Нажмите Enter ->’);
ReadLn; Halt;
End;
{Вычисление площади}
Case t Of
1: Begin
Write('Размер стороны квадрата? ->');
ReadLn(a);
s:=a*a;
End;
2: Begin
Write('Размеры сторон прямоугольника? ->');
ReadLn(l,h);
s:=l*h;
End;
3: Begin
Write('Величина радиуса круга? ->');
ReadLn(r);
s:=Pi*r*r;
End;
End;
WriteLn('Площадь фигуры: ',s:7:2);
End.
Лабораторная работа №7