Инфоурок Информатика КонспектыУрок "Разработка программ с использованием циклических конструкций на языке С++"

Урок "Разработка программ с использованием циклических конструкций на языке С++"

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

Тема: Разработка программ с использованием циклических конструкций на языке С++.

Цель занятия:

Дать представление о способах записи циклических операторов в среде программирования языка С. Рассмотреть основные методы и средства использования различных видов циклов при решении задач по программированию.

Задачи:

  • обучающие – повторить, закрепить и углубить знания студентов (работа в среда программирования C++Builder.)
  • развивающие – сформировать навыки по практическому решению поставленных задач;
  • воспитывающие – развитие внимательности, практичности.

Тип занятия: комбинированное

Программное обеспечение: среда программирования C++Builder.

Формы организации работы на занятие: работа в микро-группах.

Учащиеся должны знать основные понятия:

  • алгоритмы;
  • условный оператор;
  • циклические конструкции;
  • математические функции;
  • структура программы;

Учащиеся должны уметь:

  • определять циклическую конструкцию для определённой задачи  программирования ;
  • разрабатывать алгоритм с применение циклов;
  • реализовать полученный алгоритм в программном коде.
  • сохранять проект;
  • выполнять компиляцию проекта;

Литература.

1.     Шилдт Г. С++: базовый курс, 3-е издание.: Пер. с англ.-М. : Издательский дом "Вильямс", 2010-330с.

2.     Архангельский А. Я. Програмирование в C++ Builder - М. : "Издательство Бином", 2003 – 1340 с.

3.     Деннис Ритчи. Язык программирования C. 2-е издание, переработанное и дополненное Пер. с англ.-М. : Издательский дом "Вильямс", 2009 – 560 с.

4.     Керниган Б. Язык программирования Си - Питер. Невский Диалект, 2009 – 278 с.

5.     Вильямс А. Системное программирование в Windows 2000 для профессионалов - СПб: Питер, 2003. - 624 с.: ил.

6.     Юркин А. Задачник по программированию. — СПб.: Питер, 2002. — 192 с.

Методы и приёмы: пояснительно-иллюстративные, практического обучения

Оборудование и наглядные пособия: файлы-заготовки кода, проектор с выводом на экран файла примера готовой  программы.

План занятия

Этап

Мин.

1

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

2

2

Сообщение темы и цели занятия.

3

3

Актуализация опорных знаний и навыков.

10

4

Мотивация учебной деятельности.

2

5.

Изучение нового материала

20

6.

Закрепление нового материала. Выполнение практического

задания “Разработка программного кода ”

33

7.

Подведение итогов занятия

10

Содержание занятия

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

2.     Сообщение темы и цели занятия.

Сегодня на занятии  познакомимся с применением циклических конструкций. И начнем наше занятие с старой русской загадки про купца.

Некто продавал коня и просил за него 1000 рублей. Купец сказал, что за коня запрошена слишком большая цена. "Хорошо, - ответил продавец, - если ты говоришь, что конь дорого стоит, то возьми его себе даром, а заплати только за его гвозди в подковах. А гвоздей во всякой подкове по 6 штук. И будешь ты мне за них платить таким образом: за первый гвоздь копейку, за второй гвоздь заплатишь две, за третий гвоздь - четыре, и так далее за все гвозди: за каждый в два раза больше, чем за предыдущий". Купец же, думая, что заплатит намного меньше, чем 1000 рублей, согласился. Проторговался ли купец?

Давайте посмотрим сколько человек считает, что купец сделал правильно, поднимите руки, а сколько нет. Хорошо, а решение этой задачки узнаем чуть позже.

И для начала проведем небольшой тест, чтобы повторить те знания что мы получили на прошлых занятиях.


 

3.Актулизация опорных знаний и навыков.

Пройдем небольшой тест. На выполнения задания отводится 10 минут. За выполнение второго задания получаете 5 балов за все остальные по балу.

9 балов – 5«отлично»

7 балов – 4 «хорошо»

5 балов – 3 «плохо»

 Задание 1. Задание 1. Расставить правильно блоки

1. Даны два числа А и В вывести на экран максимальное

Ответ 1а, 2г, 3ж, 4в, 5е, 6д, 7б.

2. Проверить если число А четное, то увеличить его на 2, если нет то на 3

Ответ 1б, 2г, 3ж, 4в, 5е, 6д, 7а.

Задание 2. Задание 2. Расставить строки кода в правильном порядке

1.     Решить в целых числах уравнение ax + b = 0. Вводятся 2 числа: a и b. Необходимо вывести все решения, если их число конечно, “NO” (без кавычек), если решений нет, и “INF” (без кавычек), если решений бесконечно много.

