Инфоурок Другое ПрезентацииПрезентация на тему Программирование на языке Си

Презентация на тему Программирование на языке Си

Скачать материал
Скачать материал "Презентация на тему Программирование на языке Си"

Получите профессию

Няня

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Менеджер по платежным услугам

Описание презентации по отдельным слайдам:

  • 1Структурное программирование на языке Си© К.Ю. Поляков, 2007-2009Теория
Про...

    1 слайд

    1
    Структурное программирование
    на языке Си
    © К.Ю. Поляков, 2007-2009
    Теория
    Проект
    Графики функций
    Точки пересечения
    Штриховка
    Вычисление площади
    Оформление отчета

  • 2Структурное программирование на языке СиТема 1. Теория© К.Ю. Поляков, 2007-...

    2 слайд

    2
    Структурное программирование
    на языке Си
    Тема 1. Теория
    © К.Ю. Поляков, 2007-2009

  • 3Этапы разработки программПостановка задачи
определить цель и категорию прогр...

    3 слайд

    3
    Этапы разработки программ
    Постановка задачи
    определить цель и категорию программы (системная, прикладная)
    определить исходные данные и требуемый результат
    проверить, является ли задача хорошо поставленной (должны быть определены все связи между исходными данными и результатом)





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

  • 4Этапы разработки программРазработка модели данных
