- •Міністерство освіти і науки україни
- •Для студентів напряму підготовки 0804 "Комп’ютерні науки" усіх форм навчання
- •Харків, хнеу, 2008
- •Содержание
- •Общие положения
- •Требования к оформлению отчета
- •Часть 1(4 часа): Среда визуальной разработки программ Microsoft Visual Studio .Net
- •Разработка простейшего консольного приложения.
- •Часть 2(2 часа): Подготовка и решение на пэвм задач линейного характера
- •Краткие теоретические сведения
- •1.2. Стандартные типы данных, модификаторы,
- •1.3. Спецификаторы класса памяти
- •1.4. Операции
- •Лабораторная работа №2 Подготовка и решение на пк задач с разветвлением
- •Краткие теоретические сведения
- •2.1. Оператор if
- •If (условие) выражение;
- •If (условие) выражение1; else выражение2;
- •2.2. Оператор switch/case
- •2.3. Операторы break, continue и goto
- •Задания к лабораторной работе №2
- •Лабораторная работа №3 Подготовка и решение на пк задач с использованием циклов
- •Лабораторная работа №4 Применение функций для решения типовых экономических задач
- •Использование параметров функции для обмена информацией между функциями.
- •Создание собственных заголовочных файлов
- •Лабораторная работа №5 Обработка на пк одномерных массивов.
- •5.1. Краткие теоретические сведения
- •Лабораторная работа №6 Обработка на пк двумерных массивов.
- •Двумерные массивы
- •Приложение а. Среда визуальной разработки программ Microsoft Visual Studio .Net
- •1.1. Среда mde
- •1.2. Команды главного меню
- •1.3. Создание проекта
- •1.4. Ввод и редактирование исходного текста программы
- •1.5. Создание исполняемого файла
- •1.6. Запуск и отладка программы
- •Приложение №в
- •Спецификация программных требований
- •Целое число, выводится на экран. Пользовательский интерфейс
- •План тестирования
- •Текст программы
- •Результат работы программы
- •Краткие выводы по работе
Лабораторная работа №3 Подготовка и решение на пк задач с использованием циклов
Цель лабораторной работы – приобретение практических навыков по подготовке, отладке и выполнению циклических программ.
Перед выполнением лабораторной работы студент должен знать: основы применения стандартных операторов цикла: while, do while, for.
После выполнения лабораторной работы студент должен уметь: разрабатывать типовые циклические программы на языке С++.
Краткие теоретические сведения
Операторы цикла служат для выполнения некоторого фрагмента программы несколько раз. В редких случаях фрагмент выполняется в каждом последовательном шаге цикла без изменений; чаще каждый шаг цикла несколько отличается от предыдущего. Цикл может выполняться заданное заранее число шагов, а может завершаться при наступлении некоторого условия.
Существует три вида циклов: while, for и do.
Оператор цикла while называется циклом с предусловием и имеет следующий формат:
while (выражение) тело цикла;
Оператор while реализует алгоритм, представленный на рис. 1.
Рис. 1. Алгоритмы работы оператора while
В качестве выражения допускается использовать любое выражение языка С++, а в качестве тела любой оператор, в том числе пустой или составной. Схема выполнения оператора while следующая:
1. Вычисляется выражение.
2. Если выражение false, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение true, то выполняется тело цикла.
3. Процесс повторяется с пункта 1.
Тело цикла выполняется до тех пор, пока значение выражения равно true. Выражение вычисляется перед каждым выполнением оператора.
Цикла for имеет следующую формат:
for (выражение1; выражение2; выражение3;) тело цикла;
Оператор for реализует алгоритм, представленный на рис. 2.
Рис. 2. Алгоритмы работы оператора for
Выражение1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Схема выполнения оператора for:
1. Вычисляется выражение1.
2. Вычисляется выражение2.
3. Если значения выражения2 отлично от нуля (true), выполняется тело цикла, вычисляется выражение3 и осуществляется переход к пункту 2, если выражение2 равно нулю (false), то управление передается на оператор, следующий за оператором for.
Существенно то, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным.
Цикл for является удобной сокращенной записью для цикла while вида
выражение1;
while (выражение2) {
тело цикла;
выражение3;
}
Выражение1 служит для задания начальных условий выполнения цикла, выражение2 обеспечивает проверку условия выхода из цикла, а выражение3 модифицирует условия, заданные выражением1. Любое из выражений может быть опущено. Если опущено выражение2, то по умолчанию вместо него подставляется значение true. Например, цикл for
for (;выражение2; ) тело цикла;
с опущенными выражением1 и выражением3 эквивалентен циклу
while (выражение2) тело цикла;
Цикл for
for (;;) тело цикла;
со всеми опущенными выражениями эквивалентен циклу
while (true) тело цикла;
т.е. эквивалентен бесконечному циклу. Такой цикл может быть прерван только явным выходом из него с помощью операторов break, goto или return, содержащихся в теле цикла.
Оператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз. Формат оператора имеет следующий формат:
do тело цикла while (выражение);
Схема выполнения оператора do while :
1. Выполняется тело цикла (которое может быть составным оператором).
2. Вычисляется выражение.
3. Если выражение false, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение true, то выполнение оператора продолжается с пункта 1.
Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.
Оператор do while реализует алгоритм, представленный на рис. 3.
Рис. 3. Алгоритмы работы оператора do while
В отличие от цикла while, в котором проверка условия окончания цикла делается до выполнения тела цикла, в цикле do while такая проверка имеет место после выполнения тела цикла. Следовательно, тело цикла do while будет выполнено хотя бы один раз, даже если выражение имеет значение false с самого начала.
Задача 1
Вычислить площадь фигуры ограниченной линиями
Для вычисления площади фигуры ограниченной линиями можно использовать итерационное выражение , где , и
Текст программы
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
char buf[80];
double x,dx,f1,f2,s;
s=0.;
x=0.;
dx=1.0e-5;
f1=sqrt(x);
f2=sqrt(4.-3.*x);
for(;f1<f2;x=x+dx)
{
f1=sqrt(x);
f2=sqrt(4.-3.*x);
s=s+(f2-f1)*dx;
}
sprintf(buf," s=%6.2f\n x=%6.2f\n f1=%6.2f\n
f2=%6.2f\0",s,x,f1,f2);
return 0;
}
Результат
Задания к задаче № 1
№ |
Задание |
Цикл |
№ |
Задание |
Цикл |
1. |
for |
11. |
do while |
||
2. |
while |
12. |
while |
||
3. |
do while |
13. |
for |
||
4. |
for |
14. |
for |
||
5. |
while |
15. |
while |
||
6. |
do while |
16. |
do while |
||
7. |
while |
17. |
while |
||
8. |
do while |
18. |
do while |
||
9. |
for |
19. |
for |
||
10. |
while |
20. |
while |
Задача 2. Вычисление функции с помощью разложения в ряд
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью ε. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Вариант 9
Вариант 10
Вариант 11
Вариант 12
Вариант 13
Вариант 14
Вариант 15
Вариант 16
Вариант 17
Вариант 18
Вариант 19
Задача 3(ДОПОЛНИТЕЛЬНО на оценку 12). Составить программу вычисления корней уравнения f(x)=0 с точностью EPS = 0,0001.
Интервал локализации корня [a, b] известен.
Использовать:
а) метод простой итерации;
б) метод половинного деления отрезка [a, b] локализации корня;
в) метод Ньютона.
При составлении программы использовать операторы цикла
WHILE и DO WHILE .
Примечание.
1. Метод простой итерации состоит в том, что по i-му приближению корня находится i+1 приближение по формуле
Процесс продолжается до тех пор, пока относительная ошибка для двух последовательных приближений не станет меньше EPS:
Процесс итерации сходится на [a, b], если при всех .
Для начального значения корня x0 принять .
2. Метод половинного деления.
Всегда локализованный корень находится в том интервале, на концах которого значения функции имеют противоположные знаки. Если нужно определить корень с точностью EPS, то деление интервала пополам продолжают, пока его длина не станет меньше 2*EPS. В этом случае средина последнего интервала дает значение корня с нужной точностью.
3. Метод Ньютона состоит в последовательном вычислении по формуле:
Оценка ошибки k-го приближения корня выполняется так:
Начальное приближение корня можно взять равным .
Найти корень уравнения с помощью всех трех методов и сравнить полученные результаты, для чего подставить полученное значение в уравнение. Вычислить количество итераций, необходимых для нахождения корня для каждого метода.
1) (0; 2)
2) (1; 2)
3) (3; 4)
4) (1,5; 2,7)
5) (0,1; 0,6)
6) (0,5; 0,9)
7) (0; 1)
8) (0,5; 1)
9) (0,1; 0,8)
10) (0,1; 0,8)
11) (0,2; 1)
12) (1,5; 2)
13) (0,5; 1)
14) (0; 1)
15) (0,5; 1)
16) (1; 2)
17) (0,5; 1,5)
18) (0; 2)
19) (1; 2)
20) (0; 2)
Контрольные вопросы
1.Что такое циклический вычислительный процесс?
2.Какие операторы используются для организации циклов?
3.Опишите ситуации, когда следует использовать каждый из трех операторов цикла.
4.Какие три операции должны производиться в программе при организации любого цикла?
5.Охарактеризуйте преимущества, которые дает цикл for.