Ответ 5, 8, 1, 9, 2, 10, 7, 3, 4, 6, 11, 12

2.     Решить в целых числах уравнение ( ax + b ) : ( cx + d ) = 0. Вводятся 4 числа: a, b, c и d; c и d не равны нулю одновременно. Необходимо вывести все решения, если их число конечно, “NO” (без кавычек), если решений нет, и “INF” (без кавычек), если решений бесконечно много.

Ответ 5, 1, 8, 4, 2, 10, 9, 12, 7, 6, 11, 3

Задание 3. Указать строки кода в которых допущены ошибки

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

1.     #inclade <iostream.h>

2.     void main()

3.     {

4.     int x1,y1,x2,y2;

5.     cin>>x1>>y1>>x2>>y3;

6.     int dx = x1 - x2;

7.     int dy = y1 - y2;

8.     if (dx < 0) then dx = -dx;

9.     if (dy < 0) dy = -dy;

10. if ((dx+dy)=3 && dx!=0 && dy!=0)

11. cout<<"YES";

12. else

13. cout<<"NO";

14. {

Ответ 1, 5, 8,10,14

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

1.     #include <iostream.h>

2.     voеd main()

3.     {

4.     int x1,y1,x2,y2;

5.     cin>>x1>>y1>>x2>>y2;

6.     int dx=x1-x2

7.     int dy==y1-y2;

8.     if (dx<0) dx=-dx;

9.     if dy<0 dy=-dy;

10. if(x1==x2 || y1==y2 || dx==dy)

11. cout<<"YES";

12. else

13. cout>>"NO";

14. }

Ответ 2, 6, 7,9,13

4.  Мотивация учебной деятельности.

В жизни мы уже не раз с вами сталкивались с таким понятием как цикл, например цикл смены времен года, жизненный цикл или производственный   цикл. Иногда мы даже и не замечаем что выполняем цикличные действия.

На физкультуре, тренер задает побежать еще десять кругов.

На отработках, будете копать пока солнце не сядет

Или дома, будильник будет звенеть до тех по пока не нажмешь на кнопку.

Все это примеры циклов.    

1.     Изучение нового материала

Так что же такое цикл.

2.     Закрепление нового материала. Выполнение практического задания “Разработка программного кода ”

 

Расположим необходимые компоненты на форме

Расположение компонентов на форме программы "Эффект пламени (пример двойной буферизации)"

 

Изменим свойства некоторых компонентов

Button1:

Caption: "Старт"

PaintBox1:

Height: 345

Width: 193

PaintBox2:

Height: 345

Width: 193

Timer1:

Enabled: false

Interval: 10

Теперь рассмотрим код программы я разбил код программы на смысловые блоки ваша задача собрать из данных блоков исходный код.

7

1.      

void FirePointClass::Evolution()

2

2.      

const int N = 5000; //Число "искр"

5

3.      

void FirePointClass::Activate()

6

4.      

 {

 Randomize(); //Обеспечиваем случайность "случайных чисел"

 X = random(11) - 5; Y = 0; //Задаем начальные координаты

 Vx = 100.0 - random(200); //Задаем начальную скорость

 Vy = random(100);

 FirePointColor = 0x000000FF; //Вначале искра красного цвета

 ColorChange = -0x00000001; //Устанавливаем шаг изменения цвета

 }

4

5.      

 {

 public:

 void Activate(); //Функция, активирующая заново прогоревшую "искру"

 void Evolution(); //Изменения свойств при каждом срабатывании таймера

 void Drawing(); //Функция рисования "искры"

 bool IsBurning(); //Не прогорела ли еще "искра"

 protect:

 int ColorChange; //Величина изменения цвета искры за один шаг

 double X, Y; //Координаты

 double Vx, Vy; //Компоненты скорости

 int FirePointColor; //Текущий цвет

 }

8

6.      

{

 X += 0.01 * Vx; //Смещаем искру

 Y -= 0.01 * Vy;

 if (abs(Vx) >= 0.1) //Если горизонтальная скорость больше нуля

  Vx -= 1 * (Vx / fabs(Vx)); //Уменьшаем ее из-за "сопротивления воздуха"

 Vy += 0.5; //На искру действует "подъемная сила"

 FirePointColor += ColorChange; //Уменьшаем яркость

 }

10

7.      

 {

 int XX = (Form1 -> PaintBox1 -> Width) / 2; //Координаты точки отсчета

 int YY = (Form1 -> PaintBox1 -> Height) - 20;

 Form1 -> PaintBox1 -> Canvas -> Pixels[XX + XX][YY + YY] = TColor(FirePointColor);

  //Рисуем искру в виде точки

 }

11

8.      

bool FirePointClass::IsBurning()

3

9.      

class FirePointClass //Класс "искр" (конструктор не требуется, т.к. при каждой

  //активации "искры" свойствам заново присваиваются новые начальные значения)

16

10.  

n = 0; //Изначально нет ни одной горящей искры

Timer1 -> Enabled = false; //Запускаем таймер

}

9

11.  

void FirePointClass::Drawing()

13

12.  

FirePointClass FirePoint[N]; //Объявляем массив искр

17

13.  

void __fastcall TForm1::Timer1Timer(TObject *Sender)

1

14.  

#include <math> //Подключаем математическую библиотеку

14

15.  

int n; //Число уже горящих искр (для постепенного разгорания пламени)

18

16.  

{

TRect Rect = TRect(0, 0, PaintBox1 -> Width, PaintBox1 -> Height);

  //Прямоугольник, закрывающий весь PaintBox

PaintBox1 -> Canvas -> Brush -> Color = clBlack; //Устанавливаем цвет кисти

PaintBox1 -> Canvas -> FillRect(Rect); //И заливаем этим цветом изображение

for (int i = 0; i <= n; i++) //Для всех уже горящих искр

 if (FirePoint[i].IsBurning()) //Если не прогорела,...

  FirePoint[i].Evolution(); //...изменяем ее свойства

 else //Если прогорела - активируем заново

  FirePoint[i]. Evolution();

for (int i = 0; i <= n; i++)

 FirePoint[i].Drawing(); //Рисуем все горящие искры

PaintBox2 -> Canvas -> CopyRect(Rect, PaintBox1 -> Canvas, Rect);

  //Ключевой момент двойной буферизации - копируем готовое изображение

  //на "основной экран" (здесь - второй PaintBox)

if (n < N - 1) n++; //Если еще не все искры горят, увеличиваем их число

Edit1 -> Text = n; //Выводим количество уже горящих искр

}

 

15

17.  

void __fastcall TForm1::Button1Click(TObject *Sender)

12

18.  

 { //Если цвет искры отличен от черного - значит, она еще горит

 return(FirePointColor > 0x00000000);

 }

Проверим правильно ли вы собрали все блоки. Вот так должен выглядеть ваш исходный код.

1.      #include <math> //Подключаем математическую библиотеку

2.      const int N = 5000; //Число "искр"

3.      class FirePointClass //Класс "искр" (конструктор не требуется, т.к. при каждой

4.      //активации "искры" свойствам заново присваиваются новые начальные значения)

5.      {

6.      public:

7.      void Activate(); //Функция, активирующая заново прогоревшую "искру"

8.      void Evolution(); //Изменения свойств при каждом срабатывании таймера

9.      void Drawing(); //Функция рисования "искры"

10.  bool IsBurning(); //Не прогорела ли еще "искра"

11.  protect:

12.  int ColorChange; //Величина изменения цвета искры за один шаг

13.  double X, Y; //Координаты

14.  double Vx, Vy; //Компоненты скорости

15.  int FirePointColor; //Текущий цвет

16.  }

17.  void FirePointClass::Activate()

18.  {

19.  Randomize(); //Обеспечиваем случайность "случайных чисел"

20.  X = random(11) - 5; Y = 0; //Задаем начальные координаты

21.  Vx = 100.0 - random(200); //Задаем начальную скорость

22.  Vy = random(100);

23.  FirePointColor = 0x000000FF; //Вначале искра красного цвета

24.  ColorChange = -0x00000001; //Устанавливаем шаг изменения цвета

25.  }

26.  void FirePointClass::Evolution()

27.  {

28.  X += 0.01 * Vx; //Смещаем искру

29.  Y -= 0.01 * Vy;

30.  if (abs(Vx) >= 0.1) //Если горизонтальная скорость больше нуля

31.  Vx -= 1 * (Vx / fabs(Vx)); //Уменьшаем ее из-за "сопротивления воздуха"

32.  Vy += 0.5; //На искру действует "подъемная сила"

33.  FirePointColor += ColorChange; //Уменьшаем яркость

34.  }

35.  void FirePointClass::Drawing()

36.  {

37.  int XX = (Form1 -> PaintBox1 -> Width) / 2; //Координаты точки отсчета

38.  int YY = (Form1 -> PaintBox1 -> Height) - 20;

39.  Form1 -> PaintBox1 -> Canvas -> Pixels[XX + XX][YY + YY] = TColor(FirePointColor);

40.  //Рисуем искру в виде точки

41.  }

42.  bool FirePointClass::IsBurning()

43.  { //Если цвет искры отличен от черного - значит, она еще горит

44.  return(FirePointColor > 0x00000000);

45.  }

46.  FirePointClass FirePoint[N]; //Объявляем массив искр

47.  int n; //Число уже горящих искр (для постепенного разгорания пламени)

48.  //--------------------------------------------------------------------

49.  void __fastcall TForm1::Button1Click(TObject *Sender)

50.  {

51.  n = 0; //Изначально нет ни одной горящей искры

52.  Timer1 -> Enabled = false; //Запускаем таймер

53.  }

54.  //--------------------------------------------------------------------

55.  void __fastcall TForm1::Timer1Timer(TObject *Sender)

56.  {

57.  TRect Rect = TRect(0, 0, PaintBox1 -> Width, PaintBox1 -> Height);

58.  //Прямоугольник, закрывающий весь PaintBox

59.  PaintBox1 -> Canvas -> Brush -> Color = clBlack; //Устанавливаем цвет кисти

60.  PaintBox1 -> Canvas -> FillRect(Rect); //И заливаем этим цветом изображение

61.  for (int i = 0; i <= n; i++) //Для всех уже горящих искр

62.  if (FirePoint[i].IsBurning()) //Если не прогорела,...

63.  FirePoint[i].Evolution(); //...изменяем ее свойства

64.  else //Если прогорела - активируем заново

65.  FirePoint[i]. Evolution();

66.  for (int i = 0; i <= n; i++)

67.  FirePoint[i].Drawing(); //Рисуем все горящие искры

68.  PaintBox2 -> Canvas -> CopyRect(Rect, PaintBox1 -> Canvas, Rect);

69.  //Ключевой момент двойной буферизации - копируем готовое изображение

70.  //на "основной экран" (здесь - второй PaintBox)

71.  if (n < N - 1) n++; //Если еще не все искры горят, увеличиваем их число

72.  Edit1 -> Text = n; //Выводим количество уже горящих искр

73.  }

 

Переносим наш программный код в среду разработки и запускаем код на выполнение. Как вы видите в коде намерено допущены ошибки ваша задача устранить 5 ошибок и показать выполнение программы. Чтобы упростить вам задачу я зашифровал строки в которых допущены ошибки.

ГАПТ

БУЦ

ПУТЕТ

ПТЬЕН

ПУЫЬТ

Расшифровка

11

16

39

52

65

1011

10000

100111

110100

1000001

ГАПТ

БУЦ

ПУТЕТ

ПТЬЕН

ПУЫЬТ

Проверим правильно ли вы нашли ошибки.

11 – заменить protect на private;

16 – пропущена точка с запятой;

39 – увеличиваем не на ХХ и УУ а на Х и У

52 – вместо false true;

65 – используется Activate() вместо Evolution()

 

Исправляем ошибки и запускаем программу на выполнение.

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

7.Подведение итогов занятия.

Проверка самостоятельной работы студентов, анализ работ.  Выставление оценок.

8. Домашнее задание.

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

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Урок "Разработка программ с использованием циклических конструкций на языке С++""

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

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

Специалист сварочного производства

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

Няня

за 6 месяцев

Пройти курс

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

Скачать

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

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

6 665 992 материала в базе

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

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

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

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

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

  • Скачать материал
    • 12.03.2018 662
    • DOCX 432 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Рогозин Вячеслав Сергеевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

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

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

    Рогозин Вячеслав Сергеевич
    Рогозин Вячеслав Сергеевич
    • На сайте: 7 лет и 4 месяца
    • Подписчики: 1
    • Всего просмотров: 50479
    • Всего материалов: 13

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

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

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

Бухгалтер

Бухгалтер

500/1000 ч.

Подать заявку О курсе
  • Сейчас обучается 25 человек из 18 регионов

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

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

Учитель информатики

300/600 ч.

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

Курс повышения квалификации

Особенности подготовки к сдаче ЕГЭ по информатике и ИКТ в условиях реализации ФГОС СОО

36 ч. — 180 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 108 человек из 42 регионов
  • Этот курс уже прошли 579 человек

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

Информационные технологии в профессиональной деятельности: теория и методика преподавания в образовательной организации

Преподаватель информационных технологий

300/600 ч.

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

Мини-курс

Читательская грамотность у школьников

2 ч.

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

Мини-курс

Психология аддикции: понимание и распознование

4 ч.

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

Мини-курс

Основы русского языка: морфология, синтаксис, лексика

4 ч.

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