Упаковываем в функции ранее написанный код

Содержание

Слайд 2

Что такое подпрограмма? https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0 Подпрограмма (англ. subroutine) — поименованная или иным

Что такое подпрограмма?

https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0
Подпрограмма (англ. subroutine) — поименованная или иным образом идентифицированная часть

компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках программирования для оформления и использования подпрограмм существуют специальные синтаксические средства.
Слайд 3

Подпрограммы – в Си (и не только) Pascal: Процедуры и функции

Подпрограммы – в Си (и не только)

Pascal: Процедуры и функции
procedure ReadArray;
begin
end;
function

Abs(x:single): single;
Begin
if x < 0 then
Abs := -x
else
Abs := x;
end;

Си: Функции
void readArray ()
{
}
float abs(float x)
{
if (x < 0)
return -x;
else
return x;
}

Слайд 4

Зачем нужны подпрограммы?

Зачем нужны подпрограммы?

Слайд 5

Зачем нужны подпрограммы? Писать меньше кода - Повторяющийся код реализовать один

Зачем нужны подпрограммы?

Писать меньше кода - Повторяющийся код реализовать один раз,

а вызывать многократно (sin(), printf() …)
Сделать код проще для редактирования - Разделить длинный код на части (произвольно)
Упростить код - Разбить сложный алгоритм на части
Повысить уровень абстракции – уйти от низкоуровневых операций на уровень предметной области
Создавать библиотеки для повторного использования – стандартная библиотека Си состоит из функций
Писать большие программы (до десятков и сотен тысяч строк кода)
Слайд 6

Знакомство с функциями в Си

Знакомство с функциями в Си

Слайд 7

Простейшие функции #include void a() { printf("Hello! It is a()!\n"); }

Простейшие функции

