Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

osnovyiprogrammirovaniyanac

.pdf
Скачиваний:
24
Добавлен:
12.03.2015
Размер:
1.46 Mб
Скачать

 

 

 

 

9

s+=a;

//сумма

элементов ряда

}

 

 

 

 

p r i n t f ( " I

% i \ n " , s ) ;

 

 

 

s=0;

//если

эту

операцию

не выполнить, то сумма

 

//элементов предыдущего ряда будет складываться

 

//с суммой

текущего

ряда

50

Задачи к главе 7. Циклические конструкции

Задача 7.1. Напишите программу, которая десять раз выводит на экран текущую дату.

Задача 7.2. Напишите программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.

Рекомендуемый вид экрана:

Число Квадрат

11

24

39

416

525

636

749

864

981

10 100

Задача 7.3. Напишите программу, которая вычисляет сумму первых п целых положительных четных чисел. Количество суммируемых чисел вводится во время работы программы.

Рекомендуемый вид экрана:

Вычисление суммы положительных четных чисел. Введите количество суммируемых чисел:12

Сумма первых 12 положительных четных чисел равна 156.

Задача 7.4. Напишите программу, которая вычисляет сумму первых п членов ряда 1,3,5,7...к. Количество суммируемых членов ряда задается во время работы программы.

Рекомендуемый вид экрана:

Вычисление суммы ряда 1,3,5,7...к

 

Введите количество суммируемых членов ряда:

4

Сумма первых 4 членов ряда равна 16.

,

Задача 7.5. Напишите программу, которая вычисляет сумму ряда '/г + 2/з + 3/л+--+N /n+iЗначение N задается во время работы программы.

Рекомендуемый вид экрана:

Введите значение N: 5 Сумма ряда равна 3.55

Задача 7.6. Напишите программу, которая выводит таблицу значений функции (х и у) у = 5х2 - х + 2 в диапазоне от -1 до 1 с шагом 0,2.

Задача 7.7. Факториалом числа п называют произведение целых чисел от 1 до п, при этом факториал нуля равен единице. Факториал обозначается восклицательным знаком. К примеру, 3! = 6 или 0! = 1. Напишите программу, вычисляющую факториал числа п, введенного пользователем.

Рекомендуемый вид экрана:

Вычисление факториала.

Введите число, факториал которого нужно вычислить: 7

71 = 5040.

Задача 7.8. Напишите программу, которая проверяет навыки устного умножения чисел в диапазоне от 0 до 20. В ходе работы программы на экран выводятся 10 выражений. Элементы произведения выбираются случайным образом. Компьютер фиксирует ответы

51

пользователя и, сравнивая их с правильными ответами, выставляет оценку по шкале: 10 или 9 правильных ответов - отлично, 8 / 7 - хорошо, 6 / 5 -удовлетворительно, меньше 5 - неудовлетворительно.

Рекомендуемый вид экрана:

Проверка

навыков устного умножения:

15

х

11

=

165

11

X

5

=

55

3

х

8

=

25

Неверно!

3

* 8 = 24

7

х

13

=

91

8

х

4

=

32

12

х

13

=

156

18

х

19

=

342

2

х

1

=

2

5

х

19

=

95

8

х

8

=

64

Результат: 9 баллов - отлично.

52

Глава 8

Операторы цикла while и do..while

Если число повторений заранее неизвестно, а задано только условие повторения, используются операторы while и do...while.

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

>

Шагая по дороге к дому, мы часто не задумываемся о том, сколько шагов осталось

 

сделать до двери подъезда. Мы делаем очередной шаг, если видим, что не можем

 

дотянуться рукой до двери. Это типичная ситуация, которую описывает оператор цикла с

 

предварительным условием while.

 

В блок-схемах оператор while изображается следующим образом:

 

В ромбе записывается условие выполнения цикла. Если условие истинно, тогда мы движемся вниз и выполняем тело цикла, в противном случае - выходим из цикла.

Фрагмент блок-схемы, описывающей путь от остановки до подъезда, будет иметь такой вид

В общем виде этот оператор записывается так:

w h i l e ( у с л о в и е )

{

/ / о п е р а т о р ы ц и к л и ч е с к о й

/ / ч а с т и программы

}

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

Пример 8.1. Напишите программу, которая вычисляет значения функции у = х , при х = 2, 4, 6, 8, 10.

Фрагмент программы на С++:

i n t

х,

у ;

х =

2 ;

 

w h i l e

(х <= 10)

{

у = х * х ;

p r i n t f ( " П р и х = %i у = %i \ п " , х, у ) ;

х = х + 2;

}

Во время выполнения программы переменные принимают следующие значения:

X

Условие

Значение

у

ы

2<= 10

Истина .

4

4

4<=10

Истина

16

6

6 <= 10

Истина

36

8

8 <= 10

Истина

64

10

10 <= 10

Истина

100

12

12 <= 10

Ложь

Выход из цикла

Если в циклической части стоит всего один оператор, то фигурные скобки можно не ставить, и оператор цикла принимает вид:

w h i l e ( у с л о в и е ) о п е р а т о р ;

Например:

i n t п=0;

w h i l e (n<10) p r i n t f ( " % i " , n + + ) ;

»

Пример 8.2. Напишите программу, которая определяет количество знаков целого числа, которое вводится пользователем.

l o n g n , i = 1 0 , k = l ; s c a n f & n ) ;

w h i l e ( n / i ! = 0 )

{

k + + ;

i*=10;

}

c o u t < < k « e n d l ;

Программа последовательно делит введенное число п на 10, 100, 1000 и т.д., фиксируя количество знаков в делителе. Как только целая часть частного становится равна нулю, выполнение цикла прерывается и выводится ответ.

54

Во время выполнения программы переменные принимают следующие значения:

п= 1234

i

Условие (n/i!=0)

Значение

к

10

1234/10 !=0

Истина

2

100

1234/100 !=0

Истина

3

1000

1234/1000 !=0

Истина

4

10000

1234/10000 != 0

Ложь

Выход из цикла

Оператор цикла с постусловием do...while

Оператор do...while аналогичен оператору while, но отличается от него тем, что условие проверяется после очередного выполнения операторов тела цикла (очередной итерации), и этим гарантируется хотя бы однократное выполнение цикл. Поэтому этот оператор называют циклом с последующим условием (постусловием).

В блок-схемах оператор do...while изображается следующим образом:

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

Конструкция do...while состоит из заголовка do, тела и условия окончания, которое записывается в круглых скобках после ключевого слова while. В конце всегда ставится точка с запятой.

do

{

/ / о п е р а т о р ы ц и к л и ч е с к о й / / ч а с т и программы

}

w h i l e ( у с л о в и е ) ;

Как и в случае с оператором while, если тело цикла содержит лишь один оператор, то фигурные скобки можно не ставить.

d o

о п е р а т о р ;

w h i l e ( у с л о в и е ) ;

Например:

i n t n = 0 ;

d o p r i n t f ("% i " , n + + ) ; w h i l e ( n < 1 0 ) ;

Пример 8.3. Напишите программу, которая вычисляет значение функции у = х , прих = 2, 4, 6, 8, 10.

Фрагмент программы на С++:

i n t

х , у ;

х =

2;

do

 

{

у = х * х ;

printf("%f,%f \n", х, у ) ;

х += 2;

}

w h i l e (х <= 1 0 ) ;

Здесь сначала задается первое значение аргумента х = 2. Далее в теле цикла:

1.вычисляется значение у при текущем значении х;

2.значения х и у выводятся на экран;

3.вычисляется новое значение аргумента х прибавлением числа 2 к предыдущему значению х.

Цикл выполняется до тех пор, пока выражение х <= 10 не станет ложным. В процессе выполнения этой части программы переменные принимают следующие значения:

X

У

х+=2

Условие

Значение

2

4

4

4<= 10

Истина

4

16

6

6<= 10

Истина

6

36

.8

8 <=10

Истина

8

64

10

10

<=10

Истина

10

100

12

12

<= 10

Выход из цикла

Пример 8.4. Напишите программу, которая проверяет, сколько знаков во введенном с клавиатуры числе. Если количество знаков не равно 4, то программа выводит сообщение об ошибке и предлагает ввести число еще раз.

l o n g

п , 1 ;

l o n g

i ;

do

 

{

 

1 = 1 ; i = 1 0 ;

c o u t < < " В в е д и т е ч е т ы р е х з н а ч н о е ч и с л о : " < < e n d l ; c i n > > n ;

w h i l e ( n / i »=0)

{

1 + + ;

i * = 1 0 ;

}

i f ( 1 1 = 4 )

c o u t « " В ы ошиблись ! " « e n d l ;

}

w h i l e ( 1 ! = 4 ) ;

Этот фрагмент - пример вложенного цикла while в конструкции do...while.

s

Бесконечный цикл.

