seminar_1-8.ppt
- Количество слайдов: 31
Основы информатики Семинар 8
Тема занятия: Базовые конструкции языка С++: Операторы цикла.
Реализация конструкции цикла Для удобства, а не по необходимости, в C++ есть три разных оператора цикла — while, do while и for. 1. Цикл с предусловием (while) Цикл с предусловием имеет вид: while ( условие) оператор • • • в ситуациях, когда программам необходимо выполнять цикл, пока удовлетворяется некоторое условие (но не обязательно определенное количество раз) условие определяет кличество повторения тела цикла, представленного простым или составным оператором, выполнение оператора начинается с вычисления условия. Если оно истинно (не равно false), выполняется оператор цикла. Если при первой проверке условие равно false, цикл не выполнится ни разу. тип выражения должен быть арифметическим или приводимым к нему. условие вычисляется перед каждой итерацией цикла.
Цикл с предусловием (while) • Если программа встречает оператор while, она проверяет заданное условие. Если тело цикла состоит более чем из одного • Если условие истинно, программа оператора, необходимо выполняет операторы цикла while. использовать составной • После выполнения последнего оператор: оператора в цикле, цикл while опять проверяет условие. while условие • Если условие все еще истинно, { повторяются операторы цикла и оператор_1; повторяется данный процесс. оператор_2; • Когда условие, наконец, … становится ложным, цикл оператор_n; завершается и программа продолжает свое выполнение с } первого оператора, следующего за циклом. возможно, что он не выполнится ни разу
Пример: Цикл с предусловием (while) В субботу вечером вы смотрите телевизор. Время от времени поглядываете на часы и если время меньше полуночи, то продолжаете смотреть телевизор, если это не так, то вы прекращаете просмотр телепередач.
Пример: вывести на экран числа от 1 до 10 i < 10 Вывод на экран i i++
Пример: вывести на экран числа от 1 до 10 #include <iostream. h> void main() { int i=0; while(i<10) { i++; cout<<i<<endl; } }
Нарисовать алгоритм и составить код программы считающей сумму всех целых чисел от 1 до 1000.
Алгоритм программы, считающей сумму всех целых чисел от 1 до 1000 Используемые переменные: i – целочисленная переменная – для организации цикла и перебора чисел, sum - целочисленная переменная – для накопления суммы чисел. Начальные установки i = 0 sum = 0 i< 1000 sum += i i++ Вывод sum
Пример программы, считающей сумму всех целых чисел от 1 до 1000. #include <iostream> int main() { int i = 0; // инициализируем счетчик цикла. int sum = 0; // инициализируем счетчик суммы. while (i < 1000) { i++; sum += i; } cout << “sum =" << sum << endl; return 0; }
Реализация конструкции цикла 2. Цикл с постусловием (do while) цикл с простусловием имеет вид: do {тело цикла - всегда нужны скобки; } while(условие); • • • Сначала выполняется простой или составной оператор, составляющий тело цикла, затем вычисляется выражение? Если выражение истинно (не равно false), тело цикла выполняется еще раз. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления. Тип выражения должен быть арифметическим или приводимым к нему. Главное различие между while и do-while в том, что в первом случаи условие проверяется перед выполнением кода(предусловный цикл), во втором код выполняется 1 раз перед тем как будет проверено условие(постусловный цикл).
циклы с постусловием: заточить все карандаши в коробке Вам надо поточить все карандаши в коробке. Вы точите один карандаш и откладываете его в сторону. Затем проверяете, остались ли карандаши в коробке. Если условие ложно, то снова выполняется действие 'заточить карандаш'. Как только условие становится истинным, то цикл прекращается.
Вводить с клавиатуры целые числа и суммировать, пока не встретится число 0. Сумму вывести на экран. … float sum = 0, x; do { cin >> x; sum += x; } while(x!=0); cout << sum << "n";
Цикл do-while удобен для проверки верности ввода значений Например: Нам нужно ввести число от 1 до 10 … void main() { int num; cout<<" Enter a number from 1 to 10 = "; do { cin>>num; if((num<1) || (num>10)) {cout<<“Input error. Enter a number from 1 to 10"; } } while((num<1) || (num>10)); }
Пропуск итераций, выход из цикла до его завершения В определенных условиях нам может понадобиться пропустить один или несколько повторений кода: для этих целей есть оператор continue; он прерывает выполнение текущей итерации, и возвращает к началу цикла. Для полного выхода из цикла, до его завершения служит команда break;
… int sum=0, input; Например: Нам нужно посчитать сумму всех вводимых чисел, но если введено 10, то его не нужно учитывать, а если введен 0, нужно прекратить суммирование. while(1) { cout<<"Число для суммирования: "<<endl; cin>>input; if (input==10) { cout<<"10 не суммируется"<<endl; continue; } if(input==0) { cout<<"введен 0, выходим из цикла"<<endl; break; } sum+=input; } cout<<"Сумма = "<<sum<<endl;
Реализация конструкции цикла 3. Цикл с параметром (for) - реализован как цикл с предусловием. Цикл с параметром имеет следующий формат: for (начальные_присваивания; выражение; приращение) оператор; • • начальные_присваивания — оператор или группа операторов, применяемые для присвоения начальных значений величинам используемым в цикле. Областью действия переменных, объявленных в части инициализации цикла, является цикл. выражение — определяет условие выполнения цикла, если оно истинно, то цикл выполняется; приращение — оператор, который выполняется после каждого шага (прохода) по телу цикла; оператор — любой оператор или группа операторов (тогда использовать { } )
Цикл со счетчиком (for … Например, на уроке физкультуры вы должны пробежать некоторое количество кругов вокруг стадиона.
Рассмотрим цикл с параметром. Нам необходимо посчитать сумму чисел от 1 до 500 #include <iostream> int main () { int i; //определяем переменную int sum = 0; for (i=1; i<=500; i=i+1) // задаем начальное значение 1, конечное 500, шаг цикла 1 { sum = sum + i; } cout << "The sum of the numbers from 1 to 500 = " <<sum<<endl; getch (); return 0; } Ответ будет 125250.
Рассмотрим цикл с параметром. Нам необходимо посчитать сумму чисел от 1 до 500 #include <iostream> int main () { int i; //определяем переменную int sum = 0; for (i=1; i<=500; i=i+1) // задаем начальное значение 1, конечное 500, шаг цикла 1 { sum = sum + i; } cout << "The sum of the numbers from 1 to 500 = " <<sum<<endl; getch (); return 0; } Ответ будет 125250.
Найти сумму М первых членов ряда х2+3 … void main() { clrscr(); int i, m; int y, S; cout<<"n. Vvedite M"; cin>>m; for (i=0; i<=m; i++) { y = pow(i, 2)+3; s+=y; } //s=s+y; cout<<"s= "<<s<<"n"; getch(); }
Найти сумму ряда 1/а! … void main() { clrscr(); int i, f, a; float S=0; cout<<"n. Vvedite A"; cin>>a; S=1; for (i=1; i<a; i++) { f=f*i; //factorial S=S+1. 0/f; } cout<<"s= "<<S<<"n"; getch(); }
Найдите синтаксические и логические ошибки в приведенных конструкциях. Считайте, что переменные i, j объявлены ранее как целые (int), переменные x, y – как вещественные (float). а) for(i=0, i<5, i++) {j++; } }б) for(i=0; i<5; i++); {j++; } в) for(int k=0; k<=j; k=k+2) г) {for(j=0; j<2; j++) cout<<”k!”; {x = j*0. 1; } else cout<<x; cout<<”k? ”; д) for(j=0; j<2; j+=0. 1) { x = sin(j*0. 1); y = exp(-2*j); } е) for(int i=10; i<=1; i--) { j *= 2; cout<<j; }
Определите, что будет выведено на экран в результате выполнения приведенных ниже фрагментов. Предполагается, что переменные i, j, k объявлены как целочисленные (int) и инициализированы значениями 1, 5 и 10, соответственно. а) for(i=0; i<3; i++) {k = k+1; } cout<<i<<j<<k<<endl; г) for(i=5; i>0; i=i-2) cout<<i<<endl; ж) for(i=0; i<3; i++) { k = k-5; if(i<k) cout<<”$$$”; else cout<<”###”; } б) for(i=0; i<3; i++) { k++; cout<<k; } д) for(i=0; i<10; i++) if(i<j) cout<<i; з) for(i=0; i<3; i++) { for(j=0; j<3; j++) { if(i<j) cout<<”$$$”; else cout<<”###”; } в) for(i=5; i>=3; i--) cout<<i<<endl; е) for(i=0; i<10; i+=2) if(i<j) cout<<j;
Найти и вывести все четные числа от А до В 1 способ … for (i=A; i<=B; i++) { if (i%2==0) cout<< i ; } …
Найти и вывести все четные 2 способ числа от А до В … if (A%2==0) { for (i=A; i<=B; i=i+2) { cout<< i ; } } else { for (i=A+1; i<=B; i=i+2) { cout<< i ; } } …
Даны числовой ряд и некоторое число ε. Найти сумму тех членов ряда, модуль которых больше или равен заданному ε. Общий член ряда имеет вид: аn = n 10/n!
Даны числовой ряд и некоторое число ε. Найти сумму тех членов ряда, модуль которых больше или равен заданному ε. Общий член ряда имеет вид: аn = n 10/n! … int n, fact=1, e, x, sum=0; cout << "Vvedite epsilon "; cin >> e; cout << "Vvedite chislo "; cin >> n; cout << endl; for (int m=1; m<=n; m++) { for (int i=1; i<=n; i++) fact=fact*i; x=pow(n, 10)/fact; if (fabs(x)>=e) sum=sum+x; } cout << "Summa " << n << " = " << sum << endl;
Дано число. Найти сумму и произведение его цифр.
Дано число. Найти сумму и произведение его цифр. … int n, sum=0, mult=1; cout << "Enter a positive number: "; cin >> n; if (n<0) cout << "Error! The number isn't a positive" << endl; else { while (n>0) { sum = sum+n%10; mult = mult*(n%10); n = n/10; } cout << "Sum of digits = " << sum << endl; cout << "Multiplication of digits = " << mult << endl; }
Домашнее задание 1. Павловская Т. А. С/С++. Программирование на языке высокого уровня – Спб. : Питер, 2004. – 461 с. : ил. ISBN 594723 -568 -4 – раздел: Базовые конструкции структурного программирования: Операторы цикла: цикл с предусловием (while) 2. Нарисовать алгоритм и написать код на С++ к следующим задачам: 2. 1. Найти факториал числа А. 2. 2. Найти сумму 20 первых членов ряда : х__ х3+7
seminar_1-8.ppt