Как составить программу которая выводит на экран рисунок

Просмотров 79.6к. Обновлено 23 ноября 2020

Работа с графикой в PascalABC

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

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

С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.

Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;

Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.

Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметров.

Содержание

  1. Управление графическим окном
  2. Процедуры рисования графических примитивов
  3. Процедуры, используемые для работы с цветом
  4. Процедуры для работы с текстом
  5. Цвета в PascalABC

Управление графическим окном

Работа с графикой в PascalABC

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

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

С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.

Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;

Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.

Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметров.

Процедуры рисования графических примитивов

Работа с графикой в PascalABC

Процедуры, используемые для работы с цветом

Работа с графикой в PascalABC

Процедуры для работы с текстом

Работа с графикой в PascalABC

Цвета в PascalABC

Работа с графикой в PascalABC

Пример графической программы, рисующей изображение дома:

Program Domik; 
uses Graphabc; //подключение модуля GraphABC 
begin 
   SetWindowWidth(800); //ширина окна программы 
   SetWindowHeight(600); //высота окна программы 
   SetPenWidth(3); //толщина пера 
   SetFontSize(18); //размер шрифта 
   SetFontColor(clRed); //цвет шрифта 
   SetFontStyle(fsBold); //жирный стиль шрифта 
   TextOut(100,100,'Домик'); //текст 
   Rectangle(200, 300, 600,600); //дом 
   Circle(400,225, 40); //круг 
   SetBrushColor(clAqua); //цвет заливки окна 
   FillRect(300, 400,500,500); //процедура заливки окна 
   rectangle(300,400,500,500); //окно 
   Line(400,400,400,500); // окно 
   Line(300,450,500,450); //окно 
   Line(200,300,400,150); //крыша 
   Line(400,150,600,300); //крыша 
   Line(480,210,480,160); //труба 
   Line(480,160,520,160); //труба 
   Line(520,160,520,240); //труба 
end.

Работа с графикой в PascalABC

Рисунок в PascalABC

Программа, рисующая фигурку:

Program Figurka; 
   uses GraphABC;
   begin
   SetWindowSize(500, 500); //задаем размер графического окна
   SetPenWidth(3); //устанавливаем стиль пера
   SetBrushColor(clFuchsia); //устанавливаем цвет кисти
   Circle(225,160,50); //рисуем окружность
   Line(225,160,225,180); //рисуем линии
   Line( 210,190,240,190);
   Line( 225,210,225,250);
   Line( 100,100,200,260);
   Line( 200,260,400,260);
   Line( 210,350,200,480);
   Line(240,350,250,480);
   Rectangle(200,230,250,350); //рисуем прямоугольник SetBrushColor(clLime);
   FillRect(0, 480,500,500); //рисуем закрашенный прямоугольник
   SetBrushColor(clWhite);
   Circle(205,150,10);
   Circle(245,150,10); 
end.

Работа с графикой в PascalABC

Практическая работа за компьютером

Задание 1. Определите координаты и составьте программу, выводящую на экран рисунок  дома и дерева.

Работа с графикой в PascalABC

Программа будет иметь вид:

Program domik_2; 
uses GraphABC; 
var i: integer; 
st:string; 
begin 
   SetWindowSize(500, 500); 
   {Коричневая стена} 
   SetPenWidth(2); 
   SetBrushColor(clBrown);
   FillRect(100,50,150,100);
   {Крыша желтого цвета} 
   SetPenColor(clBrown); 
   Line(125,25,80,75);
   Line(125,25,170,75);
   FloodFill(125, 30,clYellow);
   {Крона дерева} 
   SetPenColor(clGreen); 
   SetBrushColor(clGreen);
   Ellipse(100,150,150,200); 
   {ствол дерева} 
   SetBrushColor(clBrown); 
   FillRect(120,200,130,230);
end.

Задание 2. Используя оператор цикла и введя переменную для пересчета координат по оси  x, постройте “поселок”, состоящий из 5 домов. Внесите соответствующие дополнения и изменения в предыдущую программу.

Работа с графикой в PascalABC

Весь наш «поселок» выстроился вдоль горизонтальной оси экрана — оси X. Построение рисунка начинается с левого верхнего угла стены первого дома — точки с координатами (100, 50). Координата Y не изменяется. Чтобы начать рисовать второй домик, нужно координату X увеличить на 150 (50 точек — ширина первого дома и 100 точек — расстояние между домиками).

Выберем в качестве параметра цикла целочисленную переменную X.
Для всех элементов нашего рисунка абсолютное значение координаты X заменим на относительное. Например, для стены дома процедура для рисования запишется следующим образом:

FillRect(x,50,x+50,100);

Сформулируем условие выполнения цыклических действий для нашей задачи.Какие координаты имеет левый верхний угол пятого дома? Конечное значение выбранного нами параметра цикла x = 700. Тогда условие выполнения цикла записывается так: x<=700.

Словесное описание алгоритма коротко можно записать так:

Переменной цикла x присвоить начальное значение 100. Пока x<=700 выполнять серию действий «Нарисуй дом и дерево», после каждого фрагмента рисунка увеличивать значение переменной цикла  на 150.

Программа будет иметь вид:

Program Domik; 
uses GraphABC; 
var i: integer; 
st:string; 
x:integer; 
begin 
    SetWindowSize(800, 500); 
    x:=100; 
    While x<=700 do 
    begin 
        {Коричневая стена} 
        SetPenWidth(2); 
        SetBrushColor(clBrown); 
        FillRect(x,50,x+50,100); 

        {Крыша желтого цвета} 
        SetPenColor(clBrown); 
        Line(x+25,25,x-20,75); 
        Line(x+25,25,x+70,75); 
        FloodFill(x+25, 30,clYellow); 
        {Крона дерева} 
        SetPenColor(clGreen); 
        SetBrushColor(clGreen); 
        Ellipse(x,150,x+50,200); 

        {ствол дерева} 
        SetBrushColor(clBrown); 
        FillRect(x+20,200,x+30,230); 
        x:=x+150; 
    end; 
end.

Практическая работа № 7

Тема: Программная реализация вывода графических изображений на экран.

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

Оборудование: ПК, система программирования Qbasic.

 Ход работы

1. Изучить основные сведения по теме.

Основные сведения

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

Формат: SCREEN <номер графического режима>

Номер графического режима указывает, на какое количество пикселей будет разбит экран.В графическом режиме на экран монитора выводится изображение (рисунок).

Рисунок – это совокупность точек различного цвета. Эти точки называются пикселями. Экран монитора состоит из точек – пикселей.

В графическом режиме изображение на экране строится по точкам. Каждая точка имеет определенные координаты (х, у) и  цвет. Начало координат находится в левом верхнем углу экрана.

Оператор SCREEN 9 включает графический режим работы экрана. В этом режиме экран разбивается на 640 точек по горизонтали (ось Х) и 340 точек по вертикали (ось У).


Для рисования точки определенного цвета используется оператор PSET 

PSET – оператор построения точки (высвечивание экранной точки с заданными координатами и заданным цветом)

Формат: PSET (X,Y), N

(X,Y) – координаты экранной точки в пикселях

N – целое число, которое указывает номер цвета из активной палитры

Номер цвета можно не указывать, в этом случае изображение будет белым.

Цвета изображений в Бейсике


Для рисования прямых линий используется оператор LINE.

LINE – оператор построения отрезка.

Формат: LINE (X1,Y1) – (X2,Y2), N

(X1,Y1) – координаты начала отрезка

(X2,Y2) – координаты конца отрезка

N – номер цвета

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


Формат: LINE (X1,Y1) – (X2,Y2), N,  B

(X1,Y1) – координаты начала диагонали

(X2,Y2) – координаты конца диагонали

N – номер цвета

B – служебное слово, обозначающее прямоугольник (box)

Для рисования закрашенных прямоугольников вместо служебного слова В используется служебное слово BF

Формат: LINE (X1,Y1) – (X2,Y2), N,  BF

N – номер цвета контура и заливки


Чтобы нарисовать окружность необходимо знать радиус и центр окружности. Для рисования окружностей используется оператор CIRCLE.

