Контрольные вопросы для подготовки и самостоятельной работы. Разработка программ с циклическими вычислительными процессами




Контрольные вопросы для подготовки и самостоятельной работы

1 Что означают символы: ’\r’, ’\f ’, ’\b’, ’\a’, ’\n’, ’\\’, ’\’’ ’, ’\’ ’, ’\000’, ’\0x00’, ’\0x0a’, ’\0x5c’?

2 Какие переменные относятся к скалярным, арифметическим, составным, символьным?

3 Почему в строке ’’c:\\bc\\test\\f.c’’ знак \ повторяется два раза?

4 Что означает ключевое слово signed?

5 Что означает ключевое слово #define, для чего используется?

6 Что означает ключевое слово const, для чего используется?

7 Что означает ключевое слово typedef, для чего используется?

8 Что означает ключевое слово #include, для чего используется?

9 Правильно ли выражение #include ’’c:\bc\test\my.h’’?

10 Что означают записи: 1254L, 34l, 0xf9ac, 0875, 76678UL?

11 Какой размер в байтах имеют базовые типы Си?

12 Где можно объявить переменную? Какой тип имеет переменная по умолчанию?

13 Что означает множественное объявление переменных?

14 Как определить размер типа в байтах?

15 Происходит ли инициализация переменной по умолчанию? В каких случаях?

16 Назовите класс памяти переменной по умолчанию. Зависит ли он от места объявления?

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

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

(2 часа)

Цель работы: Изучить написание программ на языке С, используя итерационные (циклические) методы, освоить основные операторы, поддерживающие работу с циклами (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 Оформить отчет и сделать выводы о проделанной работе, изучив контрольные вопросы по теме.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: