Программирование разветвляющегося — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Программирование разветвляющегося

2017-12-11 248
Программирование разветвляющегося 0.00 из 5.00 0 оценок
Заказать работу

Циклического вычислительного процесса.

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

Теоретические сведения

Каждый оператор С заканчивается оператором (;), который является пустым оператором. Циклы или итерационные процедуры позволяют выполнять отдельные операторы или блоки операторов (составные операторы {…}). Число повторов определяется выражением в скобках, значение которого сравнивается с Æ (Æ- прекращение цикла). Циклы бывают с проверкой значения выражения перед началом выполнения тела цикла (с предусловием), по окончанию выполнения тела (с постусловием) или внутри тела цикла. В С определено три вида операторов цикла: оператор цикла с предусловием - 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!=’y’ &&ch!= 'n'); // выполнять цикл до тех пор, пока не будет нажата // буква ‘y’ или ‘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!='y' && ch!='n');// выполнять //цикл до тех пор, пока не будет нажата //буква 'y' или '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

Разработал...........

Cтрока символов записывается в обратном порядке с

применением различных операторов организации циклов */

#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=='y') goto new_str; //new_str -метка

else getch();

}

/* Вывод исходной строки

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

Вывод строки в обратном порядке

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

Ввод новой строки -y, нет-n: n

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

Количество символов =22

Вывод строки в обратном порядке

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

Ввод новой строки -y, нет-n: y

qwert12345

Количество символов =10

Вывод строки в обратном порядке

54331trewq

Ввод новой строки -y, нет-n: n */

 

Ход работы

 

1 По индивидуальному заданию преподавателя составить программу с различными вариантами применения операторов цикла: while, do… while, for. Предусмотреть дополнительные возможности выхода из циклов (операторы break, goto).

2 Набрать программу на компьютере, выявить и устранить ошибки.

3 Ознакомиться с работой операторов цикла в языке С.

4 Получить результаты работы программы.

5 Оформить отчет и сделать выводы о проделанной работе, изучив контрольные вопросы по теме.

Задание к лабораторной работе

 

Вычислите таблицу значений функции

для значений аргумента х в интервале от Хн до Хк с шагом DX. Исходные данные приведены в таблице 4.

Таблица 4

Вар. f1(x) f2(x) а Хн DX
  3,2 1,3 6,5 0,5
  4,1 1,2 3,6 0,2
  2,8 1,4 4,2 0,3
        0,5
  2,4 0,7 3,8 0,2
  10,3     0,3
  ax2+ex 2,1 0,8 3,6 0,2
  5,4 2,3 8,9 0,4
  1,7 0,4 2,8 0,3
  14,2 11,6 1,6 0,2
  1,1 0,2 1,8 0,2
  5,4 2,2 7,3 0,3
  2,5 1,9 3,8 0,2
  5,1 3,3 6,9 0,3
  0,7 0,6 0,9 0,05
  3,8 1,2 5,3 0,4
  2,7 1,8 4,2 0,3
  2,1 0,4 3,9 0,2
  3,4 0,5 4,6 0,5
  asin(x3)+x 2,8 1,6 4,8 0,3
  x4sin(ax) 4,2 2,8 5,6 0,2
  ax+tg(ax) 2,6 0,5 3,5 0,5
  6,3 2,5 7,5 0,5
        0,5
  p   2p p/4
  p/4 -p p p/3
  3,9 2,8 4,6 0,2
  p 0,1 2p p/6
  -1 -4,2 3,8 0,5

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


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.036 с.