
- •Г.В. Ваныкина, т.О. Сундукова
- •Часть 1. Введение в программирование Тула - 2009
- •Содержание
- •Предисловие
- •Лабораторная работа №1
- •Лабораторная работа №2 Типы данных. Стандартные потоки ввода-вывода данных
- •Лабораторная работа №3 Константы. Стандартные потоки ввода-вывода вещественных данных
- •Лабораторная работа №4 Форматированный ввод-вывод данных
- •Лабораторная работа №5 Присваивание. Арифметические операции
- •Лабораторная работа №6 Логические и поразрядные операции. Операции сравнения и определения размера
- •Лабораторная работа №7 Математические функции. Выражения
- •Математические функции – файл math.H
- •Лабораторная работа №8 Линейные программы. Преобразование типов
- •Лабораторная работа №9 Операторы выбора: оператор условия if
- •Лабораторная работа №10 Решение задач с использование оператора условия if
- •Лабораторная работа №11 Операторы перехода. Операторы выбора: оператор-переключатель switch
- •Лабораторная работа №12 Решение задач с использованием оператора-переключателя switch
- •Лабораторная работа №13 Операторы цикла: оператор цикла с параметром for
- •Лабораторная работа №14 Операторы цикла: оператор цикла с предусловие while
- •Лабораторная работа №15 Операторы цикла: оператор цикла с постусловием do … while
- •Лабораторная работа №16 Решение задач с использованием операторов цикла
- •Лабораторная работа №17 Функции пользователя
- •Лабораторная работа №18 Решение задач методом процедурной абстракции
- •Лабораторная работа №19 Рекурсивные функции
- •Индивидуальные задания Требования к оформлению индивидуальных заданий
- •Задание 1. Линейные программы
- •Задание 2. Задачи на составление логических выражений
- •Задание 3. Условный оператор
- •Задание 4. Цикл с параметром
- •Задание 5. Циклы с условиями
- •Задание 6. Числовые функции
- •Задание 7. Функции
- •Задание 8. Рекурсия
- •Литература
- •Часть 1. Введение в программирования
Лабораторная работа №14 Операторы цикла: оператор цикла с предусловие while
Цель работы: изучить операторы цикла и научиться работать с оператором цикла с предусловием while в языке C++.
Теоретические сведения
В языке программирования С++ предусмотрен оператор цикла, альтернативный оператору for. При этом количество итераций определяется логическим выражением, которое проверяется в заголовке перед выполнением тела цикла. Семантика организации такого цикла, в котором выражение-условие предшествует итерациям, определила оператор цикла с предусловием.
Оператор цикла с предусловием while
Цикл с предусловием – цикл, который выполняется, пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно).
Оператор цикла while имеет следующий синтаксис:
while (выражение-условие)
тело_цикла;
выражение-условие – это выражение, определяющее условие, при котором тело цикла будет выполняться. Проверка условия производится перед каждым возможным выполнением цикла. В качестве выражения-условия чаще всего используется отношение или логическое выражение.
Схема выполнения оператора while следующая:
вычисляется выражение-условие;
если значение выражения-условия равно нулю, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если значение выражения-условия не равно нулю, то выполняется тело цикла оператора while.
процесс повторяется с пункта 1 (т.е. вычисляется выражение-условие и все повторяется…).
В операторе while проверка условия происходит вначале, перед выполнением операторов, образующих тело цикла. Оператор while удобно использовать в ситуациях, когда цикл не всегда должен выполняться
При построении цикла while необходимо включить в тело цикла какие-либо конструкции, изменяющие величину проверяемого выражения-условия так, чтобы в конце концов оно стало равным нулю. В противном случае цикл будет бесконечным.
Например:
int i, s;
i=2;
while(i < 5) {
printf("Добрый день!");
} /*цикл будет выполняться бесконечно*/
int i, s;
i=2;
while(i < 5) {
printf("Добрый день!");
i=i+1;
} /*цикл будет выполнен 3 раза*/
Пример 1. Вычисления квадратов чисел от 1 до 9.
#include <stdio.h>
void main() {
int i, b;
i=1;
while (i<10) {
b=i*i;
printf("\n %2d в квадрате равно %3d", i, b);
i++;
}
}
Пример 2. Программа для печати фрагмента таблицы ASCII (от 32-го символа до 126-го).
#include <stdio.h>
void main() {
int number;
char character;
number = 32;
while (number <= 126) {
character = number;
printf("Символ %c имеет код %d (дес.) или
%x (шестнд.)\n",character,character,character);
number++;
}
}
Пример 3. Вычислить S = 1 + 2 + 3 + 4 + … + n.
#include <iostream.h>
void main() {
int n,i,s=0;
cout<<"\nВведите n=";
cin>>n;
if(n<=0) {
cout<<"\n n<=0";
return; }
i=1;
while (i<=n) {
s+=i;
i++; }
cout<<"\nS="<<s<<"\n";
}
Задания
Составьте программу для решения задачи. Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти сумму и количество всех чисел последовательности.
Составьте программу для решения задачи. Дано натуральное число. Верно ли, что сумма его цифр больше k?
Составьте программу для решения задачи. Напечатайте минимальное число, больше 200, которое нацело делится на 17.
Составьте программу для решения задачи. В некотором году (назовем его условно первым) в пользование был выделен участок в 100 гектар. После этого каждый год площадь участка увеличивалась на 5%. Определить в каком году площадь участка станет больше 120 гектар.
Домашние задания
Наберите коды программ из Примеров 1, 2 и 3. Сохраните коды программ. Выполните компиляцию и запуск программ. Введите свои данные в качестве входных.
Составьте программу для решения задачи. Дана непустая последовательность неотрицательных целых чисел, оканчивающаяся отрицательным числом. Найти среднее арифметическое всех чисел последовательности (без учета отрицательного числа).
Составьте программу для решения задачи. Дано натуральное число. Верно ли, что количество его цифр есть четное число?
Составьте программу для решения задачи. Найти максимальное из натуральных чисел, не превышающих 5000, которое нацело делится на 39.
Составьте программу для решения задачи. В некотором году (назовем его условно первым) на некотором участке в 100 гектар средняя урожайность ячменя составила 20 центнеров с гектара. После этого каждый год площадь участка увеличивалась на 5%, а весь урожай (в центнерах) на 2%. Определить в каком году урожайность превысит 22 центнера с гектара.