14143

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

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

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

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

Украинкский

2013-05-21

66 KB

5 чел.

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

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

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

Задача №180.
Умова: Коли Василині Премудрій виповнилося 18 років, Чахлик Невмирущий вирішив взяти її заміж. Василина запитала Чохлика, скільки у нього скринь із золотом. Чахлик сказав, що в нього зараз n скринь і щороку додається ще по m скринь. Василина пообіцяла, що вийде заміж тоді, коли у Чохлика буде k повних скринь із золотом. Скільки років буде тоді нареченій?

Program Example_180;

Var m,n,k:word;   {n – початкова кількість скринь з  

                  золотом, m – щорічний “прибуток”  

                  Чахлика Невмирущого, k – “потреби”  

                  Василини Премудрої} 

 Sum,Years:word; {Sum – щорічне накопичення Чахлика  

                  Невмирущого, Years – вік Василини  

                  Премудрої} 

Begin 

 Write(‘Введіть початкову кількість скринь з золотом:  ’);

 Readln(n);

 Write(‘Введіть щорічний прибуток Чахлика:  ’);

 Readln(m);   

 Write(‘Введіть “потреби” Василини Премудрої:  ’);

 Readln(k);

 Sum:=n;      {Початковий “капітал” Чахлика} 

 Years:=18;   {Початковий вік Василини} 

 While Sum<=k do 

  Begin 

    Sum:=Sum+m;

    Years:=Years+1;

  End;

 Writeln(‘Василині вже виповнилося ’,Years,’ років.‘);   

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

End.

Задача №181.
Умова: Капосний папуга навчився висмикувати у дідуся Василя волосся, яке ще залишилось у того на голові. Почавши з однієї волосини, він щодня збільшував порцію вдвічі. Через скільки днів дідусеві не знадобиться гребінець, якщо спочатку в нього на голові було аж N волосин.

Program Example_181;

Var N,Sum:word;  {N – початкова кількість волосся у  

                дідуся Василя на голові, Sum –  

                щоденна кількість волосся на голові} 

   Day,K:word;  {Day – кількість днів, протягом яких  

                 папуга знущався над дідусем } 

Begin 

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

       голові у дідуся Василя:  ’);

 Readln(N);

 Sum:=N;

 Day:=0;         {Початок знущання} 

 K:=1;           {Початкова кількість вирваного  

                  волосся} 

 While Sum>0 do 

   Begin 

     Sum:=Sum-K;

     K:=2*K;      {Кожен день кількість вирванного  

                   волосся подвоювалась} 

     Day:=Day+1;

   end;

 writeln(‘У дідуся волосся закінчилося на  ’,Day,’-й день.’);

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

End.

Задача №197(2).
Умова: Дано натуральне число n. Визначити суму цифр в числі.
Для розв'язку цієї задачі використаємо такий штучний прийом: Щоб знайти суму цифр, ми повинні "брати" цифри по одній і додавати їх одна до одної, а потім використану цифру "відкидати". На мові Паскаль це нам дозволять зробити операції ділення націло та знаходження залишку від цілочисельного ділення. Так, при діленні числа націло на 10 остання цифра числа буде "відкидатися", а при знаходженні залишку від ділення націло ми виділяємо останню цифру числа. Тобто:
123 div 10 = 12
3928 mod 10 = 8.
Процес буде повторюватись, доки від числа "нічого не залишиться", тобто, доки воно не перетвориться на нуль. Програма, що реалізує описаний алгоритм має наступний вигляд:

Program Example_197_2;

Var n:longint;       {N – дане число} 

   Sum:byte;        {Sum – сума цифр числа} 

Begin 

 Sum:=0;    {Сума цифр числа спочатку дорівнює 0}      

 Write(‘Введіть ціле число:  ’);

 Readln(N);

 N:=abs(N);

 While N>0 do  

   Begin 

    Sum:=Sum+N mod 10;  {Знаходження суми цифр} 

    N:=N div 10;        {“Відкидання” останньої  

                         цифри числа } 

   End;

 Writeln(‘Sum= ’,Sum);

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

End.

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

Program Example_200_2;

Var n:word;         {n – шукане число}  

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

                    граничне значення} 

Begin 

 n:=1;           {Початкове значення n - 1}      

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

 Readln(a);

 Rez:=0;         {Початкове значення суми} 

 While Rez<=a do 

   Begin 

     Rez:=Rez+1/n;

     n:=n+1;

   end;  

 Writeln(‘n= ’,n);

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

End.

