17098

Розробка програм з циклічними обчислювальними процесами

Лабораторная работа

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

Лабораторна робота № 10 Тема: Розробка програм з циклічними обчислювальними процесами Ціль роботи: Вивчити написання програм мовою С використовуючи ітераційні циклічні методи освоїти основні оператори що підтримують роботу з циклами for while do... while. Навчитися писа...

Украинкский

2013-06-29

127.5 KB

2 чел.


Лабораторна робота № 10

Тема: Розробка програм з циклічними обчислювальними процесами

Ціль роботи: Вивчити написання програм мовою С, використовуючи ітераційні (циклічні) методи, освоїти основні оператори, що підтримують роботу з циклами (for, while,  do... while). Навчитися писати програми, використовуючи дані оператори.

Обладнання: ПК,ПО Borland C++

Теоретичні відомості

Кожен оператор С закінчується оператором (;), що є порожнім оператором. Цикли, ітераційні процедури дозволяють виконувати окремі чи оператори блоки операторів (складені оператори {…})... Число повторів визначається вираженням у дужках, значення якого порівнюється з (-припинення циклу). Цикли бувають з перевіркою значення вираження перед початком виконання тіла циклу (із предусловием), по закінченню виконання тіла (з постумовою) чи усередині тіла циклу. У С визначено три види операторів циклу: оператор циклу з предумовою - while, оператор циклу з постумовою do... while і оператор циклу for. Розглянемо ці операторы детально:

Цикл while має наступний формат:

while (<вираження>) <оператор>

Умова виконання ітерації в циклі while попередньо перевіряється й у випадку істинності вираження (не дорівнює ) виконуються ті оператори, що описані в тілі циклу. У противному випадку цикл закінчується, і програма продовжує своє виконання з того місця, де закінчилося тіло циклу. Якщо тіло циклу містить трохи операторів, воно обмежується операторними дужками:  "{"   і   "}" і є складеним оператором.

Перервати виконання циклу можна, використовуючи оператори break, goto, return. Нижче продемонстровано два приклади роботи з циклом while  у виді фрагментів програм.

Перший приклад демонструє застосування операторів while і break, що перекриває цикл. Другий приклад показує використання циклу while для перевірки відповіді, що вводиться з клавіатури.

Приклад 1

Приклад 2

int i=10,k,s =;

printf ("увести крок збільшення до: "); scanf("%i",&k );

while (i)  //виконувати цикл, поки i не

// дорівнює

{ s+=k;   // збільшити s на k

i- - ;    // зменшити i на 1

if (i=k) break;  //вийти, якщо виконається

// умова: i=k

}...

...

char ch =’a’;

do            // почати цикл do while