#include
void a() {
printf("Hello! It is a()!\n");
}
void main() {
printf("Hello! It

is main()!\n");
a();
}
Слайд 8

Точка входа в программу #include void a() { printf("Hello! It is

Точка входа в программу

#include
void a() {
printf("Hello! It is a()!\n");
}
void main()

{
printf("Hello! It is main()!\n");
a();
}
Точка входа
https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%B2%D1%85%D0%BE%D0%B4%D0%B0
Точка входа (англ. Entry Point (EP) — точка входа) — адрес в оперативной памяти, с которого начинается выполнение программы. Другими словами — адрес, по которому хранится первая команда программы.
Однако не надо путать её с «первыми командами» программы на языке высокого уровня. Например, программа на C++ начинается с функции main(). На самом деле, выполнение такой программы происходит далеко не с первой команды этой функции: точка входа в программу будет находиться в библиотеке времени исполнения «C runtime», а процедура main() назначится точкой входа в пользовательский код.
Слайд 9

Использование до определения

Использование до определения

Слайд 10

Простейшие функции (3) #include // это - ОБЪЯВЛЕНИЕ функции a() void

Простейшие функции (3)

#include
// это - ОБЪЯВЛЕНИЕ функции a()
void a();
// это

- ОПРЕДЕЛЕНИЕ функции main()
void main() {
// это ВЫЗОВ функции printf()
printf("Hello! It is main()!\n");
// это ВЫЗОВ функции a()
a();
}
// это - ОПРЕДЕЛЕНИЕ функции a()
void a() {
// это ВЫЗОВ функции printf()
printf("Hello! It is a()!\n");
}
Слайд 11

Функция может возвращать результат #include // это - ОПРЕДЕЛЕНИЕ функции main()

Функция может возвращать результат

#include
// это - ОПРЕДЕЛЕНИЕ функции main() возвращающей

значение типа int
int main() {
// это ВЫЗОВ функции printf()
printf("Hello! It is main()!\n");
// из main() возвращаем 0 – говорим ОС что у нас всё OK
return 0;
}

http://www.c-cpp.ru/books/znacheniya-vozvrashchaemye-funkciey-main
Когда используется оператор return в main(), программа возвращает код завершения вызывавшему процессу (операционной системе). Возвращаемое значение должно быть целого типа. Большинство операционных систем, трактуют 0 как нормальное завершение программы. Остальные значения воспринимаются как ошибки.

Слайд 12

Функция может получать аргументы (1) #include // это - ОБЪЯВЛЕНИЕ функции

Функция может получать аргументы (1)

#include
// это - ОБЪЯВЛЕНИЕ функции ndfl(),

получающей один аргумент типа float,
// и возвращающей результат типа float
float ndfl(float s);
int main() {
// это ВЫЗОВ функции printf() с одним аргументом "s = "
printf("s = ");
// переменные
// s - начисленная зарплата
// nalog - НДФЛ
float s;
float nalog;
// это ВЫЗОВ функции scanf_s() с двумя аргументами –
// 1: "%f"
// 2: &s
scanf_s("%f", &s);
Слайд 13

Функция может получать аргументы (2) // это ВЫЗОВ функции ndfl() с

Функция может получать аргументы (2)

// это ВЫЗОВ функции ndfl() с одним

аргументом s
// Значение, возвращенное из функции ndfl() заносится
// (присваивается) в переменную nalog
nalog = ndfl(s);
// это ВЫЗОВ функции printf() с тремя аргументами
// 1: "s = %.2f, nalog = %.2f"
// 2: s
// 3: nalog
printf("s = %.2f, nalog = %.2f", s, nalog);
// из main() возвращаем 0 – говорим ОС что у нас всё OK
return 0;
}
// это - ОПРЕДЕЛЕНИЕ функции ndfl(), получающей один аргумент типа float,
// и возвращающей результат типа float
float ndfl(float s) {
// возвращается результат, составляющий 13% от s
return s * 0.13;
}
Слайд 14

“Факториал” – что это такое Факториал натурального числа n определяется как

“Факториал” – что это такое

Факториал натурального числа n определяется как произведение

всех натуральных чисел от 1 до n включительно:
Факториал активно используется в различных разделах математики: комбинаторике, математическом анализе, теории чисел, функциональном анализе и др.
Факториал является чрезвычайно быстро растущей функцией.

Факториал -https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%B0%D0%BB
Перестановка -
https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0

Слайд 15

Функция может иметь свои (локальные) переменные (1) #include // это -

Функция может иметь свои (локальные) переменные (1)

#include
// это - ОБЪЯВЛЕНИЕ

функции fuct(), получающей один аргумент типа int,
// и возвращающей результат типа long
long fuct(int n);
int main() {
// локальная (в main()) переменная num, тип int
int num;
printf("num = ");
scanf_s("%d", &num);
// локальная (в main()) переменная f, тип long
long f = fuct(num);
printf("num = %d, num! = %ld", num, f);
return 0;
}
Слайд 16

Функция может иметь свои (локальные) переменные (2) // это - ОПРЕДЕЛЕНИЕ

Функция может иметь свои (локальные) переменные (2)

// это - ОПРЕДЕЛЕНИЕ функции

fuct(), получающей один аргумент типа int,
// и возвращающей результат типа long
long fuct(int n) {
// локальная (в fuct()) переменная res, тип long
long res = 1;
// локальная (в fuct()) переменная i, тип int
int i = 1;
do {
res = res * i;
i = i + 1;
} while (i <= n);
return res;
}
Слайд 17

Можно использовать глобальные переменные (1) #include // Глобальная переменная - количество

Можно использовать глобальные переменные (1)

#include
// Глобальная переменная - количество звезд
int

numStars = 4;
// глобальная переменная - символ звездочки
char starSymbol = '*';
// это - ОБЪЯВЛЕНИЕ функции printStars(), не имеющей аргументов,
// и не возвращающей результата
void printStars();
// это - ОПРЕДЕЛЕНИЕ функции incStars(), не имеющей аргументов,
// и не возвращающей результата
void incStars() {
numStars++;
}
// это - ОПРЕДЕЛЕНИЕ функции decStars(), не имеющей аргументов,
// и не возвращающей результата
void decStars() {
numStars--;
}
Слайд 18

Можно использовать глобальные переменные (2) // это - ОПРЕДЕЛЕНИЕ функции main(),

Можно использовать глобальные переменные (2)

// это - ОПРЕДЕЛЕНИЕ функции main(), не

имеющей аргументов,
// и возвращающей результат типа int
int main() {
printStars();
incStars();
incStars();
printStars();
starSymbol = '.’;
printStars();
return 0;
}
// это - ОПРЕДЕЛЕНИЕ функции printStars(), не имеющей аргументов,
// и не возвращающей результата
void printStars() {
int i = 1;
do {
printf("%c", starSymbol);
i++;
} while (i <= numStars);
printf("\n");
}
Слайд 19

В Си НЕЛЬЗЯ вкладывать функции друг в друга #include void a();

В Си НЕЛЬЗЯ вкладывать функции друг в друга

#include
void a();
void main()

{
printf("Hello! It is main()!\n");
void a() {
printf("Hello! It is a()!\n");
}
a();
}
Слайд 20

Формальная грамматика Си – определение функции Watcom C. Описание языка -

Формальная грамматика Си – определение функции

Watcom C. Описание языка - http://givi.olnd.ru/wclr/22_gramma.html


определение-функции
<спецификаторы-декларации> декларатор <список-деклараций>
составная-команда
Язык программирования Си - https://wm-help.net/lib/b/book/1357034433/202
определение функции:
спецификаторы-объявлениянеоб объявитель список-объявленийнеоб
составная-инструкция
Язык Си - https://prog-cpp.ru/c-functions/
Определение функции
ТипВозвращаемогоЗначения ИмяФункции(СписокФормальныхАргументов)
{
ТелоФункции;
...
return(ВозвращаемоеЗначение);
}
Слайд 21

Локальные переменные Локальная переменная - https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F В программировании локальной переменной называют

Локальные переменные

Локальная переменная - https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F
В программировании локальной переменной называют переменную, объявленную внутри блока кода. Область видимости локальной переменной

начинается в точке её объявления и заканчивается в конце этого блока[1][2]. Например, в языке Си локальными являются переменные объявленные внутри функции или блока (в Си, блоки ограничиваются фигурными скобками { и })[3].
Программирование на C и C++ - https://cpp.com.ru/shildt_spr_po_c/02/0204.html
Переменные, объявленные внутри функций, называются локальными переменными. Локальную переменную можно использовать только внутри блока, в котором она объявлена. Иными словами, локальная переменная невидима за пределами своего блока. (Блок программы — это описания и инструкции, объединенные в одну конструкцию путем заключения их в фигурные скобки.)
Локальные переменные существуют только во время выполнения программного блока, в котором они объявлены, создаются они при входе в блок, а разрушаются — при выходе из него. Более того, переменная, объявленная в одном блоке, не имеет никакого отношения к переменной с тем же именем, объявленной в другом блоке.
Чаще всего блоком программы, в котором объявлены локальные переменные, является функция. 
Слайд 22

Глобальные переменные Программирование на C и C++ - https://cpp.com.ru/shildt_spr_po_c/02/0204.html В отличие

Глобальные переменные

Программирование на C и C++ - https://cpp.com.ru/shildt_spr_po_c/02/0204.html
В отличие от

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

Формальные параметры функции Программирование на C и C++ - https://cpp.com.ru/shildt_spr_po_c/02/0204.html Если

Формальные параметры функции

Программирование на C и C++ - https://cpp.com.ru/shildt_spr_po_c/02/0204.html
Если функция

имеет аргументы, значит должны быть объявлены переменные, которые примут их значения. Эти переменные называются формальными параметрами функции. Внутри функции они фигурируют как обычные локальные переменные. Как показано в следующем фрагменте программы, они объявляются после имени функции внутри круглых скобок:
/* Возвращает 1, если в строке s содержится символ c, в противном случае возвращает 0 */
int is_in(char *s, char c)
{
while(*s)
if(*s==c) return 1;
else s++;
return 0;
}
Функция is_in() имеет два параметра: s и с, она возвращает 1, если символ, записанный в переменной с, входит в строку s, в противном случае она возвращает 0.
Внутри функции формальные параметры ничем не отличаются от обычных локальных переменных, единственное их отличие состоит в том, что при входе в функцию они получают значения аргументов. Можно, например, присваивать параметру какое-либо значение или использовать его в выражении. Необходимо помнить, что, как и локальные переменные, формальнее параметры тоже являются автоматическими переменными и, следовательно, разрушаются при выходе из функции.
Слайд 24

Слайд 25

Используем функции в графике

Используем функции в графике

Слайд 26

Нарисуем ромб // Рисуем ромб MoveToEx(hdc, 80, 0, NULL); LineTo(hdc, 50,

Нарисуем ромб

// Рисуем ромб
MoveToEx(hdc, 80, 0, NULL);
LineTo(hdc, 50, 50);
LineTo(hdc, 80, 100);
LineTo(hdc,

110, 50);
LineTo(hdc, 80, 0);
Слайд 27

Ромб // Рисуем ромб MoveToEx(hdc, 80, 0, NULL); LineTo(hdc, 50, 50);

Ромб

// Рисуем ромб
MoveToEx(hdc, 80, 0, NULL);
LineTo(hdc, 50, 50);
LineTo(hdc, 80, 100);
LineTo(hdc, 110,

50);
LineTo(hdc, 80, 0);
Слайд 28

Ромб HPEN hPen; hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); SelectObject(hdc,

Ромб

HPEN hPen;
hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
SelectObject(hdc, hPen);
// Рисуем ромб
MoveToEx(hdc,

80, 0, NULL);
LineTo(hdc, 50, 50);
LineTo(hdc, 80, 100);
LineTo(hdc, 110, 50);
LineTo(hdc, 80, 0);
Слайд 29

Относительные координаты int x = 50; int y = 0; MoveToEx(hdc,

Относительные координаты

int x = 50;
int y = 0;
MoveToEx(hdc, x + 30,

y, NULL);
LineTo(hdc, x, y + 50);
LineTo(hdc, x + 30, y + 100);
LineTo(hdc, x + 60, y + 50);
LineTo(hdc, x + 30, y);
Слайд 30

Относительные координаты int x = 50; int y = 0; MoveToEx(hdc,

Относительные координаты

int x = 50;
int y = 0;
MoveToEx(hdc, x + 30,

y, NULL);
LineTo(hdc, x, y + 50);
LineTo(hdc, x + 30, y + 100);
LineTo(hdc, x + 60, y + 50);
LineTo(hdc, x + 30, y);
Слайд 31

Относительные координаты int x = 100; int y = 100; MoveToEx(hdc,

Относительные координаты

int x = 100;
int y = 100;
MoveToEx(hdc, x + 30,

y, NULL);
LineTo(hdc, x, y + 50);
LineTo(hdc, x + 30, y + 100);
LineTo(hdc, x + 60, y + 50);
LineTo(hdc, x + 30, y);

int x = 150;
int y = 20;
MoveToEx(hdc, x + 30, y, NULL);
LineTo(hdc, x, y + 50);
LineTo(hdc, x + 30, y + 100);
LineTo(hdc, x + 60, y + 50);
LineTo(hdc, x + 30, y);

Слайд 32

Относительные координаты int x = 100; int y = 100; MoveToEx(hdc,

Относительные координаты

int x = 100;
int y = 100;
MoveToEx(hdc, x + 30,

y, NULL);
LineTo(hdc, x, y + 50);
LineTo(hdc, x + 30, y + 100);
LineTo(hdc, x + 60, y + 50);
LineTo(hdc, x + 30, y);

int x = 150;
int y = 20;
MoveToEx(hdc, x + 30, y, NULL);
LineTo(hdc, x, y + 50);
LineTo(hdc, x + 30, y + 100);
LineTo(hdc, x + 60, y + 50);
LineTo(hdc, x + 30, y);

Слайд 33

Относительные координаты

Относительные координаты

Слайд 34

Отдельная функция для отрисовки ромба с заданным положением void Romb(HDC hdc,

Отдельная функция для отрисовки ромба с заданным положением

void Romb(HDC hdc, int

x, int y) {
MoveToEx(hdc, x + 30, y, NULL);
LineTo(hdc, x, y + 50);
LineTo(hdc, x + 30, y + 100);
LineTo(hdc, x + 60, y + 50);
LineTo(hdc, x + 30, y);
}

HDC hdc = BeginPaint(hWnd, &ps);
HPEN hPen;
hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
SelectObject(hdc, hPen);
Romb(hdc, 50, 0);

Слайд 35

Рисуем при помощи нашей функции несколько ромбов в ряд … HDC

Рисуем при помощи нашей функции несколько ромбов в ряд


HDC hdc =

BeginPaint(hWnd, &ps);
Romb(hdc, 10, 50);
Romb(hdc, 100, 50);
Romb(hdc, 190, 50);
Romb(hdc, 280, 50);

Слайд 36

Рисуем при помощи нашей функции несколько ромбов – используем цикл …

Рисуем при помощи нашей функции несколько ромбов – используем цикл


HPEN hPen;
hPen

= CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
SelectObject(hdc, hPen);
int x = 10;
int y = 50;
do {
Romb(hdc, x, y);
x += 90;
} while (x <= 280);

Слайд 37

Создаем функцию, вызывающую нашу функцию case WM_PAINT: { PAINTSTRUCT ps; HDC

Создаем функцию, вызывающую нашу функцию

case WM_PAINT:
{
PAINTSTRUCT ps;
HDC

hdc = BeginPaint(hWnd, &ps);
// TODO: Добавьте сюда любой код прорисовки, использующий HDC...
drawRombLine(hdc);
EndPaint(hWnd, &ps);
}
break;

void drawRombLine(HDC hdc) {
HPEN hPen;
hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
SelectObject(hdc, hPen);
int x = 10;
int y = 50;
do {
Romb(hdc, x, y);
x += 90;
} while (x <= 280);
}

Слайд 38

Слайд 39

Лабораторная работа №8 Упаковываем в функции ранее написанный код

Лабораторная работа №8

Упаковываем в функции ранее написанный код

Слайд 40

Задача 1. Переделать задачу из ЛР1 Оформить информацию о себе в

Задача 1. Переделать задачу из ЛР1

Оформить информацию о себе в виде

функции aboutMe.
Из main() вызвать эту функцию.
Нарисовать блок-схему
Слайд 41

Задача 2. Переделать задачу из ЛР4 Код отрисовки дома перенести в

Задача 2. Переделать задачу из ЛР4

Код отрисовки дома перенести в функцию

drawHome()
Из функции WndProc организовать вызов drawHome() при необходимости обновления изображения – обработка события WM_PAINT:
Слайд 42

Задача 3. Переделать задачу из ЛР5 Код отрисовки автомобиля перенести в

Задача 3. Переделать задачу из ЛР5

Код отрисовки автомобиля перенести в функцию

drawCar()
Из функции WndProc организовать вызов drawCar() при необходимости обновления изображения – обработка события WM_PAINT:
Слайд 43

Задача 4*. Переделать задачу из ЛР7 Код отрисовки автомобиля перенести в

Задача 4*. Переделать задачу из ЛР7

Код отрисовки автомобиля перенести в функцию

drawTree()
Из функции WndProc организовать вызов drawTree() при необходимости обновления изображения – обработка события WM_PAINT:
Слайд 44

Домашнее задание по ЛР8 Доделать задачи 1-3. Все задания по отрисовке

Домашнее задание по ЛР8

Доделать задачи 1-3.
Все задания по отрисовке рисунков из

лабораторных работ 4, 5, 7 ранее сделанные вами, нужно оформить в виде функций. Для каждого изображения (мост, дом, машина, снеговик и т.п.) нужно создать отдельную функцию. Из имени функции должно быть понятно, что именно эта функция отрисовывает. Созданные функции вызываются из функции WndProc при необходимости обновления изображения – при обработке события WM_PAINT, как реализовано в задачах этой лабораторной работы.
Обязательно! Принести получившийся код на занятие. Его будем использовать и переделывать на следующих лабораторных работах.
Слайд 45

ИТОГО по ЛР9 Сделали код программ первых лабораторных работ более понятным

ИТОГО по ЛР9

Сделали код программ первых лабораторных работ более понятным –

за счет вынесения части кода в отдельные функции.
Научились создавать свои собственные функции.
Научились вызывать свои собственные функции.
Слайд 46

Слайд 47

Лабораторная работа №9 Используем функции для рисования множества объектов

Лабораторная работа №9

Используем функции для рисования множества объектов

Слайд 48

Автомобиль деда Мороза - логотип

Автомобиль деда Мороза - логотип

Слайд 49

Вынесли код в отдельную функцию void StClausAuto(HDC hdc) { // верхний

Вынесли код в отдельную функцию

void StClausAuto(HDC hdc) {
// верхний треугольник
MoveToEx(hdc, 20,

0, NULL);
LineTo(hdc, 30, 20);
LineTo(hdc, 10, 20);
LineTo(hdc, 20, 0);
// средний треугольник
MoveToEx(hdc, 20, 10, NULL);
LineTo(hdc, 30, 40);
LineTo(hdc, 10, 40);
LineTo(hdc, 20, 10);
// нижний треугольник
MoveToEx(hdc, 20, 30, NULL);
LineTo(hdc, 40, 80);
LineTo(hdc, 0, 80);
LineTo(hdc, 20, 30);
}

Слайд 50

Относительные координаты

Относительные координаты

Слайд 51

Задача 1. Елочка (Логотип авто Деда Мороза) в виде функции с

Задача 1. Елочка (Логотип авто Деда Мороза) в виде функции с

параметрами x, y

Сделать функцию
void StClausAuto(HDC hdc, int x, int y) { … }
и используя её нарисовать из елочек узоры по следующим схемам

Слайд 52

Относительные координаты

Относительные координаты

Слайд 53

Задача 1.1: 5 логотипов по углам и в центре

Задача 1.1: 5 логотипов по углам и в центре

Слайд 54

Задача 1.2: 8 логотипов в горизонтальную линию Решение

Задача 1.2: 8 логотипов в горизонтальную линию Решение

Слайд 55

Задача 1.3 - РЕШЕНИЕ: 4 логотипа в вертикальную линию

Задача 1.3 - РЕШЕНИЕ: 4 логотипа в вертикальную линию

Слайд 56

Задача 1.4: 4 логотипа в диагональную линию

Задача 1.4: 4 логотипа в диагональную линию

Слайд 57

Слайд 58

Грузовой автомобиль - расчеты

Грузовой автомобиль - расчеты

Слайд 59

Задача 2.1 Создать функцию drawTruck для рисования грузового автомобиля Сделать функцию

Задача 2.1 Создать функцию drawTruck для рисования грузового автомобиля

Сделать функцию drawTruck(HDC

hdc, int x, int y) { … }
и используя ее нарисовать несколько грузовиков
Слайд 60

Задача 2.2: 5 автомобилей по углам и в центре Сделать функцию

Задача 2.2: 5 автомобилей по углам и в центре

Сделать функцию drawTrucks1(HDC

hdc) которая рисует грузовики по следующей схеме:
Слайд 61

Задача 2.3 – 2.5– Создать 3 рисунка из грузовиков Сделать функции

Задача 2.3 – 2.5– Создать 3 рисунка из грузовиков

Сделать функции
drawTrucks2(HDC

hdc)
drawTrucks3(HDC hdc)
drawTrucks4(HDC hdc)
которые создают рисунки из грузовиков по следующим схемам:
Слайд 62

Слайд 63

Задача 3*. Снежная баба в виде функции с параметрами x, y

Задача 3*. Снежная баба в виде функции с параметрами x, y

Сделать

функцию
void SnowWoman(HDC hdc, int x, int y) { … }
и используя её нарисовать узоры по следующим схемам
Слайд 64

Задача 3.1* – Создать картинку по образцу

Задача 3.1* – Создать картинку по образцу

Слайд 65

Задача 3.2* – Создать функцию SnowWoman

Задача 3.2* – Создать функцию SnowWoman

Слайд 66

Задача 3.3* – 3.6* – Создать 4 рисунков из снежных баб

Задача 3.3* – 3.6* – Создать 4 рисунков из снежных баб

Рекомендуется

для отрисовки каждого из рисунков создать отдельную функцию. Рекомендованные имена:
drawSnowWomen1(HDC hdc)
drawSnowWomen2(HDC hdc)
drawSnowWomen3(HDC hdc)
drawSnowWomen4(HDC hdc)
Слайд 67

Домашнее задание ЛР9 Доделать рисунки из Задач 1 и 2, которые

Домашнее задание ЛР9

Доделать рисунки из Задач 1 и 2, которые не

успели сделать на занятии в классе.
Создать в виде отдельной функции логотип любого автомобиля. Созданная функция должна иметь вид Logo(HDC hdc, int x, int y) . При этом сделать логотип такого размера, чтобы он вмещался по высоте окна не меньше 4 раз, по ширине не меньше 6 раз
Используя эту функцию создать узоры из логотипов по следующим 4 схемам:
Для последнего узора нарисовать блок-схему алгоритма.
Слайд 68

ЛР9 – оформление Для сдачи работы нужно иметь: 1) код программы

ЛР9 – оформление

Для сдачи работы нужно иметь:
1) код программы (с собой)
2)

Расчет картинки – на бумаге (на отдельном листе или в тетради) или в файле с видимыми признаками расчетов
4) Блоксхема для одного из рисунков, где используется циклический алгоритм
Срок выполнения – до следующей встречи на лабораторной работе
Если болел/не мог – это становится «долгом»
Слайд 69

ИТОГО по ЛР9 Сделали функцию, при помощи которой можно рисовать сколько

ИТОГО по ЛР9

Сделали функцию, при помощи которой можно рисовать сколько угодно

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

Слайд 71

ИТОГО по лекции 5 Узнали как объявляются и определяются функции Узнали

ИТОГО по лекции 5

Узнали как объявляются и определяются функции
Узнали как вернуть

значение из функции
Узнали как передать значение в функцию
Узнали как создать функцию для отрисовки изображений
Узнали как создать функцию для отрисовки изображений по координатам