Задача №203(2). Умова: Знайти найбільше додатне число n, для якого виконується умова: .
Очевидно, що починаючи зі значення
n=1 і збільшуючи його на одиницю після кожного кроку, ми знайдемо таке ціле число, при якому вказана нерівність буде вірною.

Program Example_203_2;

Var n:word;       {n – шукане число}  

Begin 

 n:=1;

 While –4*n+841*sqrt(n)+3>=0 do n:=n+1;

 Writeln(‘n= ’,n);

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

End.

Задача №204.
Умова: Дано ціле число m>1. Знайти найбільше число k, при якому виконується умова 4k < m.

Program Example_204;  

Var m,k,Rez:longint;    {Rez – обчислення степеню 4} 

Begin 

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

 Readln(m);

 Rez:=1;

 k:=0;

 While Rezdo 

  Begin 

    k:=k+1;

    Rez:=Rez*4;

  End;

 Writeln(‘k= ’,k);

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

End.

Задача №208(1).
Умова: Під час обчислення результатів деяких експериментів виникає необхідність отримання результату із заданою похибкою. Нехай результатом є нескінченна сума, що задається певною формулою, і відома похибка e (e > 0) для знаходження наближеного значення результату. Будемо вважати, що необхідна точність досягнута, коли додавання наступного доданку змінює суму на величину, меншу за e. Обчислити:

Program Example_208_1;  

Var i:word;           

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

                         Epsilon - похибка}  

Begin 

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

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

                суми}      

 Write(‘Введіть значення похибки (Е>0): ’);

 Readln(Epsilon);

 i:=1;

 While 1/sqr(i)>Epsilon do 

   Begin 

      Rez:=Rez+1/sqr(i)  

      i:=i+1;

   End;

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

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

End.

Задача №212.
Умова: Обчислити значення числа p, використовуючи формулу
Визначити, яка кількість доданків дає значення числа p з точністю до 3 знаків.
Для організації циклу з передумовою в цій задачі необхідно мати еталон числа p для порівняння з нескінченною сумою. Візьмемо в якості цього еталону значення вбудованої функції
Pi. Крім того, за умовою задачі нам необхідно отримати результат з точністю до третьої цифри після коми. Пропоную для цього стандартне число Pi і отриману нескінченну суму помножити на число 1000 та округлити результат за допомогою функції round (отриману суму, крім того, необхідно ще помножити на 4, так як сама сума являється чвертю числа p).
Зверніть увагу також на те, що в нескінченній сумі доданки, що стоять на парних місцях додаються зі знаком "+", а доданки на непарних місцях - віднімаються від суми. Тобто в залежності від номера доданку (парний чи ні) ми організовуємо знакочергування у нескінченній сумі. Результуюча програма для обчислення числа p за допомогою нескінченної суми наведена нижче:

Program Example_212;

Var i,n:word;     {іпараметр циклу, n – кількість  

                  доданків}  

   Rez_Pi:real;  {Rez_Pi – обчислене значення числа  

                  Pi} 

Begin 

 Rez_Pi:=0;

 i:=1;     {i – значення знаменника першого доданка} 

 n:=0;     {n – доданків ще нема} 

 while round(pi*1000)=round(Rez_Pi*4000) do 

     Begin 

        If n mod 2 = 0

        Then Rez_Pi:=Rez_Pi+1/i

        Else Rez_Pi:=Rez_Pi-1/i;

        i:=i+2;

        n:=n+1;

     End;

 Writeln(‘Кількість необхідних доданків - ’,n);

 Writeln(‘Порівняйте значення Pi: ’);

 Writeln(‘Результат обчислень програми: ’,Rez_Pi:8:3);

 Writeln(‘Вбудована функція: ’,Pi:8:3);

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

End.

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

  •  Повторити теоретичний матеріал, пов'язаний з роботою циклу з параметром;
  •  Задачі №185, №188, №197(3), №198(3), №200(1), №203(3), №205, №208(2).

4


 

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

81458. Механизмы регуляции цитратного цикла. Анаболические функции цикла лимонной кислоты. Реакции, пополняющие цитратный цикл 153.56 KB
  Регуляция цитратного цикла. В большинстве случаев скорость реакций в метаболических циклах определяется их начальными реакциями. В ЦТК важнейшая регуляторная реакция - образование цитрата из оксалоацетата и ацетил-КоА, катализируемая цитратсинтазой.
