- •Лабораторная работа № 1
- •5.1 Линейная программа
- •Далее создадим файл:
- •Задания1
- •Лабораторная работа № 2
- •7. Варианты задания
- •Лабораторная работа № 3
- •5.2 Оператор if
- •Лабораторная работа № 4
- •Лабораторная работа № 5
- •Задание 2. Циклический вычислительный процесс конечные суммы и произведения
- •Лабораторная работа № 6
- •Лабораторная работа № 7
- •5.1 Одномерный массив
- •5.3 Индексация с помощью указателей
- •Лабораторная работа № 8
- •Лабораторная работа № 9
- •Лабораторная работа № 11
- •Задача 2. Параметры функции
- •Лабораторная работа № 12
- •Лабораторная работа № 13
- •5. Содержание отчета
- •Лабораторная работа № 14
- •5. Содержание отчета
- •Решение уравнения методом деления отрезка пополам (бисекций)
- •Лабораторная работа № 15
- •6.2.1 Метод средних прямоугольников
- •6.2.1 Метод трапеций
- •Лабораторная работа № 10
- •Лабораторная работа № 16
- •5. Содержание отчета
- •Директива #include
- •7. Методические указания
- •8. Варианты заданий.
- •Лабораторная работа № 17
- •Лабораторная работа № 18
- •Лабораторная работа № 19
- •5. Содержание отчета
- •6.1.1 Доступ к элементам структуры
- •6.1.2 Присваивание структур
- •Лабораторная работа № 20
- •Например, формула
- •Задание на программирование
Задание 2. Циклический вычислительный процесс конечные суммы и произведения
Вычислить значение конечной суммы: .
Вычислить значение конечной суммы: .
Вычислить значение конечной суммы: .
Вычислить значение конечной суммы: .
Вычислить значение конечной суммы: .
Вычислить значение конечной суммы: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Вычислить значение конечного произведения: .
Лабораторная работа № 6
Тема «Операторы цикла while и do … while. Построение таблиц функций.»
Цель работы
Получение навыков в использовании оператора цикла for.
Знакомство с итерационными процессами.
Техническое обеспечение
Персональная ЭВМ IBM PC/286 и более поздних моделей.
Клавиатура.
Дисплей.
Печатающее устройство.
Программное обеспечение
Операционная система Windows
Система программирования Visual C++ версия 6.0 или Borland C++ версия 3.1 и более поздние версии.
Постановка задачи
Составить таблицу значений функции, используя ее разложение в степенной ряд. Значение функции считать с точностью . Результат вывести на экран.
Содержание отчета
5.1. Тема и цель работы.
5.2. Схема алгоритма решения задачи.
5.3. Текст программы.
5.4. Результаты выполнения программы.
Оператор цикла 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’;
просто зацикливается до тех пор, пока с клавиатуры не введется буква А..
Оператор do … while
В противоположность циклам forиwhile, сначала проверяющим условие, циклdo…whileпроверяет условие в конце. То есть, циклdo…whileвсегда выполняется, по крайней мере один раз. Стандартный вид циклаdo…whileследующий:
do{
последовательность операторов;
} while(условие);
Хотя в фигурных скобках нет необходимости при наличии одного оператора, они обычно используются для улучшения читабельности и устранения недоразумений по поводу цикла while.
Данный цикл do…whileосуществляет чтение чисел с клавиатуры, пока одно из них станет меньше либо равно 100:
do {
scanf(“%d”, &num);
}while(num> 100);
Возможно, наиболее типичным использованием цикла do…whileявляется процедура выбора пунктов меню. Когда набран корректный ответ, она возвращает значение функции. Неправильный ответ приводит к повторному вводу. Следующий пример являет собой программу проверки орфографии:
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’);
}
В случае функции меню необходимо выполнить ее, по крайней мере, один раз. После отображения опций программа зацикливается до тех пор, пока не будет осуществлен корректный выбор.
Оператор 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.
Оператор continue
Работа оператора continueчем-то похожа на работу оператораbreak. Но вместо форсированного окончанияcontinueпереходит с следующей итерации цикла, пропуская оставшийся код цикла. Например, следующая процедура выводит только положительные числа:
do {
scanf(“%d”, &x);
if (x<0) continue;
printf(“%d “, x);
} while(x!= 100);
В циклах whileиdo…whileоператорcontinueвызывает переход к проверке условия и затем продолжает работу цикла. В случаеforвыполняется часть увеличения, затем проверяется условие и, наконец, выполняется само тело цикла. Предыдущий пример может быть изменен для вывода только 100 чисел следующим образом:
for (t=0; t<100; ++t) {
scanf(“%d”, &x);
if (x<0) continue;
printf(“%d “, x);
}
Варианты задания
Вводить последовательность чисел до тех пор, пока их сумма не достигнет М(М вводится и больше 0).Ввести, какое количество чисел составили искомую сумму (саму сумму тоже).
Вводить последовательность до тех пор, пока не встретятся 3 подряд идущих положительных числа. Тогда прервать ввод и сообщить, сколько во введенной последовательности было:
а) всего чисел,
б) положительных чисел,
в) отрицательных чисел.
Вычислить приближенное значение бесконечной суммы с точностью до =0,0001.
Вычислить приближенное значение бесконечной суммы с точностью до =0,05.
Вычислить приближенное значение бесконечной суммы с точностью до =0,00005.
Вычислить приближенное значение бесконечной суммы с точностью до =0,0001.
Вычислить приближенное значение бесконечной суммы с точностью до =0,001.
Вычислить приближенное значение бесконечной суммы с точностью до =0,005.
Вычислить приближенное значение бесконечной суммы с точностью до =0,0005.
Вычислить приближенное значение бесконечной суммы с точностью до =0,01.
Вычислить приближенное значение бесконечной суммы с точностью до =0,05.