14142

Використання циклу з параметром для розвязування задач

Конспект урока

Информатика, кибернетика и программирование

Тема уроку: Використання циклу з параметром для розвязування задач. Мета уроку: Навчити використовувати цикл з параметром для розвязування типових задач. Тип уроку: Практичний. На початку уроку рекомендується провести письмове опитування можна у вигляді диктанту

Украинкский

2013-05-21

66.5 KB

0 чел.

Тема уроку: "Використання циклу з параметром для розв'язування задач."

Мета уроку: Навчити використовувати цикл з параметром для розв'язування типових задач.
Тип уроку: Практичний.

На початку уроку рекомендується провести письмове опитування (можна у вигляді диктанту) по матеріалах попереднього уроку. Далі можна розглянути деякі типові задачі з використанням циклу з параметром.
Нагадуємо, що в усіх цих задачах кількість повторень буде відома заздалегідь.

Задача №1.
Умова: Ненажера Стецько пробрався перед обідом у шкільну їдальню, де вже були накриті столи, і почав швиденько з'їдати ще тепленьки булочки, що стояли на столах. З першого столу він з'їв x1 булочок, з другого - х2, і, відповідно, з останнього - xn булочок. Але за ним стежив черговий по їдальні Андрійко та ретельно все фіксував на своєму калькуляторі: до булочок, з'їдених з першого столу, додав кількість булочок, що зникли з другого столу, і т.д. Допоможіть крок за кроком відтворити інформацію, яку дістав Андрійко на своєму калькуляторі.
Очевидно, що при розв'язанні даної задачі нам на початку роботи програми відома кількість повторів, тому що ми зразу ж знаємо, скільки столів в їдальні. Крім того, зауважимо, що для зберігання кількості булочок, що знаходяться на кожному столі, не треба мати
N змінних. Достатньо мати одну, назвемо її, наприклад, X, в якій тимчасово будемо зберігати відповідну кількість булочок з чергового столу. І, врешті решт, нам необхідна ще одна змінна, в якій ми будемо одержувати проміжні обчислення чергового Андрійка (наприклад, Sum). Таким чином, програма, що розв'язує дану задачу, буде мати наступний вигляд:

Program Example_177;

Var I,N:word;     {I – параметр циклу, N –  

                  кількість столів в їдальні,  

                  тобто кількість повторень} 

   Sum,X:word;   {X – кількість булочок на  

                  черговому столі їдальні, Sum –  

                  загальна кількість булочок, що  

                  з’їв Стецько} 

Begin 

 Sum:=0;     {На початку роботи програми Стецько  

               ще нічого не з’їв} 

 Write(‘Введіть кількість столів в їдальні:  ’);

 Readln(N);

 For I:=1 to N do 

  Begin 

    Write(‘Введіть кількість булочок на  

           черговому столі:  ’);

    Readln(X);

    Sum:=Sum+X;

    Writeln(‘На даний момент Стецько з”їв  

             ’,Sum,’ булочок.’);

  End;

 Read; {Затримка зображення на екрані} 

End.

Задача №2.
Умова: Компанія бабусь поїхала на мотоциклах на курси комп'ютерної грамотності. Попереду на мотоциклі без глушника їхала одна бабуся, за нею - дві, потім - три і т.д. Скільки бабусь їхало на заняття, якщо приголомшені пішоходи всього нарахували N рядів? Чи змогли бабусі зайняти всі місця у класі, якщо там стояло k рядів по l комп'ютерів в кожному? Скільки вільних місць залишилося?
Зверніть увагу на те, що фактично ця задача зводиться до знаходження суми всіх натуральних чисел від 1 до
N. В кінці задачі для повторення команди розгалуження учням пропонується визначити кількість зайнятих бабусями та вільних місць.

Program Example_183;

Var I,N,Sum:word;  {I – параметр циклу, N –  

                  кількість рядів мотоциклів,  

                  тобто кількість повторень, Sum –  

                  загальна кількість бабусь, що  

                  приїхали на курси} 

   Place,k,l:word; {k – кількість рядів в  

                    комп’ютерному класі, l –  

                    кількість комп’ютерів в  

                    кожному ряду, Place – кількість  

                    місць, що вистачила для бабусь} 

Begin 

 Sum:=0;      

 Write(‘Введіть кількість рядів мотоциклів, що  

        нарахували пішоходи:  ’);

 Readln(N);

 For I:=1 to N do  Sum:=Sum+I;

 Writeln(‘Кількість бабусь, що приїхала на курси ’,Sum);

 Writeln(‘Кількість комп”ютерів на курсах ’,k*l);

 If Sum < k*l Then writeln(‘Бабусі не змогли зайняти всі місця.’)

 Else writeln(‘Бабусі зайняли всі місця.’);

 Place:=Sum – k*l;

 If Place>0

 Then writeln(‘Бабусям не вистачило ’,Place,’місць.’);

 Read; {Затримка зображення на екрані} 

End

Задача №3.
Умова: Знайти значення
(1 + 0.1)(2 + 0.2)...(9 + 0.9)
В даному випадку, очевидною що кількість повторів буде дорівнювати 9, тобто результуюча програма буде мати вигляд:

Program Example_189_2;

Var I:word;       {I – параметр циклу} 

   Rez:real;     {Rez – результат обчислень} 

Begin 

 Rez:=1;    {Початкове значення дорівнює 1, тому що  

             результат являється накопиченням  

             добутку}      

 For I:=1 to 9 do  Rez:=Rez*(I+0.1*I);

 Writeln(‘Rez= ’,Rez:8:2);

 Read; {Затримка зображення на екрані} 

End.

Задача 4.
Умова: Дано ціле
n. Визначити n!
Відомо, що
n! (вимовляється, як н-факторіал) - це добуток всіх натуральних чисел від 1 до n. Тому вихідна програма має вигляд:

Program Example_190_1;

Var I,n:word;       {I – параметр циклу}  

   Factorial:longint;    {Factorial – результат  

                          обчислень} 

Begin 

 Factorial:=1; {Початкове значення дорівнює 1, тому  

                що результат являється накопиченням  

                добутку}      

 Write(‘Введіть значення n: ’);

 Readln(n);

 For I:=1 to n do  Factorial:=Factorial*I;

 Writeln(‘Factorial= ’,Factorial:8:2);

 Read; {Затримка зображення на екрані} 

End.

Задача №190(3).
Умова: Дано ціле n. Визначити
1*3*5*7*…*(2
n+1).
Очевидно, що дана програма відрізняється від попередньої тільки тим, що необхідно знайти добуток тільки непарних натуральних чисел від 1 до
n.

Program Example_190_3;

Var I,n:word;       {I – параметр циклу}  

   Rez:longint;    {Rez – результат обчислень} 

Begin 

 Rez:=1;       {Початкове значення дорівнює 1, тому  

                що результат являється накопиченням  

                добутку}      

 Write(‘Введіть значення n: ’);

 Readln(n);

 For I:=0 to n do  Rez:=rez*(2*I+1);

 Writeln(‘Rez= ’,Rez:8:2);

 Read; {Затримка зображення на екрані} 

End.

Задача №190(6).
Умова: Дано ціле n. Визначити
Sin(1)*sin(1+2)*…*sin(1+2+…+
n).
Відміна даної програми від всіх попередніх полягає в тому, що в даному випадку ми маємо два накопичення: по-перше, відбувається накопичення суми, що знаходиться під знаком sin, а, по-друге, сам результат являється накопиченням добутку сінусів. Тому для зберігання цих двох накопичень необхідно мати дві змінні. Результуюча програма має наступний вигляд:

Program Example_190_6;  

Var I,n:word;         {I – параметр циклу}  

   Rez,Sum:longint;  {Rez – результат обчислень,  

                      Sum – проміжне накопичення} 

Begin 

 Rez:=1;       {Початкове значення дорівнює 1, тому  

                що результат являється накопиченням  

                добутку}      

 Sum:=0;       {Початкове значення дорівнює 0, тому  

                що результат являється накопиченням  

                суми}      

 Write(‘Введіть значення n: ’);

 Readln(n);

 For I:=1 to n do   

   Begin 

      Sum:=Sum+I;          {Накопичення суми} 

      Rez:=Rez*sin(Sum);   {Накопичення добутку} 

   End;

 Writeln(‘Rez= ’,Rez:8:2);

 Read; {Затримка зображення на екрані} 

End.

Задача №191(6).
Умова: За даним натуральним значенням змінної n обчислити: Для розв'язку цієї задачі необхідно виконати обчислення, починаючи з самого вкладеного кореня. Кожен наступний крок обчислюється наступним чином: до попереднього результату додається двійка і з отриманої суми береться квадратний корінь.
Програма, що виконує описані обчислення, наведена нижче:

Program Example_191_6;  

Var I,n:word;         {I – параметр циклу}  

   Rez:real;         {Rez – результат обчислень}  

Begin  

 Rez:=0;       {Початкове значення дорівнює 0, тому  

                що результат являється накопиченням  

                суми}      

 Write(‘Введіть значення n: ’);

 Readln(n);

 For I:=1 to n do   

   Begin 

      Rez:=sqrt(Rez+2);

   End;

 Writeln(‘Rez= ’,Rez:8:2);

 Read; {Затримка зображення на екрані} 

End.

Задача №210.
Умова: Дано ціле число n, яке набуває значень шкільних оцінок. Визначити відповідною кількістю звукових сигналів, яка саме оцінка була задана ("1" - один звуковий сигнал, "2" - два звукових сигнали і т.д.). Якщо ж задане число не відповідає значенню шкільної оцінки - подати довгий звуковий сигнал.
Звуковий сигнал в цій програмі можна подавати за допомогою процедур керування вбудованим динаміком
Sound та nosound. Нагадуємо, що перша з них викликає звучання ноти заданої частоти (частота вказується в дужках після процедури), а друга виключає динамік. Тривалість звучання та паузи між звуками можна задавати процедурою delay, в якості параметра до якої задається змінна time (значення цієї змінної можна задати командою присвоєння або введенням з клавіатури).

Program Example_210;

Var I,n:word;   {I – параметр циклу, n – оцінка учня}  

   Time:word;

Begin 

 Write(‘Введіть Вашу оцінку: ’);

 Readln(n);

 Time:=10000;     {Значення цієї змінної залежить  

                  від характеристик комп’ютера, за  

                  яким працює учень, і може бути  

                  підібрана практичним шляхом} 

 If (n<1) or (n>12)

 Then  

   begin 

     writeln(‘Ви помилились, такої оцінки не  

            існує’);

     sound(200);

   end 

 Else 

   For I:=1 to n do   

     Begin 

       Sound(200);

       Delay(time);

       Nousound;

       Delay(time);

     End;

 Read; {Затримка зображення на екрані} 

End.

Домашнє завдання:

  •  Повторити теоретичний матеріал, пов'язаний з роботою циклу з параметром;
  •  Задачі №189 (4), №190(3), №191(1), №191(7), №211, №178, №188.

4


 

А также другие работы, которые могут Вас заинтересовать

11766. Тема 1. Двоїстий та модифікований симплекс-метод. Блочні задачі ЛП 876 KB
  Двоїстий та модифікований симплексметод. Блочні задачі ЛП Пряма та двоїста задачі лінійного проґрамування. Зв’язок між розв’язками прямої та двоїстої задач. Отримання оптимального розв’язку двоїстої задачі за допомогою симплексметоду. Економічна інтерп
11767. Транспортна задача лінійного проґрамування 656.5 KB
  Транспортна задача лінійного проґрамування. Математична та змістовна постановка транспортної задачі. Методи знаходженння початкового опорного плану транспортної задачі. Метод потенціалів. Розв’язування транспортних задач з ускладненнями в постановці....
11768. НЕЛІНІЙНЕ ПРОГРАМУВАННЯ. ГРАФІЧНИЙ МЕТОД 609.85 KB
  на тему НЕЛІНІЙНЕ ПРОГРАМУВАННЯ. ГРАФІЧНИЙ МЕТОД. Мета роботи: ознайомлення з задачами нелінійного програмування набуття навиків їх розв’язку та аналізу графічним методом вивчення та оволодіння навичками адресації та роботи з формулами в таблицях в Еxcel вивчення т
11769. Розв’язання лінійних оптимізаційних задач за замовленням та при умовних вхідних даних 132.69 KB
  Звіт до лабораторної роботи № 6 Розв’язання лінійних оптимізаційних задач за замовленням та при умовних вхідних даних. з курсу Математичні методи дослідження операцій Мета роботи: Вивчити методологію розв’язання задач з призначенням критері
11770. Розв’язання транспортних задач лінійного програмування 87.87 KB
  Звіт до лабораторної роботи № 7 Розв’язання транспортних задач лінійного програмування. з курсу Математичні методи дослідження операцій Мета роботи: Вивчити особливості розв’язування транспортних задач за допомогою Solver. 1.1 Теоретичні відомості. П
11771. Розв’язання та аналіз задач булевого програмування за допомогою Excel 86.2 KB
  Звіт до лабораторної роботи № 9 Розв’язання та аналіз задач булевого програмування за допомогою Excel з курсу Математичні методи дослідження операцій Мета роботи: Вивчити метод розв’язання задач булевого програмування в Solver. Теоретичні відомості. Рішен...
11772. Розв’язання цілочисельних задач ЛП за допомогою Excel. Графічне представлення та порівняння розв’язків цілочисельної та неперервної задачі 76.8 KB
  Звіт до лабораторної роботи № 8 Розв’язання цілочисельних задач ЛП за допомогою Excel. Графічне представлення та порівняння розв’язків цілочисельної та неперервної задачі з курсу Математичні методи дослідження операцій Мета роботи: Вивчити особливості предст...
11773. Решение задачи целочисленного ЛП с помощью динамического программирования 481.5 KB
  Курсовая работа по дисциплине МАТЕМАТИЧЕСКИЕ МЕТОДЫ ИССЛЕДОВАНИЯ ОПЕРАЦИЙ на тему Решение задачи целочисленного ЛП с помощью динамического программирования АННОТАЦИЯ Курсовая работа содержит 40 страниц 8 формул 17 таблиц 10 литературных источников. В ...
11774. Розв’язання несумісних задач лінійної оптимізації в діалоговому режимі 199.06 KB
  Звіт до лабораторної роботи №4 на тему: Розв’язання несумісних задач лінійної оптимізації в діалоговому режимі З курсу: Математичні методи дослідження операцій Мета: Знайти оптимальний розв’язок розподілу ресурсів за умови первинної наявності несумісн