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


 

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

41993. ИССЛЕДОВАНИЕ ПАРАМЕТРОВ РАБОЧЕЙ ТОЧКИ БИПОЛЯРНОГО ТРАНЗИСТОРА В СХЕМЕ С ОБЩИМ ЭМИТТЕРОМ 692.5 KB
  Краткие теоретические сведения Задание тока базы с помощью резистора Схема транзисторного каскада с общим эмиттером представлена на рис. В этом режиме ток коллектора максимален и не управляется током базы: DCIб IкIKH 5.1 где IKH – ток коллектора насыщения определяется сопротивлением Rк в цепи коллектора и напряжением источника питания Ек: IKHEK RK. Для...
41994. Проектирование и создание отчетов в среде Visual FoxPro 9.0 706.97 KB
  0 Открываем уже созданную ранее базу выбираем вкладку Documents переходим на заголовок Reports и нажимаем New. Выбираем Report Wizrd далее если необходимо создать отчет к связанным формам выбираем One –to Mny Report Wizrd а если создать отчет к одинарной форме нашей базы то выбираем Report Wizrd. В нашем случае выбираем Report Wizrd. Затем в левой колонке выбираем таблицу для которой необходимо создать отчет.
41995. Дослідження структури та складових BІOS (Base Іnput Output System) 68.5 KB
  Мета роботи: розглянути складові частини BIOS з допомогою яких створюється парольний захист комп'ютера и визначити методи погроз та атак на паролі BIOS.exe – програма для перепрограмування BIOS з можливістю зберігання змісту існуючого у файл.exe – програма для розпаковки головного модуля BIOS із файлу створеного з допомогою wdflsh.exe та редагування його змісту в тому числі і інструментального паролю BIOS а також отримати новий двійковий файл для перепрограмування BIOS.
41996. Дослідження файлової системи NTFS 625 KB
  Теоретичні відомості Файловая система NTFS New Technology File System формирует на логических дисках следующую структуру: MFT Mster File Tble – метафайл содержащий информацию о информационных файлах и их местонахождении на логическом диске. MFTMirror – копия файла MFT содержащая информацию только о служебных метафайлах которая чаще всего располагается в середине логического диска. Помимо программы загрузчика IPL2 в BootSector размещаются поля со следующей информацией: Смещение байт Описание 0 Команда JMP xxxx 3...
41997. Исследование объемов передаваемой информации в каналах спутниковых систем связи 41.5 KB
  Лабораторная работа состоит из 2 этапов расчета: Расчет энергетических характеристик спутниковой линии.2 содержат графическое отображение результатов расчета. В конце работы предложены результаты расчета производительности системы при заданном наборе исходных данных. Исследовать характеристики ССС по всем пунктам этапа расчета 1 при заданном наборе исходных данных.
42001. ФІЗИКА. ЛАБОРАТОРНИЙ ПРАКТИКУМ 6.1 MB
  Для цього до посібника введено окрему главу “На допомогу студенту†в якій розглянуто на конкретних прикладах всі етапи виконання лабораторної роботи. Лабораторні роботи з основного курсу фізики [2. Вивчення роботи релаксаційного генератора [2. ВИЗНАЧЕННЯ РОБОТИ ВИХОДУ ЕЛЕКТРОНА З МЕТАЛІВ МЕТОДОМ ГАЛЬМУВАННЯ ФОТОЕЛЕКТРОНІВ В ЕЛЕКТРИЧНОМУ ПОЛІ [2.