- •Г.В. Ваныкина, т.О. Сундукова
- •Часть 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. Введение в программирования
Лабораторная работа №15 Операторы цикла: оператор цикла с постусловием do … while
Цель работы: изучить операторы цикла и научиться работать с оператором цикла с постусловием do … while в языке C++.
Теоретические сведения
Как и в других языках программирования, в С++ существуют специальные средства организации циклов, управляющие последовательностью выполнения повторений в зависимости от условий.
Наряду с циклами for и while, где проверка условия, влияющего на порядок выполнения повторений, предшествует итерациям, предусмотрена конструкция, в которой выражение-условие проверяется после очередного выполнения тела цикла. Семантика организации такого цикла, в котором тело цикла предшествует проверке выражения-условия, определила оператор цикла с постусловием.
Оператор цикла с постусловием do … while
Цикл с постусловием – цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз.
Оператор цикла do...while имеет следующий синтаксис:
do
тело_цикла;
while (выражение-условие)
выражение-условие – это выражение, определяющее условие, при котором тело цикла будет выполняться. В качестве выражения-условия чаще всего используется отношение или логическое выражение.
Схема выполнения оператора do...while следующая:
выполняется тело_цикла;
вычисляется выражение-условие;
если значение выражения-условия равно нулю, то выполнение оператора do...while заканчивается и выполняется следующий по порядку оператор. Если значение выражения-условия не равно нулю, то выполнение оператора цикла do...while продолжается с пункта 1 (т.е. выполняется тело_цикла и все повторяется…).
В операторе do...while проверка условия происходит после выполнения операторов, образующих тело цикла. Оператор do...while удобно использовать в ситуациях, когда цикл должен выполниться хотя бы один раз.
Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.
При построении цикла do...while необходимо включить в тело цикла какие-либо конструкции, изменяющие величину проверяемого выражения-условия так, чтобы в конце концов оно стало равным нулю. В противном случае цикл будет бесконечным.
Например:
int i, s;
i=2;
do {
printf("Добрый день!"); }
while(i < 5); /*цикл будет выполняться бесконечно*/
int i, s;
i=2;
do {
printf("Добрый день!");
i=i+1; }
while(i < 5); /*цикл будет выполнен 3 раза*/
Пример 1: Вычисления квадратов чисел от 1 до 9.
#include <stdio.h>
void main() {
int i, b;
i=1;
do {
b=i*i;
printf("\n %2d в квадрате = %3d", i, b);
i++; }
while (i<10);
}
Пример 2: Программа для печати фрагмента таблицы ASCII (от 32-го символа до 126-го).
#include <stdio.h>
void main() {
int number;
char character;
number = 32;
do {
character = number;
printf("Символ %c имеет код %d (дес.) или
%x (шестнд.)\n", character,character,character);
number++; }
while (number <= 126);
}
Пример 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;
do {
s+=i;
i++; }
while (i<=n);
cout<<"\nS="<<s<<"\n";
}
Задания
Составьте программу для решения задачи. Дано число а (1 < а < 1,5). Из чисел
напечатать
те, которые не меньше а.Составьте программу для решения задачи. Дана непустая последовательность целых чисел, оканчивающаяся числом 100. Определить, есть ли в последовательности число 77? Если имеются несколько таких чисел, то определить порядковый номер первого из них.
Составьте программу для решения задачи. Даны целые числа а и b (а > b). Определить результат целочисленного деления а на b, не используя стандартную операцию целочисленного деления.
Дано натуральное число. Найдите сумму его цифр.
Домашние задания
Наберите коды программ из Примеров 1, 2 и 3. Сохраните коды программ. Выполните компиляцию и запуск программ. Введите свои данные в качестве входных.
Составьте программу для решения задачи. Дано число а (1 < а < 1,5). Среди чисел найти первое, меньшее а.
Составьте программу для решения задачи. Дана последовательность натуральных чисел a1, a2, … a20. Определить, есть ли в последовательности хотя бы одно число, оканчивающее цифрой 7? В случае положительного ответа определить порядковый номер первого из них.
Составьте программу для решения задачи. Даны целые числа а и b (а > b). Определить результат остатка от деления а на b, не используя стандартную операцию вычисления остатка.