CIRCLE – оператор построения окружности

Формат: CIRCLE (X,Y), R, N

(X,Y) – координаты центра окружности

R – радиус окружности (длина радиуса в пикселях)

N – номер цвета

Для рисования овалов используется специальная форма оператора CIRCLE:

Формат: CIRCLE (X,Y), R, N, , , К  (три запятые после номера цвета ОБЯЗАТЕЛЬНЫ)

К – коэффициент сжатия первоначальной окружности.

Если К>1, то сжатие по горизонтали

lr5inf-2

Если 0<К<1, то сжатие по вертикали

Для рисования дуги окружности используется специальная форма оператора CIRCLE:

Формат: CIRCLE (X,Y), R, N, a, b

a – угол, от которого начинается дуга (значение угла задается в радианах)

b – угол, где дуга заканчивается (значение угла задается в радианах)

Правило рисования дуг: дуга строится от угла a к углу b против часовой стрелки.

Формула перевода углов из градусной меры в радианы: 1° × 3,14/180 = 0,01745 рад

Бейсик позволяет использовать в качестве операндов в своих командах арифметические выражения. Поэтому, если вы затрудняетесь определить угол начала или окончания дуги на тригонометрической окружности (знаете, например, его значение в градусах 300, но не знаете значение в радианах), то можете в соответствующем месте оператора дуги написать 3,14*30/180 и пусть компьютер сам считает.


На рисунке можно закрашивать замкнутые области, ограниченные линиями одного цвета. Для закраски замкнутых областей применяется оператор PAINT. Закрашивать можно ТОЛЬКО замкнутые области.

 PAINT – оператор заливки

Формат: PAINT (X,Y), N1, N2

(X,Y) – координаты точки внутри замкнутой области

N1 – цвет заливки

N2 – цвет контура (линии, ограничивающей область)


Для рисования некоторых фигур можно использовать ломаную линию.

DRAW – оператор построения ломаной линии.

Формат: DRAW “направления”

Возможные направления линий:

Примеры использования операторов:

Графические операторы в qbasic

2.Выполнить задания по теме.

Задание 1.

1. На рабочем столе найдите ярлык программы qbasic2. Запустите программу. Создайте новый файл.

2. Введите в программу примеры построчно. Вводите одну строку, запустите на выполнение (Run-Start или F5), посмотрите, что произошло на экране, введите вторую строку, запустите на выполнение и т.д.

SCREEN 9
PSET (240,180), 10
LINE (460,140) – (600,40), 5
LINE (200,40) – (360,100), 3,B
LINE (460,220) – (620,300), 3,BF
CIRCLE (80,60), 40, 14
CIRCLE (160,140), 30, 14, , , 3
CIRCLE (240,160), 25, 14, , , 0.5
CIRCLE (60,200), 60, 6, , , 2
PAINT (62,203), 2, 6
PAINT (84,65), 14, 3

Удалите последнюю строчку, посмотрите на изменения

PAINT (84,65), 14, 14
PSET (220,200), 12
DRAW “F40 E40 F40”

3. Сохраните программу под именем grafika.bas

Задание 2.

1. Начертите в тетради систему координат XY, выбрав начало координат в верхнем левом углу страницы, горизонтальная ось Х, единичный отрезок  1 клеточка – 20пт, вертикальная ось Y, единичный отрезок  1 клеточка – 10пт.

2. Нарисуйте в этой системе координат (В ТЕТРАДИ) рисунок с домиком строго по клеточкам:

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

4. Изменить программу, добавив новые элементы в рисунок и раскрасить его различными цветами.

Задание 3.

1. Используя оператор DRAW нарисуйте на экране свое имя.

3. Работа над контрольными вопросами.

Контрольные вопросы

  1. Как включить графический режим работы экрана?
  2. Какой оператор используется для построения отрезка? Какие точки нужно указывать при построении отрезка?
  3. Какой оператор используется для построения прямоугольника? Какие точки нужно указывать при построении прямоугольника?
  4. Какой оператор используется для построения окружности, овала? Что нужно задать, чтобы построить окружность?
  5. Какой оператор используется для построения закрашенного прямоугольника?
  6. Какой оператор используется для построения ломаной линии?
  7. Какой оператор используется для окрашивания фигур? Какие области нельзя окрасить с помощью этого оператора?

