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


 

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

82580. Расчет параметров сетей GSM, LTE, WCDMA 178.02 KB
  Минимально допустимое значение Eb N0 на входе приемника является характеристикой оборудования и оно будет индивидуальным для оборудования разных производителей также оно будет разным для приемников базовой и мобильной станций вследствие различий в сложности их устройства.
82581. Развитие этнического туризма в сельской местности в Республике Бурятия 507.5 KB
  В наши дни, когда большинство людей живут в многонациональных мегаполисах и городах, когда утрачены традиции и обычаи, когда миллионы жителей планеты из сотен разных этнических групп зовутся русскими, американцами, сингапурцами и т.д., особую актуальность и популярность приобретает этнический туризм.
82583. ТЕПЛОВОЙ РАСЧЕТ РАБОЧЕГО ПРОЦЕССА ЧЕТЫРЕХТАКТНОГО ДВИГАТЕЛЯ 264.5 KB
  Отношением площади поперечного сечения цилиндра к проходному сечению впускного клапана следует задаться из конструктивных соображений, имея в виду, что: для тихоходных двигателей при одном всасывающем клапане; для быстроходных двигателей при двух всасывающих клапанах.
82584. Прогнозирование технико-экономических показателей в результате реализации проекта по охране и рациональному использованию водных ресурсов 127.98 KB
  Годовой выпуск продукции в натуральном выражении определяется производственной мощностью ведущего оборудования. Производственная мощность – это максимально возможный объём производства продукции на данном оборудовании при наиболее благоприятных технических, технологических и организационных условиях.
82585. Основные направления изучения поведения животных в природе 107.5 KB
  Дарвин останавливаясь на инстинктивной деятельности животных указывал на естественный отбор как на направленную причину ее возникновения и развития. Подойдя к сложному и наиболее запутанному вопросу поведения животных Дарвин применяет к нему те же категории какие применялись к признакам строения животного.
82586. Франклин Делано Рузвельт – неординарный, гибкий политик 34.9 KB
  Исключительно великовата роль Рузвельта в формировании и осуществлении так называемого нового курса внутри державы курса демократической направленности сыгравшего выдающуюся роль в стабилизации финансовой и общественной ситуации в стране во время после глубочайшего экономического кризиса...
82587. Технология разработки и использование творческих заданий в обучении 42.31 KB
  Задачи обучения, развития и воспитания учащихся в средней школе направлены по большому счету на то, чтобы воспитать личность, способную адаптироваться в быстро меняющихся условиях жизни и способную одновременно изменять эти условия. Первая задача относится к проблеме развития интеллекта ученика...
82588. Тормозная система 132.23 KB
  Второе назначение тормозной системы удержание автомобиля в неподвижном состоянии относительно дорожного покрытия на время стоянки. По способу привода в действие тормозные системы подразделяются на: Гидравлические Пневматические Механические Электромеханические Электропневматические ...