Напомним, бесконечный цикл - это конструкция, в которой не предусмотрено естественного завершения. В работе с операторами цикла do...while и while зацикливание - самая распространенная ошибка начинающих. Составление условия относительно переменной, не изменяемой операторами тела цикла, неизбежно приводит к бесконечному выполнению этого цикла.

Например: int i=8,n; while(i>0)

n++ ;

}

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

int i=0; while(1==1)

{

i++;

if(i==8)

break;

}

Этот цикл будет выполняться до тех пор, пока переменная i не станет равна восьми, что приведет к принудительному завершению цикла оператором break.

57

Задачи к главе 8. Операторы цикла while и do..while

Задача 8.1. Напишите программ}, которая печатает на экране узор, состоящий из звездочек, так, как это изображено на рисунке. Количество строк вводится во время выполнения программы

Рекомендуемый вид экрана:

Введите

количество строк:

z

 

 

 

 

 

 

 

*

 

* * * * *

 

*****

* 4

**

 

* * * *

 

****

**

* * *

 

* * *

 

***

***

i|t jfc }ft 3ft

 

* *

 

»«

****

$z %

 

*

»

*****

 

 

Вариант 1

 

Вариант 2

 

Вагиант5

1

Задача 8.2. Напишите программу, которая вычисляет с у м м у среднее арифметическое последовательности положительных чисел, которые вводятся с клавиатуры Ввод чисел прекращается, когда вводится 0.

Задача 8.3. Определите произведение цифр, входящих в состав числа которое вводится с клавиатуры. Количество знаков вводимого числа не ограничено.

Рекомендуемый вид экрана.

Введите число: 12345 Ответ: 120

Задача 8.4. Игра «Угадай число». Напишите программу, которая « з а д у м ы в а е т » число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток.

Рекомендуемый вид экрана.

Игра «Угадай число».

Компьютер «задумал» число от 1 до 10. Угадайте его за 5 попыток.

Введите число. -> 5 Нет.

->3.

Вы выиграли! Поздравляю!

Задача 8.5. Напишите программу, которая определяет максимальное число из введенной с клавиатуры последовательности положительных чисел (длина последовательности не ограничена). Ввод прекращается, если введен 0.

Задача 8.6. В ассортименте магазина 5 наименований продукции. Напишите программу, которая запрашивает пары чисел (номер товара - количество товара). Количество пар не ограничено. Ввод прекращается, если введена пара 0 0. Цель программы - определить, на какую сумму было продано товара каждого наименования и сколько составляет дневная выручка.

Рекомендуемый вид экрана.

Номер

Наименование

Цена

 

 

 

1

Хлеб

8,50

2

Печенье

34,70

 

 

 

3

Молоко

9,90

 

 

 

4

Картофель

11,40

 

 

 

5

Масло

20,90

 

 

 

Введите номер товара и его количество:

1

-

2

5

-

3

1

- 5

3

-

8

4

-

5

0

-

0

Результат:

Номер

Наименование

Цена

Количество

Сумма

Итог

1

Хлеб

8,50

7

59,5

по всем

 

 

 

 

 

 

2

Печенье

34,70

0

0

 

 

 

 

 

 

258,4

3

Молоко

9,90

8

79,2

 

 

 

 

 

 

4

Картофель

11,40

5

57

 

 

 

 

 

 

 

5

Масло

20,90

3

62 , 7

 

 

 

 

 

 

 

Задача 8.7. Дано вещественное число X (|Х| < 1) и целое число N (N > 0). Вывести X - Х2/2 + Х3/3 - ... + (-1) N_1XN/N.

Задача 8.8. Напишите программу, которая выводит 16 окружностей, закрашенных разными цветами.

Задача 8.9. Напишите программу, которая рисует на экране круг, движущийся по экрану и отскакивающий от границ экрана. После каждого столкновения цвет круга изменяется, а скорость движения замедляется. Программа выполняется до момента полной остановки . круга.

Задача 8.10. Напишите программу, которая выводит на экран изображение шахматной доски. Черные клетки изображаются звездочкой, белые - пробелом.

Рекомендуемый вид экрана:

* к к к

•к -к * *

** -к -к

•к к к -к к -к к *

•к к к к

кк к к

Задача 8.11.

Напишите программу, которая выводит на экран график функции

у = -2.4х2 + 5х

- 3 в диапазоне от -2 до 2.

Задача 8.12. Напишите программу, которая выводит на экран узор, изображенный ниже. Такой рисунок получается при пересечении окружностей, количество которых в одной строке и одном столбце задается пользователем.

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