СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

ЭСО "ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ" (11 класс).

Категория: Информатика

Нажмите, чтобы узнать подробности

 

Просмотр содержимого документа
«ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ»

ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ

§ 7. Выполнение практических заданий из различных предметных областей

7.1 Построение геометрических фигур

Коротко о главном:

  • При построении изображений можно использовать следующие графические примитивы: точки, отрезки, прямоугольники, окружности, эллипсы.

  • Для совмещения работы с текстом и графикой в одном окне необходимо подключение модулей crt и GraphABC одновременно.

Упражнение 1

Составьте программу, которая выполняет чертёж одной из деталей и вычисляет её площадь. Масштаб: 1 клетка – 20 пикселей.

А)

Технология составления программы:

Проанализируем рисунок: высота фигуры – 6 клеток (см), ширина – 12 клеток (см), радиус отверстия - 3 клетки (см).

program upr7_1_1a;

uses crt, GraphABC; {Подключение модулей}

var r,a,b: integer;

S: real;

begin

SetWindowSize (320,320); {Размеры окна}

SetPenWidth (3); {Толщина пера}

line(110,50,50,50); {Рисование отрезков}

line(50,50,50,170);

line(50,170,290,170);

line(290,170,290,50);

line(290,50,230,50);

arc(170,50,60,180,360); {Рисование дуги: (170,50) - центр дуги, 60 - радиус дуги, (180,360) - размер дуги}

a:=12; b:=6; r:=3; {Определение начальных данных}

S:=a*b-pi*r*r/2; {Вычисление площади}

write('S= ',S:2:2); {Форматный вывод}

end.

Результат работы будет выглядеть так:

Б)

Технология составления программы:

Проанализируем рисунок: площадь фигуры состоит из площади прямоугольника шириной 8 см и высотой 6 см, площади окружности радиуса 3 см за вычетом двух площадей окружностей радиуса 1 см.

program upr7_1_1b;

uses crt, GraphABC; {Подключение модулей}

var r1,r2,a,b: integer;

S: real;

begin

SetWindowSize (350,350); {Размеры окна}

SetPenWidth (3); {Толщина пера}

line(110,50,270,50); {Рисование отрезков}

line(110,170,270,170);

circle(110,110,20); {Рисование окружностей}

circle(270,110,20);

arc(110,110,60,90,270); {Рисование дуги: (110,110) - центр дуги, 60 - радиус дуги, (90,270) - размер дуги}

arc(270,110,60,270,90); {Рисование дуги: (270,110) - центр дуги, 60 - радиус дуги, (270,90) - размер дуги}

a:=8; b:=6; {Определение начальных данных}

r1:=1; r2:=3;

S:=a*b+pi*r2*r2-2*pi*r1*r1;{Вычисление площади}

write('S= ',S:2:2); {Форматный вывод}

end.

Результат работы будет выглядеть так:

В)

Технология составления программы:

Проанализируем рисунок: площадь фигуры состоит из площади прямоугольника шириной 12 см и высотой 6 см за вычетом площади окружности радиуса 2 см и за вычетом половины площади окружности радиуса 3 см.

program upr7_1_1v;

uses crt, GraphABC; {Подключение модулей}

var r1,r2,a,b: integer;

S: real;

begin

SetWindowSize (350,350); {Размеры окна}

SetPenWidth (3); {Толщина пера}

line(110,50,230,50); {Рисование отрезков}

line(290,110,290,170);

line(290,170,50,170);

line(50,170,50,110);

circle(170,110,40); {Рисование окружности}

arc(50,50,60,270,360); {Рисование дуги: (50,50) - центр дуги, 60 - радиус дуги, (270,360) - размер дуги}

arc(290,50,60,180,270); {Рисование дуги: (290,50) - центр дуги, 60 - радиус дуги, (180,270) - размер дуги}

a:=12; b:=6; {Определение начальных данных}

r1:=2; r2:=3;

S:=a*b-pi*r1*r1-pi*r2*r2/2;{Вычисление площади}

write('S= ',S:2:2); {Форматный вывод}

end.

Результат работы будет выглядеть так:

Упражнение 2

Составьте программу, которая рисует одну из пространственных фигур:

А) куб (длина ребра вводится с клавиатуры);

Технология составления программы:

program upr7_1_2a;

uses crt, GraphABC; {Подключение модулей}