формальная модель
типы дан...

    4 слайд

    4
    Этапы разработки программ
    Разработка модели данных
    формальная модель
    типы данных (массивы, структуры, …)
    взаимосвязь между данными
    Разработка алгоритма
    выбор существующего или разработка нового
    возможен возврат к шагу 2
    Разработка программы
    Языки: C, C++, Visual Basic, Delphi (Паскаль), `…
    Отладка программы (поиск и исправление ошибок)
    debug – извлечение жучков (bug), 1945, MAРK-I
    отладчик (точки останова, пошаговый режим, просмотр переменных)
    профайлер (сколько выполняется каждая из процедур)

  • 5Этапы разработки программТестирование программы (проверка на исходных данных...

    5 слайд

    5
    Этапы разработки программ
    Тестирование программы (проверка на исходных данных, для которых известен результат)
    альфа-тестирование: внутри фирмы (тестеры)
    бета-тестирование: в других организациях, распространение через Интернет



    Разработка документации
    справочная система
    руководство пользователя (User Manual)
    руководство разработчика
    Сопровождение (техническая поддержка)
    исправление ошибок, найденных заказчиком
    обучение и консультирование заказчика
    новые версии по льготной цене
    Тестирование может показать наличие
    ошибок, но не их отсутствие.
    !

  • 6Методы проектирования программосновная программаAxesPlotCrossAreaF1F2Pointп...

    6 слайд

    6
    Методы проектирования программ
    основная
    программа
    Axes
    Plot
    Cross
    Area
    F1
    F2
    Point
    процедуры
    1-ого уровня
    процедуры
    2-ого уровня
    снизу вверх
    сверху вниз

  • 7Проектирование «снизу вверх»сначала составляются процедуры нижнего уровня, и...

    7 слайд

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

    легче начать программировать
    более эффективные процедуры

    процедуры необходимо связывать с основной задачей («держать в голове»)
    при окончательной сборке может не хватить «кубиков»
    часто программа получается запутанной
    сложно распределить работу в команде

  • 8Проектирование «сверху вниз»метод последовательного уточнения: 
начинаем с о...

    8 слайд

    8
    Проектирование «сверху вниз»
    метод последовательного уточнения:
    начинаем с основной программы;
    она разбивается на подзадачи, для каждой из которых пишется процедура-«заглушка»;
    реализуем каждую из процедур тем же способом.
    меньше вероятность принципиальной ошибки (начали с главного)
    проще структура программы
    удобно распределять работу в команде
    в разных блоках могут быть реализованы похожие операции (можно было решить одной общей процедурой), особенно в команде

  • 9Структурное программированиеСуществовавшие проблемы: 
увеличилась сложность...

    9 слайд

    9
    Структурное программирование
    Существовавшие проблемы:
    увеличилась сложность программ
    сократилось время на разработку
    Цели:
    повысить надежность
    уменьшить время и стоимость разработки
    облегчить тестирование и отладку
    возможность переделки одного модуля
    улучшить читабельность
    без переходов на другую страницу
    избегать трюков и запутанных приемов

  • 10Структурное программированиеПринципы: 
абстракции: программу можно рассматр...

    10 слайд

    10
    Структурное программирование
    Принципы:
    абстракции: программу можно рассматривать на любом уровне без лишних подробностей
    модульности: программа разбивается на отдельные модули, которые могут отлаживаться независимо друг от друга
    подчиненности: связь между модулями «сверху вниз»
    локальности: каждый модуль использует только свои локальные переменные, глобальные переменные только в крайних случаях

  • 11МодульМодуль – это программный блок (процедура или функция), отделенный от...

    11 слайд

    11
    Модуль
    Модуль – это программный блок (процедура или функция), отделенный от кода других модулей, который полностью решает самостоятельную задачу своего уровня.
    работа модуля не зависит от того, откуда он вызывается, и от того, сколько раз он вызывался до этого
    размер модуля не более 50-60 строк (1 страница)
    модуль имеет один вход и один выход
    модуль начинается с «шапки»-комментария (входные данные, результаты, какие модули использует)
    имена переменных – смысловые
    в одной строке – один оператор
    «трюки» – долой

  • 12Оформление текста программыШапка – комментарий в начале процедур и функций....

    12 слайд

    12
    Оформление текста программы
    Шапка – комментарий в начале процедур и функций.
    //----------------------------------------
    // Sum сумма элементов массива
    // Вход: A[] – массив целых чисел
    // n - размер массива
    // Выход: S = A[0]+A[1]+...+A[n-1]
    // Вызывает: -
    //----------------------------------------
    int Sum ( int A[], float n )
    {
    ...
    }

  • 13Оформление текста программыОтступы – тело цикла, условного оператора, опера...

    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 слайд

    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Структурное программирование на языке СиТема 2. Проект© К.Ю. Поляков, 2007...

    15 слайд

    15
    Структурное программирование
    на языке Си
    Тема 2. Проект
    © К.Ю. Поляков, 2007-2009

  • 16Проект «Графики функций»

построить координатные оси и сделать их разметку...

    16 слайд

    16
    Проект «Графики функций»


    построить координатные
    оси и сделать их разметку


    построить графики
    заданных функций
    (по вариантам)

  • 17Проект «Графики функций»
найти точки пересечения графиков, используя числ...

    17 слайд

    17
    Проект «Графики функций»

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



    заштриховать
    образованную замкнутую
    область
    x=3,58
    y=2,14
    x=1,40
    y=1,55

  • 18Проект «Графики функций»

вычислить площадь этой области двумя способами...

    18 слайд

    18
    Проект «Графики функций»


    вычислить площадь этой
    области двумя способами


    оформить отчет по работе
    S1=3,014
    S2=3,025

  • 19Структура программы#include
#include
#include
#include



main()
{
 initwin...

    19 слайд

    19
    Структура программы
    #include<graphics.h>
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>



    main()
    {
    initwindow(800,600);

    getch();
    closegraph();
    }
    глобальные константы и переменные
    процедуры и функции
    основная программа

  • 20Разбивка программы на этапы Axes();  // оси координат
 Plot();  // графики...

    20 слайд

    20
    Разбивка программы на этапы
    Axes(); // оси координат
    Plot(); // графики функций
    Cross(); // точки пересечения графиков
    Hatch(); // штриховка
    Area(); // площадь (способ 1)
    Area2(); // площадь (способ 2)
    Основная программа
    Процедуры-заглушки
    //------------------------------------
    // Axes оси координат
    //------------------------------------
    void Axes()
    {
    }

  • 21Структурное программирование на языке СиТема 3. Графики функций© К.Ю. Поля...

    21 слайд

    21
    Структурное программирование
    на языке Си
    Тема 3. Графики функций
    © К.Ю. Поляков, 2007-2009

  • 22Функции, заданные в явном видеy = f (x)xybk = tgпрямаяxybaпараболаxybaгипе...

    22 слайд

    22
    Функции, заданные в явном виде
    y = f (x)
    x
    y
    b
    k = tg
    прямая
    x
    y
    b
    a
    парабола
    x
    y
    b
    a
    гипербола
    x
    y
    k+b
    b
    степенная функция

  • 23Функции, заданные в неявном видеf (x, y) = 0xyabx0y0пример: уравнение эллипса

    23 слайд

    23
    Функции, заданные в неявном виде
    f (x, y) = 0
    x
    y
    a
    b
    x0
    y0
    пример: уравнение эллипса

  • 24полюсПолярные координатыА(, ) - полярный угол - полярный радиусOполярны...

    24 слайд

    24
    полюс
    Полярные координаты
    А(, )
     - полярный угол
     - полярный радиус
    O
    полярный луч
    Примеры:
    Описание фигур, полученных при вращении объектов.
     = f ()
     = R
    окружность
    O
    R
     = a ∙
    спираль Архимеда
    O
    O
     = a∙sin(2/3)
    «роза»

  • 25Полярные координатыПереход к декартовым координатамА(, )Oxy

    25 слайд

    25
    Полярные координаты
    Переход к декартовым координатам
    А(, )
    O


    x
    y

  • 26Описание в параметрической формеt – независимый параметр («время»)
Описание...

    26 слайд

    26
    Описание в параметрической форме
    t – независимый параметр («время»)
    Описание фигур, полученных при сложном движении объектов.
    x = f1 (t)
    y = f2 (t)

    v0
    y
    x
    0
    Циклоида – траектория точки на ободе колеса при вращении
    R
    y
    x
    0

  • 27Системы координатМатематическаяЭкранная(0,0)XЭYЭ800600 (799,599)(799,0)(0,5...

    27 слайд

    27
    Системы координат
    Математическая
    Экранная
    (0,0)


    800
    600
    (799,599)
    (799,0)
    (0,599)
    (x, y)
    X
    Y
    x
    y
    0
    (X0, Y0)
    Y0
    X0


    (xЭ, yЭ)
    Преобразование координат:
    X0, Y0 – экранные координаты
    точки (0,0)
    k – масштаб (во сколько раз растягивается единичный отрезок)
    Почему
    «минус»?
    ?

  • 28Структура программы#include
#include
#include
#include
const int X0 = 100,...

    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 слайд

    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Оси координатvoid Axes()
{
 line ( X0, 0, X0, 599 );
 line ( 0, Y0, 799, Y0...

    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Разметка оси X («черточки»)Y0xЭ(xЭ, Y0−2)(xЭ, Y0+2)800 − X0Число меток на [...

    31 слайд

    31
    Разметка оси X («черточки»)
    Y0

    (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Разметка оси X (числа)1xЭ(xЭ, Y0+2)Вывод символьной строки в графическом ре...

    32 слайд

    32
    Разметка оси X (числа)
    1

    (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Оси с разметкой (полностью)void Axes()
{
  int i, xe, ye;
  char s[5];
  li...

    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Задания«4»: Сделать разметку осей полностью (не только положительной части...

    34 слайд

    34
    Задания
    «4»: Сделать разметку осей полностью (не только положительной части оси X).
    «5»: Сделать задание на «4», использовав только 2 цикла (1 цикл для каждой оси).
    Разметка должна работать правильно при любых значениях X0 и Y0.
    !

  • 35Построение графика по точкамНельзя рисовать за границами экрана (зависание!...

    35 слайд

    35
    Построение графика по точкам
    Нельзя рисовать за границами экрана (зависание!).
    Область определения функции (деление на ноль, корень из отрицательного числа, …)!
    !
    Границы области «видимости»:
    X
    Y
    xmin
    0
    xmax
    (X0, Y0)
    800 – X0
    X0
    800

  • 36Вывод точки с проверкой//----------------------------------------
// POINT...

    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Описание функций//-----------------------------------------
// F1, F2
// Вх...

    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Области определения//----------------------------------------
// ODZ1 – обл...

    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Вывод графика функции//----------------------------------------
// PLOT выв...

    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Общее расположениеfloat f1 ( float x ) { return sqrt( x + 1 ); } 
int odz1...

    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Задания«4»:  Построить графики в соответствии с заданием.
«5»:  Построить г...

    41 слайд

    41
    Задания
    «4»: Построить графики в соответствии с заданием.
    «5»: Построить графики, соединив точки линиями.

  • 42Структурное программирование на языке СиТема 4. Точки пересечения© К.Ю. По...

    42 слайд

    42
    Структурное программирование
    на языке Си
    Тема 4. Точки пересечения
    © К.Ю. Поляков, 2007-2009

  • 43Точки пересеченияf1 (x*) = f2 (x*)abf1 (x*) – f2 (x*) = 0f (x*) = 0y = f1 (...

    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Методы решения уравненийf (x) = 0Точные (аналитические)
Приближенные
графи...

    44 слайд

    44
    Методы решения уравнений
    f (x) = 0
    Точные (аналитические)

    Приближенные
    графические



    численные
    (методы последовательного приближения):
    по графику найти интервал [a, b], в котором находится x*
    (или одно начальное приближение x0)
    по некоторому алгоритму уточнить решение, сужая интервал, в котором находится x*
    повторять шаг 2, пока не достигнута требуемая точность:
    x
    y
    x*
    b – a < 
    a
    b

  • 45Численные методыПрименение: используются тогда, когда точное (аналитическое...

    45 слайд

    45
    Численные методы
    Применение: используются тогда, когда точное (аналитическое) решение неизвестно или очень трудоемко.
    дают хотя бы какое-то решение
    во многих случаях можно оценить ошибку и найти решение с заданной точностью
    решение всегда приближенное, неточное

  • 46Метод прямого («тупого») перебораЗадача: найти решение уравнения f (x) =...

    46 слайд

    46



    Метод прямого («тупого») перебора
    Задача: найти решение уравнения f (x) = 0 на интервале [a, b] с заданной точностью  (чтобы найденное решение отличалось от истинного не более, чем на ).
    x
    y
    x*
    a
    b
    b*
    a*
    Алгоритм:
    разбить интервал [a, b] на полосы шириной 
    найти полосу [a*, b*], в которой находится x*
    решение – a* или b*
    Как улучшить решение?
    ?

  • 47Есть ли решение на [a, b]?xyx*abxyx*abесть решениенет решениянет решенияxyx...

    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Метод дихотомии (деление пополам)Найти середину отрезка [a,b]:    c = (a +...

    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 слайд

    49
    Метод дихотомии (деления пополам)
    простота
    можно получить решение с любой заданной точностью
    нужно знать интервал [a, b]
    на интервале [a, b] должно быть только одно решение
    большое число шагов для достижения высокой точности
    только для функций одной переменной

  • 50Метод дихотомии (в программе)//--------------------------------------------...

    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Метод дихотомии (в программе)float xc1, xc2;
...
float Solve ( float a, flo...

    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Структурное программирование на языке СиТема 5. Штриховка© К.Ю. Поляков, 2...

    52 слайд

    52
    Структурное программирование
    на языке Си
    Тема 5. Штриховка
    © К.Ю. Поляков, 2007-2009

  • 53Штриховка (две функции)xyxс2xс1N линийhy = f1 (x)y = f2 (x)void Hatch()
{...

    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Штриховка (составная нижняя граница)xyxс3xс1xс2N линийhy = f1 (x)y = f2 (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Штриховка (общий случай)float Up ( float x )   { ... } 
float Down ( float...

    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Структурное программирование на языке СиТема 6. Вычисление площади© К.Ю. П...

    56 слайд

    56
    Структурное программирование
    на языке Си
    Тема 6. Вычисление площади
    © К.Ю. Поляков, 2007-2009

  • 57Метод (левых) прямоугольниковxyxс2xс1hy = f1 (x)y = f2 (x)S1S2S3S4Sixxx+hf1...

    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Метод (правых) прямоугольниковxyxс2xс1hy = f1 (x)y = f2 (x)S1S2S3S4Sixx+hf1...

    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Метод (средних) прямоугольниковxyxс2xс1hy = f1 (x)y = f2 (x)S1S2S3S4void Ar...

    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Метод трапецийxyxс2xс1hy = f1 (x)y = f2 (x)for ( x = xc1; x &lt; xc2; 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 слайд

    61
    Метод Монте-Карло
    Применение: вычисление площадей сложных фигур (трудно применить другие методы).
    Требования: необходимо уметь достаточно просто определять, попала ли точка (x, y) внутрь фигуры.
    Пример: заданы 100 кругов (координаты центра, радиусы), которые могу пересекаться. Найти площадь области, перекрытой кругами.
    Как найти S?
    ?

  • 62Метод Монте-КарлоВписываем сложную фигуру в другую фигуру, для которой легк...

    62 слайд

    62
    Метод Монте-Карло
    Вписываем сложную фигуру в другую фигуру, для которой легко вычислить площадь (прямоугольник, круг, …).
    Равномерно N точек со случайными координатами внутри прямоугольника.
    Подсчитываем количество точек, попавших на фигуру: M.
    4. Вычисляем площадь:
    Всего N точек
    На фигуре M точек
    Метод приближенный.
    Распределение должно быть равномерным.
    Чем больше точек, тем точнее.
    Точность ограничена датчиком случайных чисел.
    !

  • 63Случайное число в заданном интервале//-------------------------------------...

    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 слайд

    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 слайд

    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Структурное программирование на языке СиТема 7. Оформление отчета© К.Ю. По...

    66 слайд

    66
    Структурное программирование
    на языке Си
    Тема 7. Оформление отчета
    © К.Ю. Поляков, 2007-2009

  • 67Титульный лист

    67 слайд

    67
    Титульный лист

  • 68Графики функций«скриншот» (screenshot) –  «снимок» экраначерез Редактор фор...

    68 слайд

    68
    Графики функций
    «скриншот» (screenshot) – «снимок» экрана
    через Редактор формул (Вставка – Объект – Microsoft Equation)

  • 69Как получить копию экрана?Поменять цвета так, чтобы все линии и текст были...

    69 слайд

    69
    Как получить копию экрана?
    Поменять цвета так, чтобы все линии и текст были белые.
    Запустить программу (она должна все нарисовать).
    Нажать клавишу PrtScr (Print Screen – «снимок» экрана) на клавиатуре или комбинацию Alt+PrtScr («снимок» активного окна).
    В графическом редакторе (Paint): Правка – Вставить.
    Перевести в черно-белую палитру (Рисунок – Атрибуты – Палитра – Черно-белая).
    Инверсия (черный ↔ белый), Рисунок – Обратить цвета.
    Выделить нужную часть рисунка.
    Вставить в отчет через буфер обмена (Ctrl+C, Ctrl+V).

  • 70Структура программы

    70 слайд

    70
    Структура программы

  • 71Текст программышрифт Courier New,
(моноширинный)
 размер 10 пт

    71 слайд

    71
    Текст программы
    шрифт Courier New,
    (моноширинный)
    размер 10 пт

  • 72Конец фильма

    72 слайд

    72
    Конец фильма

Получите профессию

Технолог-калькулятор общественного питания

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 663 611 материалов в базе

Скачать материал

Другие материалы

Рабочая программа "калькуляция и учет"
  • Учебник: «Организация хранения и контроль запасов и сырья. Профессиональное образование», Володина М.В., Сопачева Т.А.
  • Тема: Глава 3 КОНТРОЛЬ ЗАПАСОВ И НАЛИЧИЯ ПРОДУКТОВ
  • 02.01.2021
  • 3378
  • 8
«Организация хранения и контроль запасов и сырья. Профессиональное образование», Володина М.В., Сопачева Т.А.

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 21.06.2020 203
    • PPTX 2.1 мбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Шихалеева Элла Евгеньевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Шихалеева Элла Евгеньевна
    Шихалеева Элла Евгеньевна
    • На сайте: 3 года и 4 месяца
    • Подписчики: 0
    • Всего просмотров: 166057
    • Всего материалов: 221

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Фитнес-тренер

Фитнес-тренер

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

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

Педагог-библиотекарь

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 487 человек из 71 региона
  • Этот курс уже прошли 2 326 человек

Курс профессиональной переподготовки

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

Библиотекарь

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 284 человека из 66 регионов
  • Этот курс уже прошли 849 человек

Курс профессиональной переподготовки

Руководство электронной службой архивов, библиотек и информационно-библиотечных центров

Начальник отдела (заведующий отделом) архива

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Этот курс уже прошли 25 человек

Мини-курс

Предпринимательские риски

6 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Психология развития личности: от мотивации к самопониманию

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 84 человека из 27 регионов
  • Этот курс уже прошли 35 человек

Мини-курс

Занятия спортом при заболеваниях опорно-двигательного аппарата

3 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 39 человек из 20 регионов
  • Этот курс уже прошли 48 человек
Сейчас в эфире

Информационная интоксикация: методы исцеления

Перейти к трансляции