Рабочие листы
к вашим урокам
Скачать
1 слайд
1
Структурное программирование
на языке Си
© К.Ю. Поляков, 2007-2009
Теория
Проект
Графики функций
Точки пересечения
Штриховка
Вычисление площади
Оформление отчета
2 слайд
2
Структурное программирование
на языке Си
Тема 1. Теория
© К.Ю. Поляков, 2007-2009
3 слайд
3
Этапы разработки программ
Постановка задачи
определить цель и категорию программы (системная, прикладная)
определить исходные данные и требуемый результат
проверить, является ли задача хорошо поставленной (должны быть определены все связи между исходными данными и результатом)
зафиксировать требования к программе в письменной форме
Плохо поставленные задачи:
не хватает исходных данных
заданы не все связи между исходными данными и результатом
задача не имеет решения
задача имеет множество решений
!
4 слайд
4
Этапы разработки программ
Разработка модели данных
формальная модель
типы данных (массивы, структуры, …)
взаимосвязь между данными
Разработка алгоритма
выбор существующего или разработка нового
возможен возврат к шагу 2
Разработка программы
Языки: C, C++, Visual Basic, Delphi (Паскаль), `…
Отладка программы (поиск и исправление ошибок)
debug – извлечение жучков (bug), 1945, MAРK-I
отладчик (точки останова, пошаговый режим, просмотр переменных)
профайлер (сколько выполняется каждая из процедур)
5 слайд
5
Этапы разработки программ
Тестирование программы (проверка на исходных данных, для которых известен результат)
альфа-тестирование: внутри фирмы (тестеры)
бета-тестирование: в других организациях, распространение через Интернет
Разработка документации
справочная система
руководство пользователя (User Manual)
руководство разработчика
Сопровождение (техническая поддержка)
исправление ошибок, найденных заказчиком
обучение и консультирование заказчика
новые версии по льготной цене
Тестирование может показать наличие
ошибок, но не их отсутствие.
!
6 слайд
6
Методы проектирования программ
основная
программа
Axes
Plot
Cross
Area
F1
F2
Point
процедуры
1-ого уровня
процедуры
2-ого уровня
снизу вверх
сверху вниз
7 слайд
7
Проектирование «снизу вверх»
сначала составляются процедуры нижнего уровня, из которых затем «собираются» процедуры более высокого уровня.
легче начать программировать
более эффективные процедуры
процедуры необходимо связывать с основной задачей («держать в голове»)
при окончательной сборке может не хватить «кубиков»
часто программа получается запутанной
сложно распределить работу в команде
8 слайд
8
Проектирование «сверху вниз»
метод последовательного уточнения:
начинаем с основной программы;
она разбивается на подзадачи, для каждой из которых пишется процедура-«заглушка»;
реализуем каждую из процедур тем же способом.
меньше вероятность принципиальной ошибки (начали с главного)
проще структура программы
удобно распределять работу в команде
в разных блоках могут быть реализованы похожие операции (можно было решить одной общей процедурой), особенно в команде
9 слайд
9
Структурное программирование
Существовавшие проблемы:
увеличилась сложность программ
сократилось время на разработку
Цели:
повысить надежность
уменьшить время и стоимость разработки
облегчить тестирование и отладку
возможность переделки одного модуля
улучшить читабельность
без переходов на другую страницу
избегать трюков и запутанных приемов
10 слайд
10
Структурное программирование
Принципы:
абстракции: программу можно рассматривать на любом уровне без лишних подробностей
модульности: программа разбивается на отдельные модули, которые могут отлаживаться независимо друг от друга
подчиненности: связь между модулями «сверху вниз»
локальности: каждый модуль использует только свои локальные переменные, глобальные переменные только в крайних случаях
11 слайд
11
Модуль
Модуль – это программный блок (процедура или функция), отделенный от кода других модулей, который полностью решает самостоятельную задачу своего уровня.
работа модуля не зависит от того, откуда он вызывается, и от того, сколько раз он вызывался до этого
размер модуля не более 50-60 строк (1 страница)
модуль имеет один вход и один выход
модуль начинается с «шапки»-комментария (входные данные, результаты, какие модули использует)
имена переменных – смысловые
в одной строке – один оператор
«трюки» – долой
12 слайд
12
Оформление текста программы
Шапка – комментарий в начале процедур и функций.
//----------------------------------------
// Sum сумма элементов массива
// Вход: A[] – массив целых чисел
// n - размер массива
// Выход: S = A[0]+A[1]+...+A[n-1]
// Вызывает: -
//----------------------------------------
int Sum ( int A[], float n )
{
...
}
13 слайд
13
Оформление текста программы
Отступы – тело цикла, условного оператора, оператора выбора и т.п. сдвигается вправо на 2-3 символа.
for(i=0;i<n;i++){j=0;while(j<i){j++;k=k%N;}
k++;}
лесенка
for ( i=0; i<n; i++)
{
j=0;
while ( j < i )
{
j++;
k = k % N;
}
k++;
}
легче читать текст программы
видны блоки
просто найти ошибки со скобками (лишняя, не хватает)
Скорость работы программы не меняется!
!
14 слайд
14
Оформление текста программы
«говорящие» имена функций, процедур, переменных: Sum, ShowMenu, count, speed.
пробелы в операторах
выделение пустыми
строками и
комментариями
важных блоков
for(i=0;i<n;i++)a+=10;
for ( i=0; i<n; i++ )
a += 10;
// ввод данных
printf( "Введите число\n" );
scanf ( "%d", &n );
//вычисления
n2 = n*n;
// вывод результата
printf ( "Его квадрат %d", n2 );
15 слайд
15
Структурное программирование
на языке Си
Тема 2. Проект
© К.Ю. Поляков, 2007-2009
16 слайд
16
Проект «Графики функций»
построить координатные
оси и сделать их разметку
построить графики
заданных функций
(по вариантам)
17 слайд
17
Проект «Графики функций»
найти точки пересечения
графиков, используя
численные методы
заштриховать
образованную замкнутую
область
x=3,58
y=2,14
x=1,40
y=1,55
18 слайд
18
Проект «Графики функций»
вычислить площадь этой
области двумя способами
оформить отчет по работе
S1=3,014
S2=3,025
19 слайд
19
Структура программы
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
initwindow(800,600);
getch();
closegraph();
}
глобальные константы и переменные
процедуры и функции
основная программа
20 слайд
20
Разбивка программы на этапы
Axes(); // оси координат
Plot(); // графики функций
Cross(); // точки пересечения графиков
Hatch(); // штриховка
Area(); // площадь (способ 1)
Area2(); // площадь (способ 2)
Основная программа
Процедуры-заглушки
//------------------------------------
// Axes оси координат
//------------------------------------
void Axes()
{
}
21 слайд
21
Структурное программирование
на языке Си
Тема 3. Графики функций
© К.Ю. Поляков, 2007-2009
22 слайд
22
Функции, заданные в явном виде
y = f (x)
x
y
b
k = tg
прямая
x
y
b
a
парабола
x
y
b
a
гипербола
x
y
k+b
b
степенная функция
23 слайд
23
Функции, заданные в неявном виде
f (x, y) = 0
x
y
a
b
x0
y0
пример: уравнение эллипса
24 слайд
24
полюс
Полярные координаты
А(, )
- полярный угол
- полярный радиус
O
полярный луч
Примеры:
Описание фигур, полученных при вращении объектов.
= f ()
= R
окружность
O
R
= a ∙
спираль Архимеда
O
O
= a∙sin(2/3)
«роза»
25 слайд
25
Полярные координаты
Переход к декартовым координатам
А(, )
O
x
y
26 слайд
26
Описание в параметрической форме
t – независимый параметр («время»)
Описание фигур, полученных при сложном движении объектов.
x = f1 (t)
y = f2 (t)
v0
y
x
0
Циклоида – траектория точки на ободе колеса при вращении
R
y
x
0
27 слайд
27
Системы координат
Математическая
Экранная
(0,0)
XЭ
YЭ
800
600
(799,599)
(799,0)
(0,599)
(x, y)
X
Y
x
y
0
(X0, Y0)
Y0
X0
xЭ
yЭ
(xЭ, yЭ)
Преобразование координат:
X0, Y0 – экранные координаты
точки (0,0)
k – масштаб (во сколько раз растягивается единичный отрезок)
Почему
«минус»?
?
28 слайд
28
Структура программы
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
const int X0 = 100, Y0 = 400, // начало координат
k = 80; // масштаб
main()
{
initwindow(800, 600);
getch();
closegraph();
}
глобальные переменные
процедуры и функции
основная часть
29 слайд
29
Перевод в экранные координаты
//-----------------------------------------
// SCREENX – перевод X в координаты экрана
//-----------------------------------------
int ScreenX (float x)
{
return X0+k*x;
}
//-----------------------------------------
// SCREENY – перевод Y в координаты экрана
//-----------------------------------------
int ScreenY (float y)
{
return Y0-k*y;
}
Откуда берутся X0, Y0 и k?
?
30 слайд
30
Оси координат
void Axes()
{
line ( X0, 0, X0, 599 );
line ( 0, Y0, 799, Y0 );
}
(0,0)
(799,599)
(799,0)
(0,599)
(X0, Y0)
Y0
X0
31 слайд
31
Разметка оси X («черточки»)
Y0
xЭ
(xЭ, Y0−2)
(xЭ, Y0+2)
800 − X0
Число меток на [0, xmax]:
длина 800 – X0
единичный отрезок k
void Axes()
{
int i, xe;
...
for (i = 1; i <= (800-X0)/k; i++) {
xe = ScreenX(i);
line ( xe, Y0-2, xe, Y0+2 );
}
}
переходим к экранным координатам
X0
32 слайд
32
Разметка оси X (числа)
1
xЭ
(xЭ, Y0+2)
Вывод символьной строки в графическом режиме:
outtextxy(x, y, s);
void Axes()
{
char s[5];
...
for (i = 1; i <= (800-X0)/k; i++) {
...
sprintf ( s, "%d", i );
outtextxy ( xe-4, Y0+3, s );
}
}
координаты левого верхнего угла
(xЭ-4, Y0+3)
8 на 8
перевести целое число i в строку s
строка:
char s[5];
вывести строку s на экран
с запасом…
33 слайд
33
Оси с разметкой (полностью)
void Axes()
{
int i, xe, ye;
char s[5];
line ( X0, 0, X0, 599 );
line ( 0, Y0, 799, Y0 );
for (i = 1; i <= (800-X0)/k; i++)
{
xe = ScreenX(i);
line ( xe, Y0-2, xe, Y0+2 );
sprintf ( s, "%d", i );
outtextxy ( xe-4, Y0+3, s );
}
...
}
34 слайд
34
Задания
«4»: Сделать разметку осей полностью (не только положительной части оси X).
«5»: Сделать задание на «4», использовав только 2 цикла (1 цикл для каждой оси).
Разметка должна работать правильно при любых значениях X0 и Y0.
!
35 слайд
35
Построение графика по точкам
Нельзя рисовать за границами экрана (зависание!).
Область определения функции (деление на ноль, корень из отрицательного числа, …)!
!
Границы области «видимости»:
X
Y
xmin
0
xmax
(X0, Y0)
800 – X0
X0
800
36 слайд
36
Вывод точки с проверкой
//----------------------------------------
// POINT вывод пикселя с проверкой и
// пересчетом координат
//----------------------------------------
void Point ( float x, float y, int color )
{
int xe, ye;
xe = ScreenX(x);
ye = ScreenY(y);
if ( xe >= 0 && xe < 800 &&
ye >= 0 && ye < 600)
putpixel(xe, ye, color);
}
если точка (xЭ, yЭ) в пределах экрана…
координаты в математической системе
цвет точки
37 слайд
37
Описание функций
//-----------------------------------------
// F1, F2
// Вход: x
// Выход: y = f(x)
//-----------------------------------------
float f1 ( float x )
{
return sqrt(x+1);
}
float f2 ( float x )
{
return 4*sin(x-1);
}
38 слайд
38
Области определения
//----------------------------------------
// ODZ1 – область определения f1(x)
// Вход: x
// Выход: 1, если x входит в ОДЗ
// 0, если x не входит в ОДЗ
//----------------------------------------
int odz1 ( float x )
{
return ( x >= -1 );
}
Для
Для
не нужно!
if ( x >= -1 ) return 1;
else return 0;
39 слайд
39
Вывод графика функции
//----------------------------------------
// PLOT вывод графиков функций
//----------------------------------------
void Plot ()
{
float xmin = - 1.* X0 / k,
xmax = (800. - X0) / k;
float x,
h = (xmax - xmin) / 1000;
}
чтобы не отбрасывать остаток
границы видимой части
шаг по x
for ( x = xmin; x <= xmax; x += h)
if ( odz1(x) )
Point(x, f1(x), LIGHTRED);
Что плохо?
?
40 слайд
40
Общее расположение
float f1 ( float x ) { return sqrt( x + 1 ); }
int odz1 ( float x ) { return x >= -1; }
...
void Point(float x, float y, int color)
{
...
}
...
void Plot()
{
...
for ( x = xmin; x <= xmax; x += h)
if ( odz1(x) )
Point(x, f1(x), LIGHTRED);
}
41 слайд
41
Задания
«4»: Построить графики в соответствии с заданием.
«5»: Построить графики, соединив точки линиями.
42 слайд
42
Структурное программирование
на языке Си
Тема 4. Точки пересечения
© К.Ю. Поляков, 2007-2009
43 слайд
43
Точки пересечения
f1 (x*) = f2 (x*)
a
b
f1 (x*) – f2 (x*) = 0
f (x*) = 0
y = f1 (x)
y = f2 (x)
Пример:
Проблема:
уравнение сложно (или невозможно) решить аналитически
(получить формулу для x*)
x
y
x*
Точка пересечения:
44 слайд
44
Методы решения уравнений
f (x) = 0
Точные (аналитические)
Приближенные
графические
численные
(методы последовательного приближения):
по графику найти интервал [a, b], в котором находится x*
(или одно начальное приближение x0)
по некоторому алгоритму уточнить решение, сужая интервал, в котором находится x*
повторять шаг 2, пока не достигнута требуемая точность:
x
y
x*
b – a <
a
b
45 слайд
45
Численные методы
Применение: используются тогда, когда точное (аналитическое) решение неизвестно или очень трудоемко.
дают хотя бы какое-то решение
во многих случаях можно оценить ошибку и найти решение с заданной точностью
решение всегда приближенное, неточное
46 слайд
46
Метод прямого («тупого») перебора
Задача: найти решение уравнения f (x) = 0 на интервале [a, b] с заданной точностью (чтобы найденное решение отличалось от истинного не более, чем на ).
x
y
x*
a
b
b*
a*
Алгоритм:
разбить интервал [a, b] на полосы шириной
найти полосу [a*, b*], в которой находится x*
решение – a* или b*
Как улучшить решение?
?
47 слайд
47
Есть ли решение на [a, b]?
x
y
x*
a
b
x
y
x*
a
b
есть решение
нет решения
нет решения
x
y
x*
a
b
Если непрерывная функция f (x) имеет разные знаки на концах интервала [a, b], то в некоторой точке x* внутри [a, b] она равна 0, то есть f (x*) = 0!
!
48 слайд
48
Метод дихотомии (деление пополам)
Найти середину отрезка [a,b]:
c = (a + b) / 2;
Если f(c)*f(a)<0, сдвинуть правую границу интервала
b = c;
Если f(c)*f(a)≥ 0, сдвинуть левую границу интервала
a = c;
Повторять шаги 1-3, пока не будет b – a ≤ .
x
y
x*
a
b
с
49 слайд
49
Метод дихотомии (деления пополам)
простота
можно получить решение с любой заданной точностью
нужно знать интервал [a, b]
на интервале [a, b] должно быть только одно решение
большое число шагов для достижения высокой точности
только для функций одной переменной
50 слайд
50
Метод дихотомии (в программе)
//----------------------------------------------
// Solve находит точку пересечения на [a,b]
// Вход: a, b – границы интервала, a < b
// eps - точность решения
// Выход: x – решение уравнения f1(x)=f2(x)
//----------------------------------------------
float Solve ( float a, float b, float eps )
{
float c, fa, fc;
while ( b - a > eps )
{
c = (a + b) / 2;
fa = f1(a) - f2(a);
fc = f1(c) - f2(c);
if ( fa*fc < 0 ) b = c;
else a = c;
}
return (a + b) / 2;
}
51 слайд
51
Метод дихотомии (в программе)
float xc1, xc2;
...
float Solve ( float a, float b, float eps )
{
...
}
...
void Cross ()
{
char s[20];
sprintf(s, "x=%.2f", xc1);
outtextxy ( 150, 100, s );
sprintf(s, "y=%.2f", f1(xc1));
outtextxy ( 150, 120, s );
...
}
глобальные переменные: абсциссы точек пересечения
найти решение на интервале [1,2] с точностью 0,0001
xc1 = Solve ( 1, 2, 0.0001 );
вывод на экран через символьную строку
… и значение y!
то же самое для остальных точек
52 слайд
52
Структурное программирование
на языке Си
Тема 5. Штриховка
© К.Ю. Поляков, 2007-2009
53 слайд
53
Штриховка (две функции)
x
y
xс2
xс1
N линий
h
y = f1 (x)
y = f2 (x)
void Hatch()
{
const int N = 10;
float x, h = (xc2 - xc1) / (N + 1);
int xe, yUp, yDown;
for (x = xc1+h; x < xc2; x += h )
{
xe = ScreenX ( x );
yUp = ScreenY ( f1(x) );
yDown = ScreenY ( f2(x) );
line ( xe, yUp, xe, yDown );
}
}
экранная координата x
экранные координаты границ области по оси y
шаг по x
54 слайд
54
Штриховка (составная нижняя граница)
x
y
xс3
xс1
xс2
N линий
h
y = f1 (x)
y = f2 (x)
y = f3 (x)
//----------------------------
// Down нижняя граница области
//----------------------------
float Down ( float x )
{
if ( x < xc2 )
return f2(x);
else return f3(x);
}
void Hatch()
{
...
h = ( - xc1) / (N + 1);
...
yDown = ScreenY ( );
...
}
Down(x)
xc3
55 слайд
55
Штриховка (общий случай)
float Up ( float x ) { ... }
float Down ( float x ) { ... }
...
void Hatch()
{
const N = 10;
float x, h = ( ? ) / (N + 1);
int xe, yUp, yDown;
for ( ? ; x += h )
{
xe = ScreenX ( x );
yUp = ScreenY ( ? );
yDown = ScreenY ( ? );
line ( xe, yUp, xe, yDown );
}
}
xc3 - xc1
x = xc1+h; x < xc3;
у всех
по-разному…
Up(x)
Down(x)
56 слайд
56
Структурное программирование
на языке Си
Тема 6. Вычисление площади
© К.Ю. Поляков, 2007-2009
57 слайд
57
Метод (левых) прямоугольников
x
y
xс2
xс1
h
y = f1 (x)
y = f2 (x)
S1
S2
S3
S4
Si
x
x
x+h
f1 (x)
f2 (x)
void Area()
{
float x, S = 0, h=0.001;
char out[20];
for ( x = xc1; x < xc2; x += h)
S += h*(f1(x) – f2(x));
sprintf ( out, "S=%7.3f", S );
outtextxy ( 300, 300, out );
}
for ( x = xc1; x < xc2; x += h )
S += f1(x) – f2(x);
S *= h;
Как улучшить решение?
?
Почему не
x <= xc2?
?
58 слайд
58
Метод (правых) прямоугольников
x
y
xс2
xс1
h
y = f1 (x)
y = f2 (x)
S1
S2
S3
S4
Si
x
x+h
f1 (x)
f2 (x)
void Area()
{
float x, S = 0, h=0.001;
char out[20];
for ( x = xc1; x < xc2; x += h)
S += h*(f1(x+h) – f2(x+h));
sprintf ( out, "S=%7.3f", S );
outtextxy ( 300, 300, out );
}
for ( x = xc1; x < xc2; x += h )
S += f1(x+h) – f2(x+h);
S *= h;
59 слайд
59
Метод (средних) прямоугольников
x
y
xс2
xс1
h
y = f1 (x)
y = f2 (x)
S1
S2
S3
S4
void Area()
{
float x, S = 0, h=0.001;
char out[20];
for ( x = xc1; x < xc2; x += h)
S += h*(f1(x+h) – f2(x+h));
sprintf ( out, "S=%7.3f", S );
outtextxy ( 300, 300, out );
}
for ( x = xc1; x < xc2; x += h )
S += f1(x+h/2) – f2(x+h/2);
S *= h;
f1 (x)
f2 (x)
x
Si
x+h
Какой метод точнее?
?
левые (правые):
средние
60 слайд
60
Метод трапеций
x
y
xс2
xс1
h
y = f1 (x)
y = f2 (x)
for ( x = xc1; x < xc2; x += h )
S += f1(x) – f2(x) +
f1(x+h) – f2(x+h);
S *= h/2;
Ошибка
x
x+h
f1 (x)
f2 (x)
Si
Как улучшить?
?
S =( f1(xc1) - f2(xc1)
+ f1(xc2) - f2(xc2) )/2.;
for ( x = xc1+h; x < xc2; x += h )
S += f1(x) – f2(x);
S *= h;
S1
S2
S3
S4
61 слайд
61
Метод Монте-Карло
Применение: вычисление площадей сложных фигур (трудно применить другие методы).
Требования: необходимо уметь достаточно просто определять, попала ли точка (x, y) внутрь фигуры.
Пример: заданы 100 кругов (координаты центра, радиусы), которые могу пересекаться. Найти площадь области, перекрытой кругами.
Как найти S?
?
62 слайд
62
Метод Монте-Карло
Вписываем сложную фигуру в другую фигуру, для которой легко вычислить площадь (прямоугольник, круг, …).
Равномерно N точек со случайными координатами внутри прямоугольника.
Подсчитываем количество точек, попавших на фигуру: M.
4. Вычисляем площадь:
Всего N точек
На фигуре M точек
Метод приближенный.
Распределение должно быть равномерным.
Чем больше точек, тем точнее.
Точность ограничена датчиком случайных чисел.
!
63 слайд
63
Случайное число в заданном интервале
//-----------------------------------------
// randF – случайное вещественное число
// в заданном интервале
//-----------------------------------------
float randF ( float a, float b)
{
return (b-a)*rand() / RAND_MAX + a;
}
rand()
rand()/RAND_MAX
1.*rand()/RAND_MAX
1.*rand()/RAND_MAX + a
(b-a)*rand()/RAND_MAX + a
целое [0, RAND_MAX]
всегда 0!!!
[0,1]
[a,a+1]
[a,b]
64 слайд
64
Проверка точки (внутри или нет?)
//-----------------------------------------
// Inside – определяет, находится ли точка
// внутри фигуры
// Вход: x, y – координаты точки
// Выход: 1, если точка внутри фигуры,
// 0, если точка вне фигуры
//-----------------------------------------
int Inside ( float x, float y )
{
if ( Down(x) <= y && y <= Up(x) )
return 1;
else return 0;
}
int Inside ( float x, float y )
{
return (Down(x) <= y && y <= Up(x));
}
65 слайд
65
Метод Монте-Карло (реализация)
//----------------------------------------------------
// Area2 – вычисление площади методом Монте-Карло
//----------------------------------------------------
void Area2 ()
{
int i, N = 200000, M = 0;
float
float x, y, S;
char out[20];
for (i=1; i<=N; i++)
{
x = randF ( x1, x2 );
y = randF ( y1, y2 );
if ( Inside(x,y) ) M++;
}
S = (x2-x1)*(y2-y1)*M/N;
sprintf(out, "S=%7.3f", S);
outtextxy(300, 320, out);
}
x1 = xc1, x2 = xc2, y1 = 1, y2 = 4;
границы прямоугольника (у каждого свои!)
x1
x2
y1
y2
S = (x2-x1)*(y2-y1)*M/N;
вычисление площади
если на фигуре, увеличить счетчик
66 слайд
66
Структурное программирование
на языке Си
Тема 7. Оформление отчета
© К.Ю. Поляков, 2007-2009
67 слайд
67
Титульный лист
68 слайд
68
Графики функций
«скриншот» (screenshot) – «снимок» экрана
через Редактор формул (Вставка – Объект – Microsoft Equation)
69 слайд
69
Как получить копию экрана?
Поменять цвета так, чтобы все линии и текст были белые.
Запустить программу (она должна все нарисовать).
Нажать клавишу PrtScr (Print Screen – «снимок» экрана) на клавиатуре или комбинацию Alt+PrtScr («снимок» активного окна).
В графическом редакторе (Paint): Правка – Вставить.
Перевести в черно-белую палитру (Рисунок – Атрибуты – Палитра – Черно-белая).
Инверсия (черный ↔ белый), Рисунок – Обратить цвета.
Выделить нужную часть рисунка.
Вставить в отчет через буфер обмена (Ctrl+C, Ctrl+V).
70 слайд
70
Структура программы
71 слайд
71
Текст программы
шрифт Courier New,
(моноширинный)
размер 10 пт
72 слайд
72
Конец фильма
Рабочие листы
к вашим урокам
Скачать
6 663 611 материалов в базе
Настоящий материал опубликован пользователем Шихалеева Элла Евгеньевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс профессиональной переподготовки
300/600 ч.
Курс профессиональной переподготовки
300/600 ч.
Курс профессиональной переподготовки
600 ч.
Мини-курс
4 ч.
Мини-курс
3 ч.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.