Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР2.doc
Скачиваний:
5
Добавлен:
13.11.2018
Размер:
131.58 Кб
Скачать

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

Организация циклических вычислительных процессов

1. Цель работы

Приобретение навыков программирования циклических вычислительных процессов.

2. Планируемые результаты обучения

В результате освоения дисциплины у студентов должны быть сформированы и развиты следующие профессиональные компетенции:

на уровне знаний:

– умение воспроизводить синтаксис операторов цикла: с известным числом повторений, с предусловием, с постусловием;

на уровне понимания:

– умение объяснять логику работы операторов цикла языка С;

на уровне применения:

– навыки использования по назначению операторов цикла при записи соответствующих вычислительных процессов;

– навыки использования вложенных циклов при решении практических задач;

– навыки разработки циклических программ;

на уровне анализа:

– умение анализировать разработанную программу с целью выявления логических ошибок;

– умение локализовать ошибки выполнения программы с целью их исправления;

на уровне синтеза:

– навыки использования математических методов и вычислительных алгоритмов для решения практических задач с использованием всех видов циклов;

– умение защищать выполненную самостоятельную работу;

на уровне оценки:

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

2. Краткие теоретические сведения

Для реализации циклов в языке С/С++ используются операторы for, while и do-while. Циклы позволяют многократно выполнять заданную последовательность инструкций, пока действует определенное правило. Это условие может быть задано заранее (цикл for) или меняться во время выполнения цикла (в циклах while и do-while).

2.1 Цикл с известным числом повторений – оператор цикла for

Общий вид оператора цикла for выглядит следующим образом:

for(инициализация переменной-счетчика; условие выхода; приращение)

выражение;

В цикле for сначала выполняется инициализация переменных – счетчиков цикла, затем проверяется условие выхода. В качестве условия цикла может применяться любой допустимый оператор сравнения или логический оператор. Пока данное условие истинно тело цикла выполняется. Приращение изменяет значение счетчика цикла при очередном его выполнении. Как только условие цикла станет ложным, программа прекратит его выполнение и перейдет к следующему оператору.

Например, в данном примере цикл выводит на экран числа от 1 до 100:

for(i=1; i<=100; i++)printf(“%d ”, i);

Для объединения множества операторов в операторный блок используются фигурные скобки. К примеру, имеем:

for(int i=100; i!=65; i-=5)

{

j=i*i;

printf(“квадрат числа %d равен %d”, i, j);

}

Обратите внимание на то, что в этом цикле счетчик уменьшается.

В языке С/С++ цикл for обеспечивает высокую гибкость и эффективность. Существуют различные варианты цикла.

1. Использование нескольких счетчиков цикла – наиболее распространенный вариант. Например, в данном примере используется два счетчика одновременно:

for(int i=0, j=0; i+j<=10; i++)

{

j=getchar();

}

Операторы инициализации счетчиков разделены запятой, то есть они выполняются последовательно. При каждой итерации значение переменной i увеличивается на 1, а переменная j вводится с клавиатуры.

2. Пропуск разделов цикла. Так как каждый из разделов цикла является необязательным, то их можно пропускать. Данный цикл выполняется до тех пор, пока пользователь не введет число 100:

for(i=1; i!=100; )scanf(“%d ”, &i);

3. Бесконечный цикл. Так как все разделы являются необязательными, цикл for легко можно сделать бесконечным, не задав никакого условного выражения:

for( ; ; ) printf(“бесконечный цикл”);

4. Пустой цикл. Тело цикла может не содержать ни одного оператора, такой цикл называется пустым. Это можно использовать для повышения эффективности некоторых алгоритмов и задержки выполнения программы. Например, одна из распространенных задач – удаление пробелов из входного потока. Эту задачу решает цикл for, который пропускает все пробелы, стоящие перед словами в строке str:

for( ; *str== ‘ ‘; str++);

2.2 Цикл с предусловием – оператор цикла while

Цикл while с предусловием в общем виде записывается:

while(условие)оператор;

Цикл выполняется пока значение условия истинно. Условие считается истинным, если значение выражения не равно 0.

Например,

int i =0;

while(i<10){

printf(“%d”, i);

i=i+1;

}

Цикл выполняется пока значение переменной i не равно 10, но это не единственный способ прервать выполнение цикла. Цикл можно завершить с помощью оператора безусловного перехода или оператором break. К примеру:

int i =0, j=20;

while(i<10){

printf(“%d”, i);

if(j==10)break;

i = i + 1;

j = j – 1;

}

Цикл завершиться, если значение j станет равным 10. Кроме того, предусмотрен также оператор пропуска итерации цикла:

char s[80], *str;

int space;

gets(s);

str=s;

space=0;

while(*str){

if(*str != ‘ ‘)continue;

str++;

space++;

}

Проверяется каждый символ строки. Если он не является пробелом, оператор continue прерывает текущую итерацию и начинает новую, в противном случае выполняются операторы, стоящие после ключевого слова continue.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]