var a, b:integer;

begin

SetWindowSize (350,350); {Размеры окна}

write('Введите длину ребра (1-8): ');

readln(a); {Ввод длины ребра куба}

SetPenWidth (3); {Толщина пера}

b:=a*20; {Учёт масштаба}

line(50,trunc(50+b/2),50,trunc(50+3*b/2));

{Рисование отрезков, trunc обеспечивает целочисленность координат}

line(50,trunc(50+3*b/2),50+b,trunc(50+3*b/2));

line(50+b,trunc(50+3*b/2),50+b,trunc(50+b/2));

line(50+b,trunc(50+3*b/2),trunc(50+3*b/2),50+b);

line(trunc(50+3*b/2),50+b,trunc(50+3*b/2),50);

line(trunc(50+3*b/2),50,trunc(50+b/2),50);

line(trunc(50+b/2),50,50,trunc(50+b/2));

line(50,trunc(50+b/2),50+b,trunc(50+b/2));

line(50+b,trunc(50+b/2),trunc(50+3*b/2),50);

end.

Результат работы может выглядеть так:

Б) конус (значения радиуса и высоты вводятся с клавиатуры);

Технология составления программы:

Пусть центр основания конуса находится в точке (200,200).

program upr7_1_2b;

uses crt, GraphABC; {Подключение модулей}

var a,b,r,h:integer;

begin

SetWindowSize (350,350); {Размеры окна}

write('Введите значение радиуса (1-4): ');

readln(a); {Ввод значения радиуса конуса}

write('Введите высоту (1-8): ');

readln(b); {Ввод высоты конуса}

SetPenWidth (3); {Толщина пера}

r:=a*20; h:=b*20; {Учёт масштаба}

line(200-r,200,200,200-h);{Рисование отрезков}

line(200,200-h,200+r,200);

Ellipse(200-r,trunc(200-r/2),200+r,trunc(200+r/2));

{Рисование эллипса, координаты которого заданы координатами противоположных вершин описанным около него прямоугольником; trunc обеспечивает целочисленность координат}

end.

Результат работы может выглядеть так:

Упражнение 3

Составьте программу, которая рисует:

А) выкройку платья (размер а вводится с клавиатуры);

Технология составления программы:

Расчёт координат произведём относительно размера платья r. Пусть отступим от начала координат по оси OХ расстояние r, по оси OY – 40 пикселей.

program upr7_1_3a;

uses crt, GraphABC; {Подключение модулей}

var a,r:integer;

begin

SetWindowSize (350,350); {Размеры окна}

write('Введите значение размера платья (1-7): ');

readln(a); {Ввод размера платья}

SetPenWidth (3); {Толщина пера}

r:=a*20; {Учёт масштаба}

line(trunc(r+r/4),40,r,40);

{Рисование отрезков, trunc обеспечивает целочисленность координат}

line(r,40,r,r+40);

line(r,r+40,trunc(r/2),2*r+40);

line(trunc(r/2),2*r+40,trunc(2*r+r/2),2*r+40);

line(trunc(2*r+r/2),2*r+40,2*r,r+40);

line(2*r,r+40,2*r,40);

line(2*r,40,trunc(r+3*r/4),40);

line(r,r+40,2*r,r+40);

arc(trunc(r+r/2),40,trunc(r/4),180,360); {Рисование дуги}

end.

Результат работы может выглядеть так:

Б) деталь в виде кольца внешним радиусом 150 и внутренним радиусом 50, в котором вырезаны отверстия радиусом 30. Их центры находятся на расстоянии 100 от центра кольца (число отверстий n вводится с клавиатуры).

Технология составления программы:

program upr7_1_3b;

uses crt, GraphABC; {Подключение модулей}

var n,i,u,u0,x,y:integer;

begin

SetWindowSize (400,400); {Размеры окна}

