Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ПРОГР.doc
Скачиваний:
33
Добавлен:
29.02.2016
Размер:
1.66 Mб
Скачать

Задание 2. Циклический вычислительный процесс конечные суммы и произведения

  1. Вычислить значение конечной суммы: .

  2. Вычислить значение конечной суммы: .

  3. Вычислить значение конечной суммы: .

  4. Вычислить значение конечной суммы: .

  5. Вычислить значение конечной суммы: .

  6. Вычислить значение конечной суммы: .

  7. Вычислить значение конечного произведения: .

  8. Вычислить значение конечного произведения: .

  9. Вычислить значение конечного произведения: .

  10. Вычислить значение конечного произведения: .

  11. Вычислить значение конечного произведения: .

  12. Вычислить значение конечного произведения: .

  13. Вычислить значение конечного произведения: .

  14. Вычислить значение конечного произведения: .

  15. Вычислить значение конечного произведения: .

Лабораторная работа № 6

Тема «Операторы цикла while и dowhile. Построение таблиц функций.»

  1. Цель работы

    1. Получение навыков в использовании оператора цикла for.

    2. Знакомство с итерационными процессами.

  1. Техническое обеспечение

    1. Персональная ЭВМ IBM PC/286 и более поздних моделей.

    2. Клавиатура.

    3. Дисплей.

    4. Печатающее устройство.

  1. Программное обеспечение

    1. Операционная система Windows

    2. Система программирования Visual C++ версия 6.0 или Borland C++ версия 3.1 и более поздние версии.

  2. Постановка задачи

Составить таблицу значений функции, используя ее разложение в степенной ряд. Значение функции считать с точностью . Результат вывести на экран.

  1. Содержание отчета

5.1. Тема и цель работы.

5.2. Схема алгоритма решения задачи.

5.3. Текст программы.

5.4. Результаты выполнения программы.

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

Следующий итерационный оператор, доступный в С, - это while. Его стандартный вид следующий:

while(условие)оператор;

где оператор– это или пустой, или простой, или составной оператор. Условием может быть любое выражение, имеющее в качестве истины ненулевое значение. Цикл выполняется, пока условие истинно. Когда условие становится ложным, выполняется строка, следующая за циклом.

Следующий пример показывает процедуру, обрабатывающую ввод с клавиатуры, работающий, пока не будет введен символ А:

void wait_for_char(void);

{

charch;

ch= ‘\0’; /* инициализацияch*/

while (ch!=’A’) ch = getchar();

}

Сначала chустанавливается в 0. Циклwhileначинается с проверкиchна равенствоА. Посколькуchинициализирован нулем, проверка условия выдаст истину и цикл начнется. При каждом нажатии клавиши на клавиатуре условие проверяется повторно. Если введеноА, условие становится ложным и цикл прекращается.

Как и цикл for, циклwhileсначала выполняет проверку, то есть тело цикла может вообще не выполняться. Благодаря этому можно не выполнять отдельные проверки перед циклом. Иллюстрацией этого является функцияpad(), добавляющая пробелы к концу строки до достижения предопределенной длины. Если строка уже имеет необходимую длину, то пробелы не будут добавляться:

void pad(char *s, int length)

{

intl;

l=strlen(s); /* определение длины */

while (l<length) {

s[l] = ‘ ‘; /* вставка пробела */

}

s[l] = ‘\0’; /* строки должны заканчиваться нулем */

}

Аргументами pad()являютсяs– указатель на удлиняемую строку иlength– желаемая длина строкиs. Если строкаsимеет длину, равную или большеlength, то код внутри цикла выполняться не будет выполняться. Если длина строкиsменьше чемlength, тоpad()добавляет требуемое число пробелов к строке. Стандартная функцияstrlen()возвращает длину строки.

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

void func1(void)

{

int working;

working = 1; /* т. е. истина */

while (working) {

working = process1();

if (working)

working = process2();

if (working)

working=process3();

}

}

Здесь любая из трех подпрограмм может вернуть ложь и вызвать остановку цикла.

В теле цикла может и не быть никаких операторов. Например:

while ((ch = getchar()) != ‘A’;

просто зацикливается до тех пор, пока с клавиатуры не введется буква А..

    1. Оператор dowhile

В противоположность циклам forиwhile, сначала проверяющим условие, циклdowhileпроверяет условие в конце. То есть, циклdowhileвсегда выполняется, по крайней мере один раз. Стандартный вид циклаdowhileследующий:

do{

последовательность операторов;

} while(условие);

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

Данный цикл dowhileосуществляет чтение чисел с клавиатуры, пока одно из них станет меньше либо равно 100:

do {

scanf(“%d”, &num);

}while(num> 100);

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

void menu(void)

{

char ch;

printf(“1. Проверка орфографии\n”);

printf(“2. Корректировка ошибок орфографии\n”);

printf(“3. Вывод ошибок орфографии на экран\n”);

printf(“ Сделайте ваш выбор: “);

do{

ch=getche(); /* чтение клавиатуры */

switch (ch) {

case ‘1’ :

check_spelling();

break;

case ‘2’ :

correct_errors();

break;

case ‘3’ :

display_errors();

break;

}

} while (ch!=’1’ && ch!=’2’ && ch=’3’);

}

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

    1. Оператор break

Оператор breakимеет два назначения. Первое – это окончание работы оператораswitch. Второе – это принудительное окончание цикла, минуя стандартную проверку условия. Данное значение здесь и рассматривается.

Когда оператор breakвстречается в теле цикла, цикл немедленно заканчивается и выполнение программы переходит на строку, следующую за циклом. Например:

#include <stdio.h>

main(void)

{

int t;

for (t=0; t<100; t++) {

printf(“%d “, t);

if (t = = 10) break;

}

}

Данная программа выводит числа от 0 до 10 включительно и заканчивает работу, поскольку breakвызывает немедленный выход из цикла, минуя условиеt< 100.

Оператор breakвызывает выход из самого внутреннего цикла. Например:

for(t=0;t<100; ++t) {

count = 1;

for( ; ; ) {

printf(“%d “, count);

count ++;

if (count = = 10) break;

}

}

выводит числа от 1 до 10 включительно 100 раз. Каждый раз, когда встречается break, контроль передается внешнему циклуfor.

    1. Оператор continue

Работа оператора continueчем-то похожа на работу оператораbreak. Но вместо форсированного окончанияcontinueпереходит с следующей итерации цикла, пропуская оставшийся код цикла. Например, следующая процедура выводит только положительные числа:

do {

scanf(“%d”, &x);

if (x<0) continue;

printf(“%d “, x);

} while(x!= 100);

В циклах whileиdowhileоператорcontinueвызывает переход к проверке условия и затем продолжает работу цикла. В случаеforвыполняется часть увеличения, затем проверяется условие и, наконец, выполняется само тело цикла. Предыдущий пример может быть изменен для вывода только 100 чисел следующим образом:

for (t=0; t<100; ++t) {

scanf(“%d”, &x);

if (x<0) continue;

printf(“%d “, x);

}

  1. Варианты задания

  1. Вводить последовательность чисел до тех пор, пока их сумма не достигнет М(М вводится и больше 0).Ввести, какое количество чисел составили искомую сумму (саму сумму тоже).

  2. Вводить последовательность до тех пор, пока не встретятся 3 подряд идущих положительных числа. Тогда прервать ввод и сообщить, сколько во введенной последовательности было:

а) всего чисел,

б) положительных чисел,

в) отрицательных чисел.

  1. Вычислить приближенное значение бесконечной суммы с точностью до =0,0001.

  1. Вычислить приближенное значение бесконечной суммы с точностью до =0,05.

  2. Вычислить приближенное значение бесконечной суммы с точностью до =0,00005.

  3. Вычислить приближенное значение бесконечной суммы с точностью до =0,0001.

  4. Вычислить приближенное значение бесконечной суммы с точностью до =0,001.

  5. Вычислить приближенное значение бесконечной суммы с точностью до =0,005.

  6. Вычислить приближенное значение бесконечной суммы с точностью до =0,0005.

  7. Вычислить приближенное значение бесконечной суммы с точностью до =0,01.

Вычислить приближенное значение бесконечной суммы с точностью до =0,05.

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