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.  Поясните роботу операторів у прикладах.


 

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

28767. Государство и общество стран Западной Европы в XVII в. 29.63 KB
  Основные тенденции развития стран Европы во второй половине XVIIXVIII веке 1. Эволюция внутриполитического устройства Во 2й половине XVII – XVIII веков внутриполитическое устройство большинства стран Европы сохраняло средневековые черты. – ограниченная монархия Венецианская и Генуэзская республики в XVIII столетии – Швеция 17191772 гг. XVIIXVIII века в Европе стали временем когда завершился процесс собирания земель и формирование государств в их современных границах.
28768. Внутренняя и внешняя политика Ивана IV Грозного 27.92 KB
  Внутренняя и внешняя политика Ивана IV Грозного. Земский собор и реформы первой половины правления Ивана Грозного. Запад и Восток во внешней политике Ивана Грозного. Но фактически власть оказалась в руках Елены Глинской матери Ивана.
28769. Россия в годы Смуты (конец XVI - начало XVII вв.) 25.23 KB
  Россия в годы Смуты конец XVI начало XVII вв. Предпосылки смуты и ее общая периодизация На рубеже XVI– XVII Московское государство пережило тяжелый кризис охвативший все сферы жизни и поставивший его на грань существования. Главные предпосылки смуты – это разорение страны в результате Ливонской войны и опричнины усиление социальных конфликтов. Наиболее крупный исследователь смуты академик Сергей Платонов выделял три ее периода: династический социальный и национальный.
28770. Воцарение в России Романовых. Развитие страны в XVII в. Особенности сословно-представительной монархии в России 24.43 KB
  Воцарение в России Романовых. Особенности сословнопредставительной монархии в России. Кроме того наладились дипломатические и торговые связи России с Западом. Этому способствовало то что сельское население России делилось на две категории: владельческих и черносошных крестьян.
28771. История в системе социально-гуманитарных наук. Предмет, принципы изучения и значение истории 24.23 KB
  История действительность в её развитии движении наука о развитии общества и природы прошлое сохраняющееся в памяти человечества. Однако не менее правдивым считается высказывание Гегеля что история никогда и никого ничему не учит это наглядно видно на практике. В системе социальногуманитарных дисциплин история может играть роль всеобщей базы которая постепенно накапливается.
28772. Сущность, формы, функции исторического знания. Методы и источники изучения истории 30.4 KB
  Методы и источники изучения истории. Содержанием истории вообще служит исторический процесс который раскрывается в явлениях человеческой жизни сведения о которых сохранились в исторических источниках. По традиции отцом истории считается Геродот 5 в. Объектом изучения для истории является вся совокупность фактов характеризующих жизнь общества как в прошлом так и в настоящем.
28773. Становление и развитие историографии как научной дисциплины. Этапы развития исторической науки 26.68 KB
  Составные части данного понятия очевидны: история и графия – написание истории. Когдато под историографией понималось само описание истории исторического процесса.Источники по отечественной истории письменные вещественные аудиовизуальные научнотехнические изобразительные. Всякая же мысль и всякий поступок не оставивший прямого или косвенного следа или видимый след исчез навсегда потерян для истории как если бы он никогда не существовал.
28774. Россия в мировом человеческом сообществе. Факторы самобытности русской истории 54.17 KB
  Такая функция России в механизмах социальноглобального развития человечества обусловлена особенностями Евразии как единственного места где на единой территории происходит соединение Запада и Востока. Необходимость военного могущества России ее евразийская масштабность сложившиеся духовнокультурные основания русского народа как основного скрепа российского суперэтноса уникальный опыт взаимодействия более 100 народов и национальностей обусловлены исторически определяют Россию как уникальную евразийскую цивилизацию общинного типа с...
28775. Специфика цивилизаций Древнего Востока и Античности 38.1 KB
  В восточной цивилизации не существует гарантий личных прав человека. Эссе Специфика цивилизации государства общества культуры Древнего востока и Античности Понятие цивилизации является очень широким. Специалисты выделяют три глобальных типа: традиционные цивилизации; индустриальная цивилизация; постиндустриальная информационная цивилизация. Цивилизации Востока развиваются циклически проходят фазы становления и упрочения единого государства его упадка а затем наступает катастрофа связанная с распадом государства.