write('Введите число отверстий (2

readln(n); {Ввод количества отверстий}

SetPenWidth (2); {Толщина пера}

Circle(200,200,150); {Рисование окружности радиуса 150}

Circle(200,200,50); {Рисование окружности радиуса 50}

u0:=360 div n; {Определение угла смещения}

u:=0 ; {Начальный угол}

for i:=1 to n do {Повторение рисования окружности}

begin

x:=round(100*sin(pi/180*u));{Смещение по оси ОХ}

y:=round(100*cos(pi/180*u)); {Смещение по оси OY}

Circle(200-x,200-y,30);

{Рисование окружности радиуса 30}

u:=u+u0; {Увеличение угла}

end;

FloodFill(200,55,clGray);

{Закрашивание основной окружности}

end.

Результат работы может выглядеть так:

7.2 использование растровых изображений

Коротко о главном:

  • В среде PascalABC можно загружать рисунки в форматах BMP, JPG, GIF, PNG.

  • Процедура DrawPicture(nm,x,y) выводит рисунок с описателем nm в позицию (x,y) графического окна.

  • Движение изображений в среде PascalABC можно имитировать путём их многократного рисования и стирания.

  • Избежать моргания при имитации движения позволяет использование процедуры перерисовки Redraw.

Упражнение 1

Составьте программу, которая загружает из файлов и выводит на экран:

А) портреты учёных (например, Эйнштейна, Резерфорда, Бора), писателей (например, Купалы, Коласа, Быкова), художников, композиторов;

Технология составления программы:

program upr7_2_1a;

uses crt, GraphABC; {Подключение модулей}

var pic:integer;

begin

SetWindowSize (500,500); {Размеры окна}

ClearWindow(clwhite); {Белый фон}

pic:=LoadPicture('d:/uprajneniya /ainshtein.jpg');

{Загрузка изображения из файла}

DrawPicture(pic,10,10,150,200);

{Вывод изображения и размер}

pic:=LoadPicture('d:/uprajneniya /rezerford.jpg');

{Загрузка изображения из файла}

DrawPicture(pic,170,10,150,200);

{Вывод изображения и размер}

pic:=LoadPicture('d:/uprajneniya /bor-nils.jpg');

{Загрузка изображения из файла}

DrawPicture(pic,330,10,150,200);

{Вывод изображения и размер}

end.

Результат работы может выглядеть так:

Для вывода на экран изображений писателей, художников, композиторов в предложенной программе изменить имена файлов с учёными на имена файлов, содержащие эти изображения.

Б) изображения животных, растений, памятников архитектуры;

Технология составления программы:

program upr7_2_1b;

uses crt, GraphABC; {Подключение модулей}

var pic:integer;

begin

SetWindowSize (500,500); {Размеры окна}

ClearWindow(clGreen); {Зелёный фон}

pic:=LoadPicture('d:/uprajneniya/los.jpg');

{Загрузка изображения из файла}

DrawPicture(pic,10,10,100,120);

{Вывод изображения и размер}

pic:=LoadPicture('d:/uprajneniya/medved.jpg');

DrawPicture(pic,170,10,100,120);

pic:=LoadPicture('d:/uprajneniya/volk.jpg');

DrawPicture(pic,330,10,100,120);

end.

Результат работы может выглядеть так:

Для вывода на экран изображений растений, памятников архитектуры в предложенной программе изменить имена файлов с животными на имена файлов, содержащие эти изображения.



Упражнение 2

Составьте программу, которая:

А) рисует рекламные плакаты (турфирмы, концерта, спортивного праздника);

Технология составления программы:

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

program upr7_2_2a;

uses crt, GraphABC; {Подключение модулей}

var pic,x,y,w,h:integer;

begin

SetWindowSize (500,500); {Размеры окна}

pic:=LoadPicture('d:/uprajneniya/turfirma.jpg');

{Загрузка изображения}

SetPictureTransparent(pic,true); {Прозрачный фон}

x:=0;y:=0; {Начальные координаты}

w:=30;h:=30; {Начальный размер изображения}

while x

begin

ClearWindow;

{Очистка графического окна белым цветом}

DrawPicture(pic,x,y,w,h); {Вывод изображения}

x:=x+2; y:=y+2; {Изменение координат}

w:=w+2; h:=h+2; {Изменение размера изображения}

sleep(20); {Задержка на 20 мс}

Redraw; {Перерисовка}

end;

SetBrushStyle(bsClear); {Прозрачный фон кисти}

SetFontColor(clRed); {Цвет шрифта}

SetFontSize(20); {Размер шрифта}

SetFontStyle(fsBold); {Начертание}

TextOut(60,40,'Турфирма "Алые паруса"'); {Вывод текста}

end.

Результат работы может выглядеть так:



Плакаты концерта и спортивного праздника можно сделать по аналогии с плакатом турфирмы.

Б) генерирует меню школьной столовой;

Технология составления программы:

program upr7_2_2b;

uses crt, GraphABC; {Подключение модулей}

var i, pic: integer; s1,s2,s3,b1,b2,b3: string;

begin

SetWindowSize (500,500); {Размеры окна}

write('Выберите номер комплекса: 1 или 2 '); read(i);

case i of {Выбор имён файлов и текста}

1: begin b1:='d:/uprajneniya/borg.jpg';

b2:='d:/uprajneniya/plov.jpg';

b3:='d:/uprajneniya/kompot.jpg';

s1:='Борщ';

s2:='Плов';

s3:='Компот';

end;

2: begin b1:='d:/uprajneniya/ovoj_sup.jpg';

b2:='d:/uprajneniya/farsh_perez.jpg';

b3:='d:/uprajneniya/sok.jpg';

s1:='Овощной суп';

s2:='Фарш. перец';

s3:='Cок';

end;

end;

SetPenColor(clLtGray); {Цвет пера}

Rectangle(20,20,490,490); {Рисование прямоугольника}

pic:=LoadPicture(b1); {Загрузка изображения из файла}

DrawPicture(pic,30,30,100,100); {Вывод изображения}

pic:=LoadPicture(b2); {Загрузка изображения из файла}

DrawPicture(pic,150,30,100,100); {Вывод изображения}

pic:=LoadPicture(b3); {Загрузка изображения из файла}

DrawPicture(pic,270,30,100,100); {Вывод изображения}

SetBrushStyle(bsClear); {Прозрачный фон кисти}

SetFontColor(clBlack); {Цвет шрифта}

SetFontSize(10); {Размер шрифта}

SetFontStyle(fsBold); {Начертание}

TextOut(30,140,s1); {Вывод текста}

TextOut(150,140,s2); {Вывод текста}

TextOut(270,140,s3); {Вывод текста}

end.

Результат работы может выглядеть так:

Упражнение 3

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

Технология составления программы:

program upr7_2_3;

uses crt, GraphABC; {Подключение модулей}

var fon,pic,x,y,i:integer;

begin

SetWindowSize (230,380); {Размеры окна}

fon:=LoadPicture('d:/uprajneniya/TOWER.JPG');

{Загрузка изображений}

pic:=LoadPicture('d:/uprajneniya/APPLE.GIF');

SetPictureTransparent(pic,true); {Прозрачный фон}

x:=120;y:=40; {Начальные координаты}

while x

begin

ClearWindow;

{Очистка графического окна белым цветом}

DrawPicture(fon,0,0); {Вывод изображения}

DrawPicture(pic,x,y,20,20);

x:=x+1; y:=y+3; {Изменение координат}

sleep(30); {Задержка на 20 мс}

Redraw; {Перерисовка}

end;

end.

Результат работы может выглядеть так:

7.3 Построение графиков и диаграмм

Упражнение 1

Составьте программу, которая строит график зависимости:

А) у(х)=0,5хcos2x на промежутке [-12;12];

Технология составления программы:

program upr7_3_1a;

uses crt, GraphABC; {Подключение модулей}

var x0,y0,x1,y1,k:integer; x,y:real;

begin

SetWindowSize (640,400); {Размеры окна}

x0:=320;y0:=200; k:=20;

line(20,y0,620,y0); {Ось абсцисс}

line(x0,20,x0,380); {Ось ординат}

SetPenColor(clRed); {Цвет пера}

x:=-12; {Начальное значение аргумента}

while x

begin

y:=0.5*x*cos(2*x); {Функция}

x1:=trunc(x0+x*k); {Экранные координаты}

y1:=trunc(y0+y*k);

circle(x1,y1,2);

x:=x+0.01;

end;

end.

Результат работы будет выглядеть так:

Б) у(х)=8sinxsin2x на промежутке [-15;15];

Технология составления программы:

program upr7_3_1b;

uses crt, GraphABC; {Подключение модулей}

var x0,y0,x1,y1,k:integer; x,y:real;

begin

SetWindowSize (640,400); {Размеры окна}

x0:=320;y0:=200; k:=20;

line(20,y0,620,y0); {Ось абсцисс}

line(x0,20,x0,380); {Ось ординат}