{ printf("\n  Відповідайте yes чи no (y/n):");

scanf(ch!=’у' &&ch!= 'n');  // виконувати

цикл доти, поки не буде натиснута

// буква ‘у' чи ‘n’

Оператор циклу do while() є циклом з постумовою. У цьому випадку тіло циклу завжди виконається хоча б один раз.

Формат оператора циклу наступний:

do <оператор>

while(<вираження>);

Тілом циклу може бути один чи трохи операторів (складений оператор). Нижче приведені аналогічні приклади реалізації циклу з постумовою.

Приклад 1

Приклад 2

int i=10, k, s=;

 printf ("увести крок збільшення до: "); scanf("%i", &k);

 do                     // почати цикл do while

 { s+=k;       //збільшити s на k

   i-- ;        //зменшити i

   if (i=k) break; //вийти, якщо
// виконається умова
: i= =k

 while (i);  // виконувати цикл, поки i
//
не дорівнює  

char ch;

 do                   //почати цикл do while

printf ("\n Відповідайте yes чи no (y/n):");

scanf("%c",&ch);

 while (ch!='у' && ch!='n'); // виконувати //цикл доти, поки не буде натиснута //буква 'у' чи 'n'

Оператор циклу for є найбільш зручним і могутнім засобом організації циклічних обчислень у С.

Формат циклу for:

for([<вираження1>];[<вираження2>];[<вираження3>]) <оператор>

де : <вираження1> - робить ініціалізацію тих перемінних, котрі будуть безпосередньо змінюватися в циклі, зокрема, задається початкове значення перемінн-лічильника

<вираження2> - визначає умову виходу з циклу. При рівності його значення цикл переривається;

<вираження3> - це вираження задає зміну на кожнім кроці перемінних, ініціалізованих у <вираженні1>. Можна задавати також зміна інших перемінних, не зв'язаних з <вираженням1>.

Кожне з описаних виражень може не бути присутнім. Оператор циклу for, заданий як for(;;){<тіло_циклу>}, є нескінченним циклом.

Алгоритм роботи оператора циклу for ():

  1.  Обчислюється перше вираження (якщо воно присутнє).
  2.  Обчислюється друге вираження (якщо воно присутнє), перевіряється умова закінчення циклу:(<вираження 2>= = “ Ложно ”) тобто Якщо воно не дорівнює  (“Істинно”) – відбувається перехід до пункту 3, інакше вихід з циклу.
  3.  Виповнюється тіло циклу.
  4.  Обчислюється третє вираження, якщо воно присутнє.
  5.  Перехід до пункту 2.

Поява в будь-якім місці тіла циклу оператора continue - приводить до припинення виконання операторів у тілі циклу 4 негайному переходу до кроку 2. 

Вихід з циклу можливий аналогічно while за допомогою операторів break, goto, return.

Приклад 1 (варіант 1)   (варіант 2)

#include <stdio.h>

void main (void)

{// Програма виводить парні числа

//у діапазоні від 100 до 0, у порядку
// убування.

 For (int i=100;i>=0;i-=2) printf("\n%d",i);

}   i - =2

f r (i=100; i>=0; i--)

if (i%2= =1) continue;  o // оператор

// continue перериває поточну

// ітерацію

else printf("\n%d",i);

Для демонстрації гнучкості оператора for перепишемо приклад у наступному виді (варіант 3):

for(int i=100;i>=0; printf("\n%d",i), i - =2);

Приклад

/*    ЗАНЯТТЯ N 4

  Розробив  ...........

Рядок символів записується в зворотному порядку з

застосуванням різних операторів організації циклів */

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

# define N 23

main()

{int t,b;

 char string[]="\"Ініціалізація рядка\"";

 char m;

 clrscr();

    //  Цикл for -із предумовою

 printf("виведення вихідного рядка\n");

 for (t=0;t<N;t++)

 printf("%c ",string[t]);

 for (t=0,b=N-2;t<(N-1)/2;t++,b--)

 {m=string[t];

  string[t]=string[b];

  string[b]=m;

 }

 printf("\nВывод рядка в зворотному порядку\n");

 for (t=0;t<N;t++) printf("%c ",string[t]);

 printf("\nВвод нового рядка -y, немає-n:\t");

 m=getche();

 if(m!='n')

new_str: scanf("%s",string);

 else       printf("\n");

  //   Цикл while -із предумовою

 t=0;

 while(string[t]!='\0')

  {printf("%c",string[t]);

   t++;

  }

  printf("\nКоличество символів =%2d\n",t);

  //    Цикл d0...while  -з постумовою

 printf("виведення рядка в зворотному порядку\n");

 b=t-1;t=0;

 do

 {m=string[t];

  string[t]=string[b];

  string[b]=m;

  t++;b--;

 }while(t<b);

 printf("%s ",string);

 printf("\nВвод нового рядка -y, немає-n:\t");

 m=getche();

 if(m=='у') goto new_str; //new_str -мітка

 else   getch();

      }

     /*  виведення вихідного рядка

     " И н и ц и а л и з а ц и я   с т р о к і "

  виведення рядка в зворотному порядку

     " і к о р т с   я и ц а з и л а и ц и н И "

  Уведення нового рядка -y, немає-n:    n

     "икортс яицазилаицини"

  Кількість символів =22

виведення рядка в зворотному порядку

     "Ініціалізація рядка"

  Уведення нового рядка -y, немає-n:    y

     qwert12345

  Кількість символів =10

виведення рядка в зворотному порядку

     54331trewq

  Уведення нового рядка -y, немає-n:    n      */

Приклад програми на С++

Скласти програму для збереження й обробки інформації яка включає різні типи даних. Індивідуальне завдання приведене в таблиці 3.2.

Варіант

Номер і зміст даних

1

2

3

4

5

6

7

6

Назва магазина

Вид товару

Адреса

Час роботи

Кількість продавців

Номер магазина

#include<stdio.h>

void main()

{char namem[20][20];

char namet[20][20];

char adres[20][20];

char time[20][20];

int nump[20];

int numm[20];

int i,n;

printf("Введите число магазинов (не больше 20): ");

scanf("%d", &n);

i=0;

while(i<n)

{printf("Магазин %d\n", i+1);

printf("Название магазина: ");

scanf("%20s", namem[i]);

i++;

}

i=0;

do

{printf("Магазин %d\n", i+1);

printf("Вид товара: ");

scanf("%20s", namet[i]);

i++;

} while(i<n);

for(i=0;;i++)

{printf("Магазин %d\n", i+1);

if(i>=n) break;

printf("Адрес: ");

scanf("%20s", adres[i]);

}

for(i=0;;i++)

{printf("Магазин %d\n", i+1);

if(i>=n) goto l;

printf("Времьа работы: ");

scanf("%20s", time[i]);

}

l:

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

{printf("Магазин %d\n", i+1);

printf("Количество продавцов: ");

scanf("%d", &nump[i]);

}

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

{printf("Магазин %d\n", i+1);

printf("Номер магазина: ");

scanf("%d", &numm[i]);

}

printf("-------------------------\n");

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

{printf("     Магазин %d\n", i+1);

printf("Название магазина: ");

printf("%s\n", namem[i]);

printf("Вид товара: ");

printf("%s\n", namet[i]);

printf("Адрес: ");

printf("%s\n", adres[i]);

printf("Времйа работы: ");

printf("%s\n", time[i]);

printf("Количество продавцов: ");

printf("%d\n", nump[i]);

printf("Номер магазина: ");

printf("%d\n", numm[i]);

}

}

Хід роботи

  1.  За індивідуальним завданням викладача скласти програму з різними варіантами застосування операторів циклу: while, do…while,for... Передбачити додаткові можливості виходу з циклів (оператори break, goto).
  2.  Набрати програму на комп'ютері, виявити й усунути помилки.
  3.  Ознайомитися з роботою операторів циклу в мові С.
  4.  Одержати результати роботи програми.
  5.  Оформити звіт і зробити Захист роботи про пророблену роботу, вивчивши контрольні питання по темі.

Вимоги до змісту звіту приведені в лабораторній  роботі№1.

Індивідуальне завдання до лабораторної роботи №4

Знайти суму ряду

  y = , де    a  x  b,    x = c.

Варіанти завдань приведені в таблиці 4.1.

Таблиця 4.1 - індивідуальне завдання

Вар.

f1

f2

A

b

c

1

3x-1

e-1/x+x/(x+1)

3

 5

0,5

2

X3-3x2

x4+2x2+3

1

 3

0,2

3

e-x+4x

0,6

4,2

0,3

4

Sin2(x+4x3)

(x+2x3)

0,5

4,8

0,2

5

Xsinx3-ln2x

arctgx/4+e-x+2

2

6,3

0,4

6

X4-cosx

tgx+2x

1

5

0,5

7

2x+sin2x

5

8

0,3

8

ln(4x+8)

e-x+sin2x

1

4

0,2

9

x3ln(2x)

4x2+6x3-2

0,5

6

0,3

10

x2+sin3x

cos3x+e-2x

-2

3

0,4

11

xe-x

sin4x+x3

1,5

5

0,3

12

arctgx/5+2x

0,6

4

0,2

13

x2/(3x+2)

sin2( x+1)

0,5

5,2

0,3

14

3x/(x-2)

1,2

6,3

0,4

15

x3x+1+8x

|x-8|+sinx

4

7,5

0,3

16

x4+ex+3

xarctg(x/3)

2

6,4

0,2

17

ln2(x+4)

sin3(x/5)

1

6,8

0,3

18

ex-2+x3

x-ln|x-1|

0

4

0,4

19

2cos(x+3)

4x2/(3+x3)

2

5

0,3

20

)

tg2(x+4)-e-x

1

6

0,4

21

3+2sin2(x-3)

4+x/10

2

7

0,5

22

ln(1(1+2x)

sin2(4x+1)

1,5

6,8

0,4

23

+e-x

5arctg(4x)

2

7

0,5

24

arcsin(x+2)

3(x-4)/(x2+1)

3

8

0,2

25

e|x+2|

ln2(x+4)

-2

6

0,3

26

(4-x)cos2x

+e-3x

1

7

0,4

27

sinx4-4

-2

5

0,2

28

2x+4+cos2x

ln|x+8|

-4

2

0,5

29

(x+2)/sin3x

1

4

0,3

30

ex+3+4x2

arcsinx3

2

5

0,2

Контрольні запитання

  1.  За допомогою яких операторів можна достроково завершувати виконання операторів циклу?
  2.  Які вираження можна використовувати в операторі циклу?
  3.  Як інтерпретуються значення виражень операторів циклу? Якого типу можуть бути ці вираження?
  4.   Чи можна записати наступні оператори: for (; ;); while (); do while(i--); for (; i && j ; i++, j- -); for (int i, k ; ; i+=2) j++ ; k-=5;?: Поясните, чому чи можна не можна ?
  5.  Поясните результат роботи приведених операторів.
  6.  У чому різниця в роботі операторів із предумовою і з постумовою?
  7.  Яке призначення виражень в операторі for?
  8.  Навіщо використовуються складені оператори (операторні дужки)?
  9.  За допомогою якого оператора можна припинити виконання поточної ітерації в циклі?
  10.  Назвіть порядок обчислення й інтерпретації виражень в операторі for.
  11.  Поясните роботу операторів у прикладах.


 

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

53633. Прыжки в длину с разбега. Метание в горизонтальную цель 60.5 KB
  а ходьба в приседе руки на коленях. б ходьба на пятках руки в стороны. в ходьба на носках руки на поясе. г ходьба на внешней стороне стопы руки за голову.
53634. Совершенствование технических действий в баскетболе 55 KB
  Задачи урока: образовательные: совершенствовать технику ловлипередачи мяча совершенствовать умения в бросках мяча совершенствовать технику ведения мяча; развивающие: развивать двигательные качества ловкость быстроту реакции координацию движений; воспитательные: воспитывать у обучающихся чувства коллективизма взаимовыручки дружбы. Тип учебного занятия: урок закрепления Формы работы: фронтальная групповая Инвентарь и оборудование: баскетбольные мячи конусы Место проведения: спортивный зал. ОРУ с баскетбольными мячами на месте:...
53635. Волейбол 79 KB
  Совершенствование в технике приёма мяча с подачи и передача мяча. Равномерный бег в колонне по одному: а бег со сменой лидера; б бег с выносом прямых ног вперёд и назад; в бег с поворотами на 3600 ; в бег спиной вперёд; б бег змейкой по линиям площадки; в перемещения в средней стойке волейболиста приставными шагами левым правым боком с имитацией руками передачи мяча двумя сверху; гбег в колонне по одному у баскетбольного щита прыжок вверх касание рукой щита. Упражнения с набивным мячом 1кг 1 подбрасывание мяча вверх...
53636. Food and clothes. 4-й класс 54 KB
  Last lesson we spoke about clothes and food. I think you know much about these topics. Prove it speaking about your own food tastes. Look at these cards and answer your classmates’ questions. Work in a chain, please.
53637. Charles Baudelaire “Linvitation au voyage” 47 KB
  Bonjour, mes amis! Enchantè de vous voir. Assejez-vous, s’il vous plaît! Comment ça va? Qui est absent aujourd'hui? Qui est de service? Quelle date sommes-nous aujourd'hui? Quelle jour est-ce? Quelle temps fait-il? Bien.
53638. БАСКЕТБОЛ 110.5 KB
  Упражнение на осанку с мячами ходьба на носках руки мячом вверху ходьба на пятках мяч за головой ходьба в полуприсяде мяч впереди на вытянутых руках 20 шаг. Следить за осанкой подбородок поднять руки выпрямить Контроль осанки соблюдать дистанцию 2 м. 5 Ходьба 12 руки с мячом вверх вдох 34 руки с мячом вниз выдох 56 раз Восстановление дыхания. ИП основная стойка ОС руки в замок перед грудью 1 выпрямить руки вперед кисти от себя 2 ИП 3 выпрямить руки вверх кисти вверх 4 ИП 2.
53639. Военно-промышленный комплекс (ВПК) 41 KB
  Сегодня мы будем изучать Военно-промышленный комплекс ВПК. Вспомним что такое аббревиатура сокращение слов для удобства Скажите какой комплекс мы сегодня изучаем Военно-промышленный комплекс Военно-промышленный комплекс ребята это система предприятий которые производят и испытывают военную технику оружие и боеприпасы.
53640. План-конспект урока «Настрою гусли на старинный лад…» 201.5 KB
  Оборудование: компьютер медиапроектор презентация Power Point Настою гусли на старинный лад На доске: тема урока Настрою гусли на старинный лад эпиграф: У Баяна вещего бывало Если петь он начинал о ком Мысль как серый волк в степи бежала Поднималась в облака орлом Слово о полку Игореве перевод Н. Выход гусляра Ответы учащихся: гусли. Учитель: К нам на урок пришёл настоящий гусляр Гусляр: Ой вы гусли то яровчатые Расскажите нашим детушкам Как во старинуто вы игралито Звуки издавали гусли звонкие Как народ вы...
53641. Понятие информации. Характеристика информации 39.5 KB
  Итак тема нашего сегодняшнего урока Информация Кто-нибудь из вас может попробовать сказать мне что такое информация Ученики: выводят определение информации. А теперь давайте запишем определение информации научным языком. А сейчас мы с вами рассмотрим свойства информации.