81459. Основные углеводы животных, их содержание в тканях, биологическая роль. Основные углеводы пищи. Переваривание углеводов 160.55 KB
  Переваривание углеводов Гликоген главный резервный полисахарид высших животных и человека построенный из остатков Dглюкозы. Его молекула построена из ветвящихся полиглюкозидных цепей в которых остатки глюкозы соединены α1 4гликозидными связями. При гидролизе гликоген подобно крахмалу расщепляется с образованием сначала декстринов затем мальтозы и наконец глюкозы. Крахмал разветвлённый полисахарид состоящий из остатков глюкозы гомогликан.
81460. Глюкоза как важнейший метаболит углеводного обмена. Общая схема источников и путей расходования глюкозы в организме 139.63 KB
  Общая схема источников и путей расходования глюкозы в организме Глюкоза является альдогексозой. Циклическая форма глюкозы предпочтительная в термодинамическом отношении обусловливает химические свойства глюкозы. Расположение Н и ОНгрупп относительно пятого углеродного атома определяет принадлежность глюкозы к D или Lряду. В организме млекопитающих моносахариды находятся в Dконфигурации так как к этой форме глюкозы специфичны ферменты катализирующие её превращения.
81461. Аэробный распад — основной путь катаболизма глюкозы у человека и других аэробных организмов. Последовательность реакций до образования пирувата (аэробный гликолиз) 220.81 KB
  Все ферменты катализирующие реакции этого процесса локализованы в цитозоле клетки. Реакции аэробного гликолиза Превращение глюкозо6фосфата в 2 молекулы глицеральдегид3фосфата Глюкозо6фосфат образованный в результате фосфорилирования глюкозы с участием АТФ в ходе следующей реакции превращается в фруктозо6фосфат. В ходе этой реакции катализируемой фосфофруктокиназой фруктозо6фосфат превращается в фруктозо16бисфосфат. Продукты реакции альдольного расщепления изомеры.
81462. Распространение и физиологическое значение аэробного распада глюкозы. Использование глюкозы для синтеза жиров в печени и в жировой ткани 103.86 KB
  Использование глюкозы для синтеза жиров в печени и в жировой ткани. Основное физиологическое назначение катаболизма глюкозы заключается в использовании энергии освобождающейся в этом процессе для синтеза АТФ. Энергия выделяющаяся в процессе полного распада глюкозы до СО2 и Н2О составляет 2880 кДж моль.
81463. Анаэробный распад глюкозы (анаэробный гликолиз). Гликолитическая оксиредукция, пируват как акцептор водорода. Субстратное фосфорилирование. Распространение и физиологическое значение этого пути распада глюкозы 121.38 KB
  Реакции анаэробного гликолиза При анаэробном гликолизе в цитозоле протекают все 10 реакций идентичных аэробному гликолизу. Восстановление пирувата в лактат катализирует лактатдегидрогеназа реакция обратимая и фермент назван по обратной реакции. С помощью этой реакции обеспечивается регенерация ND из NDH без участия митохондриальной дыхательной цепи в ситуациях связанных с недостаточным снабжением клеток кислородом. Таким образом значение реакции восстановления пирувата заключается не в образовании лактата а в том что данная...
81464. Биосинтез глюкозы (глюконеогенез) из аминокислот, глицерина и молочной кислоты. Взаимосвязь гликолиза в мышцах и глюконеогенеза в печени (цикл Кори) 215.46 KB
  Глюконеогенез процесс синтеза глюкозы из веществ неуглеводной природы. Его основной функцией является поддержание уровня глюкозы в крови в период длительного голодания и интенсивных физических нагрузок. Эти ткани могут обеспечивать синтез 80100 г глюкозы в сутки.
81465. Представление о пентозофосфатном пути превращений глюкозы. Окислительные реакции (до стадии рибулозо-5-фосфата). Распространение и суммарные результаты этого пути (образование пентоз, НАДФН и энергетика) 135.5 KB
  Окислительные реакции до стадии рибулозо5фосфата. Распространение и суммарные результаты этого пути образование пентоз НАДФН и энергетика Пентозофосфатный путь называемый также гексомонофосфатным шунтом служит альтернативным путём окисления глюкозо6фосфата. Пентозофосфатный путь состоит из 2 фаз частей окислительной и неокислительной.
81466. Свойства и распространение гликогена как резервного полисахарида. Биосинтез гликогена. Мобилизация гликогена 173.81 KB
  Биосинтез гликогена. Мобилизация гликогена. Таким образом в молекуле гликогена имеется только одна свободная аномерная ОНгруппа и следовательно только один восстанавливающий редуцирующий конец.