SetPenColor(clRed); {Цвет пера}

x:=-15; {Начальное значение аргумента}

while x

begin

y:=8*sin(x)*sin(2*x); {Функция}

x1:=trunc(x0+x*k); {Экранные координаты}

y1:=trunc(y0+y*k);

circle(x1,y1,2);

x:=x+0.01;

end;

end.

Результат работы будет выглядеть так:

Упражнение 2

Составьте программу, которая строит круговую диаграмму, иллюстрирующую:

А) распределение результатов тестирования по трём предметам (данные вводятся с клавиатуры);

Технология составления программы:

program upr7_3_2a;

uses crt, GraphABC; {Подключение модулей}

var a,b,c,a1,b1,c1,S:integer;

begin

SetWindowSize (640,400); {Размеры окна}

write('Введите результат первого теста: '); readln(a);

write('Введите результат второго теста: '); readln(b);

write('Введите результат третьего теста: '); readln(c);

S:=a+b+c;

{Вычисление суммарного результата тестов}

a1:=round(a*360/S); {Вычисление конечного угла сектора}

SetBrushColor(clRed); {Цвет кисти}

Pie(220,240,140,0,a1); {Рисование сектора}

b1:=a1+round(b*360/S); {Вычисление конечного угла сектора}

SetBrushColor(clGreen); {Цвет кисти}

Pie(220,240,140,a1,b1); {Рисование сектора}

c1:=b1+round(c*360/S); {Вычисление конечного угла сектора}

SetBrushColor(clYellow); {Цвет кисти}

Pie(220,240,140,b1,c1); {Рисование сектора}

end.

Результат работы может выглядеть так:

Б) химический состав земной коры (данные вводятся с клавиатуры: кислород – 47, 2%, кремний – 27,6%, алюминий – 8,3%, железо – 5,1%, кальций – 3,6%, другие элементы – 8,2%).

Технология составления программы:

program upr7_3_2b;

uses crt, GraphABC; {Подключение модулей}

const K: array[1..6] of string = ('кислород','кремний','алюминий',

'железо','кальций','другие элементы');

var u0,u,i:integer; N: array[1..6] of real;

begin

SetWindowSize (640,400); {Размеры окна}

u0:=0;

for i:=1 to 6 do

begin

write('Введите процентный состав элемента ', K[i],' ');

readln(N[i]);

u:=u0+round(N[i]*360/100);

{Вычисление конечного угла сектора}

SetBrushColor(rgb(random(255),random(255),random(255)));

{Цвет кисти}

Pie(220,240,140,u0,u); {Рисование сектора}

u0:=u;

end;

end.

Результат работы может выглядеть так:



§ 8. Выполнение практических заданий по темам учебных предметов

8.1 Астрономия

Упражнение 1

Составьте программу, которая загружает из файлов и выводит на экран изображение одной из планет Солнечной системы на фоне звёздного неба.

Технология составления программы:

program upr8_1_1;

uses crt, GraphABC; {Подключение модулей}

var fon,pic:integer;

begin

SetWindowSize (170,150); {Размеры окна}

fon:=LoadPicture('d:/uprajneniya/SKY.GIF'); {Загрузка изображения из файла}

DrawPicture(fon,0,0); {Вывод изображения}

pic:=LoadPicture('d:/uprajneniya/saturn.jpg'); {Загрузка изображения из файла}

DrawPicture(pic,30,30,100,100);{Вывод изображения}

end.

Результат работы может выглядеть так:

Упражнение 2

Составьте программу, которая демонстрирует:

А) прямолинейное движение спутника на фоне звёздного неба и Земли;

Технология составления программы:

program upr8_1_2а;

uses crt, GraphABC; {Подключение модулей}

var fon,pic,din,x:integer;

begin

SetWindowSize (170,150); {Размеры окна}

fon:=LoadPicture('d:/uprajneniya/SKY.GIF'); {Загрузка изображений из файла}

pic:=LoadPicture('d:/uprajneniya/zemlya.jpg');

din:=LoadPicture('d:/uprajneniya/sputnik.jpg');

x:=0;

while x

begin

ClearWindow;

{Очистка графического окна белым цветом}

DrawPicture(fon,0,0); {Вывод изображений}

DrawPicture(pic,0,50,400,200);

DrawPicture(din,x,20,20,20);

