По теме лабораторной работы

В программировании цикл – это повторяющееся выполнение одних и тех же простых или составных операторов. Алгоритмы, содержащие циклы, называются циклическими. Существует несколько типов операторов цикла с помощью которых реализуются циклы.

Операторы циклов с пред- и постусловием, хотя и обладают значительной гибкостью, не слишком удобны для организации циклов, которые должны быть проделаны заданное число раз. Цикл с параметром вводится именно для таких случаев. В этом операторе для каждого значения параметра выполняется тело цикла (очередная итерация). Пределы изменения параметра и способ получения следующего значения параметра по текущему указываются в заголовке оператора цикла с параметром. На псевдокоде оператор цикла с параметром имеет вид:

для инициализация, условие, изменение

повторить

оператор

где “инициализация” используется для присвоения начального значения параметру цикла, “условие” определяет выполнять тело цикла (оператор) или завершить цикл, “изменение” определяет способ изменения параметра цикла. Выполнение цикла происходит до тех пор, пока “условие” истинно. Как только условие становится ложным, начинает выполняться следующий за циклом оператор. Проверка “условия” происходит до выполнения тела цикла, т.е. этот оператор является частным случаем оператора цикла с предусловием. “Изменение” параметра цикла осуществляется после очередного выполнения тела цикла (в конце итерации). Если обозначить параметр цикла через i, начальное значение через iн, конечное через iк, а изменение параметра цикла задать как i = i+iш, то оператор можно записать так:

для i = iн, i £ iк, i = i+iш для i = iн, iк, iш

повторить или повторить

оператор оператор

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

Оператор (тело цикла) является простым или составным.

На языке Си этот оператор имеет следующий вид:

for (инициализация; условие; изменение) оператор

или в общем виде

for (выражение1; выражение2; выражение3) оператор

Оператор цикла с параметром, соответствующий частному случаю, выглядит так

for ( i=iн; i <= iк; i = i + iш ) оператор.

Пример:1. Заданы два целых положительных числа n и m. Найти наибольший общий делитель этих чисел.

Для решения этой задачи Евклидом был предложен алгоритм, модифицированный вариант которого приведем.

Псевдокод алгоритма Программа на языке С

алгоритм нод #include <stdio.h>

начало main ( )

скаляры n, m - целые {

ввод () int m, n;

пока n≠m scanf (“%d”, %n);

повторить while (n!=m)

если n>m то n = n - m if (n>m) n = n – m;

иначе m=m-n else m=m-n

все -если printf (“нод=%d”, n);

 

вывод (n) }

конец

 

2. Написать программу вычисления факториала f=n!

Псевдокод алгоритмаПрограмма на языке С

алгоритм факториал #include <stdio.h>

начало main ( )

скаляры n, f, k- целые {

ввод (n) int k, n;

f=1 float f;

для k=1, n, 1 scanf (“%d”, %n);

повторить f=1;

f=f*k for (k=1; k<=n; k=k+1)

вывод (f) f=f*k;

конец printf (“факториал =%f”, f);

}

 

Задания для лабораторной работы:

 

1.a)

б)

2.a)

б)

3.a)

б)

4.a)

б)

5.a)

б)

6.a)

б)

7.a)

б)

8.a)

б)

9.a)

б)

10.a)

б)

11.a)

б) Найти среднее арифметическое отрицательных элементов массива (a1,a2,…,aN)

12.a)

б) Найти среднее арифметическое положительных элементов массива (a1,a2,…,aN)

13.a)

б) Найти количество элементов массива (a1,a2,…,aN), удовлетворяющих условию : ai<0.

14.a)

б) Найти количество элементов массива (a1,a2,…,aN), удовлетворяющих условиям: b £ ai £ c.

15.a)

б) Найти количество элементов массива (a1,a2,…,aN), удовлетворяющих условию: | ai | £ c.

16.a)

б) Задан массив, содержащий N элементов. Упорядочить его элементы в порядке возрастания.

17.a)

б) Задан массив, содержащий N элементов. Упорядочить его элементы с четными индексами в порядке возрастания, а элементы с нечетными индексами в порядке убывания.

Так:

18.a)

б) Задан массив, содержащий N элементов. Положительные элементы массива упорядочить в порядке возрастания. Остальные элементы остаются на местах.

Так:

19.a)

б) Задан массив, содержащий N элементов. Поменять местами первый элемент с последним, второй с предпоследним, третий с предпредпоследним, и т.д.

Так:

Элементы меняются местами, если они оба одного знака.

20.a)

б) Задан массив, содержащий N элементов. Требуется переприсвоить его элементы так, чтобы отрицательные элементы оказались в начале массива, нулевые следующими, а в конце положительные. При этом в каждой из групп должен сохраниться исходный порядок элементов.

Так:

21.a)

б) Задан массив, содержащий N элементов. Требуется найти номера индексов, соответствующих максимальным значениям элементов массива среди элементов с четными индексами.

22.a)

б) Задан массив, содержащий N элементов. Требуется найти номера индексов, соответствующих минимальным значениям элементов массива среди элементов с нечетными индексами.

23.a)

б) Задан целочисленный массив, содержащий N элементов. Найти номера индексов, соответствующих максимальному значению среди четных элементов массива.

24.a)

б) Задан целочисленный массив, содержащий N элементов. Найти номера индексов, соответствующих минимальному значению среди нечетных элементов массива.

25.a)

б) Задан целочисленный массив, содержащий N элементов. Найти номера индексов, соответствующих среднеарифметическому значению среди положительных элементов массива.

 

Контрольные вопросы

1. В чем отличия оператора цикла с предусловием и оператора цикла с постусловием?

2. Объясните разницу между инструкциями count=count+1 и count++.

3. Дайте описание оператора присваивания.

4. Объясните разницу между оператор инкремента и оператором декремента.

5. Можно ли использовать разные типы данных в одной операции? Если да, то как это отразится на результатах операции?