Презентация к уроку “Программная реализация вывода графических изображений на экран”

[Unnamed]

1

Написать программу, которая выводит на экран изображение

27.12.2009, 13:08. Показов 10166. Ответов 6


Студворк — интернет-сервис помощи студентам

Need help!!!!
Помогите решить задачи на языке С++!!!
1)

Кликните здесь для просмотра всего текста

[IMG]http://s43.***********/i099/0912/73/1ad82a4c22cf.jpg[/IMG]

2)

Кликните здесь для просмотра всего текста

[IMG]http://s43.***********/i099/0912/7a/7e91706c7c87.jpg[/IMG]

3)

Кликните здесь для просмотра всего текста

[IMG]http://s07.***********/i180/0912/ff/da372ed5ab2b.jpg[/IMG]

Задачи нужно решить через функции…
Заранее спасибо))

firefox1913

28 / 28 / 6

Регистрация: 01.07.2009

Сообщений: 58

27.12.2009, 18:19

2

решение 1 задачи

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  #include <iostream>
 
int main()
{
    using namespace std;
    cout<<"    ~ n";
    cout<<"   ----n";
    cout<<"  (0  0)n";
    cout<<" // \/ "<<"\\"<< endl;
    cout<<"//( _  )\\ n";
    cout<<"  ^^  ^^   n";
 
    return 0;
}

Добавлено через 4 часа 26 минут
4 задание

C++
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
#include <iostream>
#include <locale>
#include <string>
 
using namespace std;
 
int Mecac(int m)
{
  if(m % 2==0) return 31;
  else return 30;
}
 
int main()
{
  setlocale(LC_ALL,"Rus");
 
  int a,k, m,n;
 
  cout<<"Введите номер месяца "; cin>>m;
  cout<<"Введите день недели для 1числа "<< m ; cin>> a;
  cout<<"K : "; cin>>k;
  
  n = Mecac(m);
 
  for(int i = 1;   i <= n;  i++)
  {
    if(i==k) break;
 
    if(a==7) a=1;
    a++;
  }
 
  cout<< k <<" "<< m <<" - "<< a <<endl;
 
  return 0;
}



1



odip

Эксперт С++

7175 / 3234 / 81

Регистрация: 17.06.2009

Сообщений: 14,164

27.12.2009, 22:46

3

Задача 0.2

C
1
2
3
4
5
6
7
8
9
10
11
12
13
double a64( double a ) {
double t= a;
 
t= t*t; /* a^2 */
t= t*t; /* a^4 */
t= t*t; /* a^8 */
t= t*t; /* a^16 */
t= t*t; /* a^32 */
t= t*t; /* a^64 */
 
return t;
 
}

Добавлено через 11 минут
Задача 1.2
Не понял за что тут 5 баллов дают.

C
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* Thread 80649, Spoiler 1, Task 2 */
 
#include <stdio.h>
#include <stdlib.h>
 
 
/********************************************************************/
#define N 10
 
 
/********************************************************************/
void do_calc( void );
int have_dup_digits( int num );
 
 
/********************************************************************/
int main( void ) {
 
do_calc();
 
return 0;
 
} /* main() */
 
 
/********************************************************************/
void do_calc( void ) {
 
int i, num, count, sum;
 
 
count= 0; sum= 0;
 
for ( i= 0; i<N; i++ ) {
    scanf( "%d", &num );
    if ( num<0 ) {
        fprintf( stderr, "Negative number !n" );
        exit( 2 );
    }
    if ( have_dup_digits( num ) ) {
        printf( "have_dup_digits( %d ) = 1n", num );
        count++;
        sum+= num;
    }
}
 
printf( "sum=%d count=%dn", count, sum );
 
} /* do_calc() */
 
 
/********************************************************************/
int have_dup_digits( int num ) {
 
int i, d;
int digit[10];
 
 
for ( i= 0; i<10; i++ ) { digit[i]= 0; }
for ( ; ; ) {
    d= num%10;
    if ( digit[d] ) { return 1; } else { digit[d]= 1; }
    num/= 10;
    if ( num == 0 ) { break; }
}
return 0;
 
} /* have_dup_digits() */

Добавлено через 16 минут
Задача 0.5

C
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
51
52
53
54
55
56
/* Thread 80649, Spoiler 0, Task 5 */
 
#include <stdio.h>
#include <stdlib.h>
 
 
/********************************************************************/
int month_days[12]= {
    31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
 
 
/********************************************************************/
int calc_day( int a, int k, int month );
 
 
/********************************************************************/
int main( int argc, char *argv[] ) {
 
int a, k, month, a2;
 
 
argc--; argv++;
 
if ( argc != 3 ) {
    fprintf( stderr, "Usage prog a k monthn" );
    exit( 2 );
}
a= atoi( argv[0] );
k= atoi( argv[1] );
month= atoi( argv[2] );
if ( month<1 || month>12 ) {
    fprintf( stderr, "Invalid month numbern" );
    exit( 2 );
}
a2= calc_day( a-1, k-1, month-1 )+1;
printf( "%dn", a2 );
 
return 0;
 
} /* main() */
 
 
/********************************************************************/
int calc_day( int a, int k, int month ) {
 
int i, a2;
 
 
a2= a;
for ( i= 0; i<month; i++ ) { a2+= month_days[i]; }
a2+= k;
 
return a2%7;
 
} /* calc_day() */

Пример

Код

> thread80649_s0_t5.exe 1 20 11
2



1



0 / 0 / 0

Регистрация: 07.07.2015

Сообщений: 5

07.07.2015, 17:02

4

У меня какие-то проблемы с ссылками на изображение,нет отображения половины символов в ссылках да и самих изображений нет.



0



rikimaru2013

07.07.2015, 17:23

Не по теме:

Некрофили́я (от др.-греч. νεκρός — «мёртвый» и φιλία — «любовь») — любовь ко всему мёртвому, в многочисленной литературе выраженная как сексуальная девиация, являющейся половым влечением к трупам, что является только частным случаем. Может рассматриваться в том числе как разновидность фетишизма или как самостоятельное расстройство полового предпочтения.



0



Неэпический

17813 / 10585 / 2043

Регистрация: 27.09.2012

Сообщений: 26,625

Записей в блоге: 1

07.07.2015, 17:29

6

Цитата
Сообщение от TSSh
Посмотреть сообщение

У меня какие-то проблемы с ссылками на изображение,нет отображения половины символов в ссылках да и самих изображений нет.

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

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



0



0 / 0 / 0

Регистрация: 07.07.2015

Сообщений: 5

07.07.2015, 22:56

7

Тогда ещё вопрос,не по теме.Мою старую,трёхлетнюю, учётку удалили,хотя напоминалки приходят регулярно.Можно её восстановить? Есть ли смысл писать в техподдержку?

Добавлено через 1 минуту
Croessmah, Тогда ещё вопрос,не по теме.Мою старую,трёхлетнюю, учётку удалили,хотя напоминалки приходят регулярно.Можно её восстановить? Есть ли смысл писать в техподдержку?



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

07.07.2015, 22:56

7

“Использование растровых изображений. Построение графиков и диаграмм

1. Составить программу, которая загружает из файлов и выводит на экран портреты ученых.
Program m;
uses GraphABC;
var pic:integer;
begin
SetWindowSize (1000, 1000);
pic:=LoadPicture (‘Leonardo.jpg’);
DrawPicture (pic, 270, 5, 200, 250);
pic:=LoadPicture (‘Newton.jpg’);
DrawPicture (pic, 470, 250, 200, 250);
pic:=LoadPicture (‘Einstein.jpg’);
DrawPicture (pic, 270, 500, 200, 250);
pic:=LoadPicture (‘Galileo.jpg’);
DrawPicture (pic, 670, 450, 200, 250);
pic:=LoadPicture (‘bohr.jpg’);
DrawPicture (pic, 670, 50, 200, 250);
end.

1. Составить программу, которая загружает из файла и выводит на экран изображение одной из планет Солнечной системы на фоне звёздного неба. 
program n;
uses  GraphABC;
var nebo, zem, luna, x0, y0, R, x, y, u:integer;
begin
SetWindowSize(600,400);
x0:=300; y0:=200;
R:=160;
nebo:=LoadPicture(‘sky.gif’);
zem:=LoadPicture(‘earth.gif’);
luna:=LoadPicture(‘luna3.gif’);
DrawPicture(nebo, 0,0,600,400);
DrawPicture(zem,200,120,200,200);
end.

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

program jjgg;
uses crt,GraphABC;
var nebo,zemlya,sputnik,x:integer;
begin
  SetWindowSize(500,500);
   nebo:=LoadPicture(‘Sky.jpg’);
   zemlya:=LoadPicture(‘earth.gif’);
    SetPictureTransparent (zemlya, true);
   sputnik:=LoadPicture(‘sputnik.jpg’);
   SetPictureTransparent (sputnik, true);
   x:=0;
while x<400 do
begin
   ClearWindow;
   DrawPicture(nebo,0,0);
   SetPictureTransparent (zemlya, true);
   DrawPicture(zemlya,200,150,250,250);
   DrawPicture(sputnik,x,40,50,40);
   x:=x+1;
   sleep(20);
   Redraw;
end;
end.

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

Program mvchxf;

     uses crt, GraphABC;

Var fon,a,b,c,x0,y0,x,y,u,R:integer;

Begin

  SetWindowSize(170,150);

  fon:=LoadPicture(‘sky.gif’);

  a:=LoadPicture(‘sun4.jpg’);

  b:=LoadPicture(‘earth.gif’);

  c:=LoadPicture(‘mars.jpg’);

  x0:=75; y0:=55;

  R:=50; u:=1;

  while u<=360 do

    begin

     ClearWindow;

     DrawPicture(fon,0,0);

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

     x:=round(x0+R*cos(pi*u/180));

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

     DrawPicture(b,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(c,y,x,10,10);

     U:=u+1;

     sleep(30);

     Redraw;

    end;

End.

География

1. Вывести карту Беларуси и построить таблицу с данными о площади и глубине озёр, столбчатую и линейную диаграмму этих данных.

Program qwerty;

Uses GraphAbc;

Var karta, A : integer;

Begin

setWindowSize(520,480);

karta := LoadPicture(‘belarus.gif’); DrawPicture(karta,10,10);

setBrushColor(clBlue); 

rectangle(60,320,75,335); 

rectangle(190,130,205,145);

rectangle(210,50,225,65); 

rectangle(250,370,265,385); 

rectangle(270,140,285,155); 

rectangle(360,395,375,410); 

End.

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

program jyflkufl;

uses crt,GraphABC;

const A: array[1..10] of real=(79.6,52.8,40.3,37.71,36.1,26.0,24.6,22.3,22.0,16.2);

B:array[1..10] of real=(24.8,7.5,2.9,11.5,12.0,2.3,8.1,8.7,16.5,24.6);

C:array[1..10] of string

(‘Нарочь’,’Освейское’,’Червоное’,’Лукомльское’,’Дривяты’,’Выгонощанское’,’Нещердо’,’Свирь’,’Снуды’,’Мядель’);

var karta,i,S:integer;

begin

SetWindowSize(600,600);

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

karta:=LoadPicture(‘karta.gif’);

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

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

for i:=1 to 10 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 10 do

begin

write(‘ ‘,i);

SetPenColor(clRed);

Line(5+25*i,420-round(2*A[i]),5+25*i,420);

 SetPenColor(clGreen);

 Line(10+25*i,420-round(2*B[i]),10+25*i,420);

 end;

 end;

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

 for i:=1 to 10 do

 begin

 writeln(C[i]:15,’ ‘);

  SetPenColor(clBlue);

   Line(160,250+15*i,160+round(5*A[i]),250+15*i);

  SetPenColor(clPurple);

   Line(160,255+15*i,160+round(5*B[i]),255+15*i);

   end;

   end;

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

program juyflk;
uses crt,GraphABC;
const A: array[1..7] of real=(37.7,22.0,21.1,17.7,16.2,11.6,7.4);
B:array[1..7] of string=(‘Берлин’,’Варшава’,’Париж’,’Минск’,’Стокгольм’,’Хельсинки’,’Амстердам’);
var karta,i,R:integer;beginSetWindowSize(700,700);
writeln(‘численность населения столиц государств’);
karta:=LoadPicture(‘karta.gif’);
DrawPicture(karta,0,200,700,500);
writeln(‘Столица’:15,’Численность населения’:13);
for i:=1 to 7 dowriteln(i,B[i]:15,’ ‘,A[i]:7:1,’ тыс.чел’);
SetBrushColor(clBlue);
R:=round(sqrt(A[1]/pi));
circle(405,470,R);
R:=round(sqrt(A[2]/pi));
circle(510,465,R);
R:=round(sqrt(A[3]/pi));
circle(250,520,R);
R:=round(sqrt(A[4]/pi));
circle(580,440,R);
R:=round(sqrt(A[5]/pi));
circle(455,373,R);
R:=round(sqrt(A[6]/pi));
circle(530,350,R);
R:=round(sqrt(A[7]/pi));
circle(290,475,R); 
end.

Биология 

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

program kjbh;

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

begin

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

readln(u0);

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

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

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

t:=0; u:=u0;

while u>=u0 div N do

begin

t:=t+1;

u:=u-u*p/100;

end;

end.

б) Через сколько дней количество атомов радиоактивного изотопа Иод-131 уменьшится в 100 раз, если период полураспада составляет 8,14 дня.

  program mhfv;
  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.

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

  program poiu;
  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.

       Физика

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

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

 write(‘Ââåäèòå óãîë ïàäåíèÿ ëó÷à (5-100):’);

pic:=LoadPicture(‘robot.jpg’);






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

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



   line(trunc(120+R/2),100,trunc(520-R/2),100);

  end.

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

program hjkfgu;

uses crt, GraphABC;

var u,x,y:integer;

begin

SetWindowSize (400,400);

write(‘ââåäèòå óãîë ïàäåíèÿ ëó÷à(0-90):’);

readln(u);

SetPenColor(clBrown);

SetPenWidth(4);

line(150,50,150,350);

SetPenColor(clblue);

line(0,200,300,200);

FloodFill(50,250,clwhite);

SetPenColor(clGreen);

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

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

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

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

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

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

SetPenColor(clpurple);

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

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

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

end.

Текст задания

Написать программу, которая выводит на экран изображение заданного графического объекта (с соблюдением заданной цветовой гаммы).

Исходный код программы

Program Lab4;
Uses crt, graph;
var
xc, yc, gd, gm,r: integer;
begin
Write ('PA3MEP PucyHKA:');
Readln(r);
  gd:=detect;
  initgraph (gd, gm, 'c:Tp7bgi');
  if Graphresult<>0 then
   begin
    write ('Graphic Error:',grapherrormsg (graphresult));
    halt;
    end;
xc:=getmaxx div 2;
yc:=getmaxy div 2;
setfillstyle(1,6);
Bar (xc-3*r, yc-3*r, xc+3*r,yc+3*r);
setcolor(0);
moveto(xc+3*r,yc+3*r);
lineto(xc+3*r,yc-3*r);
lineto(xc-3*r,yc-3*r);
lineto(xc-3*r,yc+3*r);
lineto(xc+3*r,yc+3*r);
moveto(xc+r,yc-2*r);
lineto(xc+r,yc+2*r);
lineto(xc-r,yc+2*r);
lineto(xc-r,yc-2*r);
lineto(xc+r,yc-2*r);
line (xc,yc-2*r,xc,yc+2*r);
line (xc,yc-r,xc+r,yc-r);
setcolor(green);
line(xc-4*r,yc-2*r,xc,yc-6*r);
line(xc,yc-6*r,xc+4*r,yc-2*r);
 readln;
closegraph;
end.

Результат выполнения программы

Добавить комментарий