x:=x+1; {Изменение координат}

sleep(30); {Задержка на 30 мс}

Redraw; {Перерисовка}

end;

end.

Результат работы может выглядеть так:

А)движение планет вокруг Солнца по круговым орбитам;

Технология составления программы:

program upr8_1_2b;

uses crt, GraphABC; {Подключение модулей}

var fon,pic,din1,din2,x0,y0,x,y,u,R:integer;

begin

SetWindowSize (170,150); {Размеры окна}

fon:=LoadPicture('d:/uprajneniya/SKY.GIF'); {Загрузка изображений из файла}

pic:=LoadPicture('d:/uprajneniya/sun.jpg');

din1:=LoadPicture('d:/uprajneniya/ZEM.GIF');

din2:=LoadPicture('d:/uprajneniya/mars.jpg');

x0:=75; y0:=55; {Координаты центра}

R:=50; u:=1; {Радиус орбиты}

while u

begin

ClearWindow;

{Очистка графического окна белым цветом}

DrawPicture(fon,0,0); {Вывод изображений}

DrawPicture(pic,70,60,30,30);

x:=round(x0+R*cos(pi*u/180)); {Координаты Земли}

y:=round(y0-R*sin(pi*u/180));

DrawPicture(din1,x,y,10,10);

x:=round(x0+R*0.8*cos(pi*u/180)); {Координаты Марса}

y:=round(y0-R*0.8*sin(pi*u/180));

DrawPicture(din2,y,x,10,10);

u:=u+1; {Изменение координат}

sleep(30); {Задержка на 30 мс}

Redraw; {Перерисовка}

end;

end.

Результат работы может выглядеть так:

8.2 География

Упражнения

Составьте программу, которая:

А) выводит карту Беларуси и обозначает национальные парки квадратами, размеры которых пропорциональны площади парка: Беловежская пуща – 87,5 тыс.га, Браславские озёра – 71,5 тыс.га, Припятский – 82, 4 тыс.га, Нарочанский – 94 тыс.га;

Технология составления программы:

program upr8_2_a;

uses crt, GraphABC; {Подключение модулей}

const A: array[1..4] of real=(87.5,71.5,82.4,94);

B: array[1..4] of string=('Беловежская пуща',

'Браславские озёра','Припятский','Нарочанский');

var karta,i,R:integer;

begin

SetWindowSize (520,480); {Размеры окна}

writeln('Площадь национальных парков Беларуси:');

karta:=LoadPicture('d:/uprajneniya/karta.gif');

{Загрузка изображений из файла}

DrawPicture(karta,10,50);

setBrushColor(clRed);

for i:=1 to 4 do

writeln(B[i],' ',A[i],' тыс.га');

R:=round(sqrt(A[1]/pi));

circle(50,400,R);

R:=round(sqrt(A[2]/pi));

circle(250,100,R);

R:=round(sqrt(A[3]/pi));

circle(300,400,R);

R:=round(sqrt(A[4]/pi));

circle(200,200,R);

end.

Результат работы может выглядеть так:

Б) выводит карту Беларуси, строит таблицу с данными о площади и глубине озёр, столбчатую или линейную диаграмму (по указанию учителя);

Технология составления программы:

Воспользуемся данными таблицы (рис. 8.2.1) для составления программы.

рис. 8.2.1

program upr8_2_b;

uses crt, GraphABC; {Подключение модулей}

const A: array[1..8] of real=(79.6,52.8,40.3,37.7,36.1,

26.0,24.6,22.3);

B: array[1..8] of real=(24.8,7.5,2.9,11.5,12.0,

2.3,8.1,8.7);

C: array[1..8] of string=('Нарочь','Освея',

'Червоное','Лукомльское','Дривяты','Выгонощенское',

'Нещердо','Свирь');

var karta,i,S:integer;

begin

SetWindowSize (640,480); {Размеры окна}

writeln('Площадь и глубина озёр Беларуси:');

karta:=LoadPicture('d:/uprajneniya/karta.gif');

{Загрузка изображений из файла}

DrawPicture(karta,340,0,250,200);

writeln('Озеро':15,'Площадь':13,'Глубина':9);

for i:=1 to 8 do

writeln(i,C[i]:15,' ',A[i]:7:2,' км.кв ', B[i]:7:2,' м'); {Вывод данных на экран из массива}

writeln;writeln;

writeln('Выберите вариант диаграммы: 1-столбчатая, 2-линейчатая');

read(S); {Осуществление выбора варианта диаграммы}

writeln;

SetPenWidth(5); {Толщина пера}

case S of {Выбор варианта диаграммы}

1: begin writeln('Столбчатая диаграмма');

{Построение диаграммы}

for i:=1 to 8 do

begin

write(' ',i);

setPenColor(clRed); {Цвет пера}

Line(5+25*i,420-round(2*A[i]),5+25*i,420); {Рисование линий}

setPenColor(clBlue); {Цвет пера}

Line(10+25*i,420-round(2*B[i]),10+25*i,420); {Рисование линий}

end;

end;

2: begin writeln('Линейчатая диаграмма');

{Построение диаграммы}

for i:=1 to 8 do

begin

writeln(C[i]:15,' ');

{Вывод данных на экран из массива}

setPenColor(clRed); {Цвет пера}

Line(160,250+15*i,160+round(5*A[i]),250+15*i); {Рисование линий}

setPenColor(clBlue); {Цвет пера}

Line(160,255+15*i,160+round(5*B[i]),255+15*i); {Рисование линий}

end;

end;

end;

end.

Результат работы может выглядеть так:

Вариант 1 – столбчатая диаграмма

Вариант 2 – линейчатая диаграмма

В) выводит карту Европы и помечает страны (столицы государств) символами, размеры которых пропорциональны численности населения.

Технология составления программы:

Для определения численности населения страны Европы воспользуемся диаграммой (рис. 8.2.2). Возьмём только часть данных: для стран - Германия, Франция, Великобритания, Италия, Испания, Польша, Нидерланды, Греция.

рис. 8.2.2

program upr8_2_v;

uses crt, GraphABC; {Подключение модулей}

const A: array[1..8] of real=(82.5,60.9,60.4,

58.8,43.8,38.1,16.3,11.1);

B: array[1..8] of string=('Германия','Франция',

'Великобритания','Италия','Испания','Польша','Нидерланды','Греция');

var karta,i,R:integer;

begin

SetWindowSize (500,560); {Размеры окна}

writeln('Численность населения стран Европы');

karta:=LoadPicture('d:/uprajneniya/europe.gif');

{Загрузка изображений из файла}

DrawPicture(karta,0,160,500,400);

writeln('Страна':15,' Численность населения':13);

for i:=1 to 8 do

writeln(i,B[i]:15,' ',A[i]:7:1,' млн. чел ');

{Вывод данных на экран из массива}

setBrushColor(clRed);

R:=round(sqrt(A[1]/pi)); { Германия }

circle(250,400,R);

R:=round(sqrt(A[2]/pi)); { Франция }

circle(200,450,R);

R:=round(sqrt(A[3]/pi)); { Великобритания }

circle(160,350,R);

R:=round(sqrt(A[4]/pi)); { Италия }

circle(310,500,R);

R:=round(sqrt(A[5]/pi)); { Испания }

circle(160,515,R);

R:=round(sqrt(A[6]/pi)); { Польша }

circle(330,400,R);

R:=round(sqrt(A[7]/pi)); { Нидерланды }

circle(230,395,R);

R:=round(sqrt(A[8]/pi)); { Греция }

circle(360,510,R);

end.

Результат работы может выглядеть так:



8.3 Биология

Упражнения

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

А) через сколько дней уровень загрязнения воды отходами уменьшится в N раз, если каждый день он уменьшается на P% (значения N и P вводятся с клавиатуры);

Технология решения:

program upr8_3_a;

var N,P,i,t,u0:integer; u :real;

begin

write('Введите уровень загрязнения воды '); readln(u0);

write('Введите значение уменьшения загрязнения воды '); readln(P);

write('Введите коэффициент уменьшения загрязнения воды '); readln(N);

t:=0; u:=u0;

while u=u0 div N do

begin

u:=u-u*p/100; {Формула уменьшения загрязнения}

t:=t+1; {Подсчёт количества дней}

end;

write('Через ',t,' дней');

end.

Результат работы может выглядеть так:

Введите уровень загрязнения воды 3000

Введите значение уменьшения загрязнения воды 5

Введите коэффициент уменьшения загрязнения воды 2

Через 14 дней

Б) через сколько дней количество атомов радиоактивного изотопа ИОД-131 уменьшится в 100 раз, если период полураспада (время уменьшения количества атомов вдвое) составляет 8,14 дня;

Технология решения:

program upr8_3_b;

var k0:integer; k,t :real;

begin

write('Введите количество атомов радиоактивного изотопа Иод-131 '); readln(k0);

t:=0; k:=k0;

while k=k0 div 100 do

begin

k:=k/2;t:=t+8.14;

end;

write('Через ',t,' дней');

end.

Результат работы может выглядеть так:

Введите количество атомов радиоактивного изотопа Иод-131 10000

Через 56.98 дней

В) через сколько дней выздоровеет больной, т.е. через сколько дней концентрация болезнетворных бактерий в крови уменьшится с 50 до 12 единиц. В результате применения лекарства концентрация бактерий ежедневно уменьшается на 20% по сравнению с предыдущим днём.

Технология решения:

program upr8_3_v;

var t:integer; k :real;

begin

t:=0; k:=50;

while k=12 do

begin

k:=k-k*20/100;

t:=t+1;

end;

write('Через ',t,' дней');

end.

Результат работы программы:

Через 7 дней

8.4 Физика

Упражнение

Составьте программу, которая

А) строит изображения предмета в плоском зеркале (расстояние от предмета до зеркала вводится с клавиатуры);

Технология составления программы:

program upr8_4_a;

uses crt, GraphABC; {Подключение модулей}

var pic,R:integer;

begin

SetWindowSize (640,480); {Размеры окна}

write('Введите расстояние от предмета до зеркала (5-100): ');

readln(R);

pic:=LoadPicture('d:/uprajneniya/robot.jpg');

{Загрузка изображения из файла}

SetPenColor(clbrown); {Цвет пера}

SetPenWidth(7); {Толщина пера}

line(320,50,320,400); {Рисование линий}

line(50,400,590,400);

DrawPicture(pic,320+R,100,200,290); {Вывод изображения}

DrawPicture(pic,320-R,100,-200,290);

{Вывод отображённого изображения}

SetPenColor(clGray); {Цвет пера}

SetPenWidth(2); {Толщина пера}

line(trunc(120+R/2),100,trunc(520-R/2),100); {Рисование линии}

end.

Результат работы может выглядеть так:

Б) демонстрирует отражение и преломление света на плоской поверхности (угол падения вводится с клавиатуры).

Технология составления программы:

program upr8_4_b;

uses crt, GraphABC; {Подключение модулей}

var u,x,y:integer;

begin

SetWindowSize (300,400); {Размеры окна}

write('Введите угол падения луча(5-85): ');

readln(u);

SetPenColor(clGreen); {Цвет пера}

SetPenWidth(4); {Толщина пера}

line(150,50,150,350); {Рисование линии}

SetPenColor(clGray); {Цвет пера}

line(0,200,300,200); {Рисование линий}

FloodFill(50,250,clGray ); {Заливка области серым цветом}

SetPenColor(clRed); {Цвет пера}

x:=abs(round(150*sin(pi/180*(180-u))));

{Вычисление длины катета прямоугольного треугольника (смещение по оси OX)}

y:=abs(round(150*cos(pi/180*(180-u))));

{Вычисление длины катета прямоугольного треугольника (смещение по оси OY)}

line(150,200,150-x,200-y);

{Построение луча падения (с учётом второй четверти декартовой системы координат)}

x:=round(150*sin(pi/180*u));

{Вычисление длины катета прямоугольного треугольника (смещение по оси OX)}

y:=round(150*cos(pi/180*u));

{Вычисление длины катета прямоугольного треугольника (смещение по оси OY)}

line(150,200,150+x,200-y);

{Построение луча отражения (с учётом первой четверти декартовой системы координат)}

SetPenColor(flyblow);

x:=abs(round(150*sin(pi/180*(270+u))));

{Вычисление длины катета прямоугольного треугольника (смещение по оси OX)}

y:=abs(round(150*cos(pi/180*(270+u))));

{Вычисление длины катета прямоугольного треугольника(смещение по оси OY)}

line(150,200,150+ xs,200+y);

{Построение луча преломления (с учётом четвёртой четверти декартовой системы координат)}

end.

Результат работы может выглядеть так: