- •Оглавление
- •ВВЕДЕНИЕ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 2 ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЙ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 3 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 5 ОДНОМЕРНЫЕ МАССИВЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 6 ОБРАБОТКА МАТРИЦ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 7 ДИНАМИЧЕСКИЕ МАССИВЫ
- •ЛАБОРАТОРНАЯ РАБОТА № 8 ТЕКСТОВЫЕ ФАЙЛЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 9 СТРУКТУРЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 10 ДВОИЧНЫЕ ФАЙЛЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 11 ФУНКЦИИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 12 РЕКУРСИВНЫЕ ФУНКЦИИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 13 ОДНОСВЯЗНЫЕ СПИСКИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 14 ДВУСВЯЗНЫЕ ЛИНЕЙНЫЕ СПИСКИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 15 АЛГОРИТМЫ НА ГРАФАХ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 16 БИНАРНЫЕ ДЕРЕВЬЯ
- •Задания
- •Задание
- •ЛАБОРАТОРНАЯ РАБОТА № 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
- •ЛАБОРАТОРНАЯ РАБОТА № 19 ОБРАБОТКА ФАЙЛОВ
- •ЛАБОРАТОРНАЯ РАБОТА № 20 РАБОТА С ДИНАМИЧЕСКОЙ ПАМЯТЬЮ
- •ЛАБОРАТОРНАЯ РАБОТА № 21 РАБОТА С ПРЕРЫВАНИЯМИ
- •ЛАБОРАТОРНАЯ РАБОТА № 22 ПЕРЕМЕЩЕНИЕ ПРОГРАММ ПО ПАМЯТИ
- •ЛАБОРАТОРНАЯ РАБОТА № 23 МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ
- •ЛАБОРАТОРНАЯ РАБОТА № 24 КОНСОЛЬНОЕ WINDOWS-ПРИЛОЖЕНИЕ
- •ЛАБОРАТОРНАЯ РАБОТА № 25 ОКОННЫЕ WINDOWS-ПРИЛОЖЕНИЯ
- •ЛАБОРАТОРНАЯ РАБОТА № 26 ПРОГРАММИРОВАНИЕ СОПРОЦЕССОРА
- •Задания
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- •Основной
- •Дополнительный
ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
Цель работы – овладеть практическими навыками разработки и программирования алгоритмов итерационной циклической структуры; приобрести дальнейшие навыки по отладке и тестированию программ.
Задания
1.Изучить:
а) организацию итерационных циклов; б)возможности языка программирования для организации таких цик-
лов.
2.Разработать алгоритмы решения задач для данных заданий.
3.Составить программы решения задач для данных заданий.
Контрольныевопросы
1.Что такое итерационный циклический процесс? Его отличия от цикла с заданным числом повторений.
2.В чем заключается сущность метода итераций при вычислении интеграла? Как определить число итераций, необходимых для получения значения интеграла с требуемой точностью?
3.Почему при программировании итерационных процессов не используются индексированные переменные для обозначения последовательных приближений к корню? Сколько соседних приближений одновременно используются в вычислениях?
4.Что будет выведено на экран компьютера при выполнении следующего фрагмента программы:
int x = 10; while (x > 0)
{ cout << x << endl; x = x + 3; }
5.Какое различие между выполнением операторов while и do-while?
6.Какой из следующих вариантов представляет собой ключевое слово: for, For или FOR.
7.Представить общий формат инструкции for.
8.Если цикл включает инструкцию switch, то приведет ли к завершению этого цикла инструкция break, принадлежащая инструкции switch?
9.Написать for-инструкцию для цикла, который считает от 1000 до 0 с шагом – 2.
10.Допустим ли следующий фрагмент кода?
for ( int i=0; i<num; i++) sum +=i;
Языки программирования. Метод. указания по лаб. работам |
-20- |
ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
Контрольные вопросы
count =i;
11.Пояснить назначение инструкции break в цикле.
12.Найти и исправить ошибки в следующих операторах: while ( c < k)
{ s = s+c; c++;
Вариантызаданий
Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями.
В вариантах № 1–5 использовать метод прямоугольников. Для построения прямоугольника использовать левый конец отрезка.
1. y = 0, y =5x − x2 +14.
2.y = x2 + 2x + 2, y = x2 + 4x +5, y =1.
3.y = −x2 + 2x + 2, y = −x2 −4x −1, y =3.
4.y =3x2 −4x + 2, y = 20 − x.
5.y = −2x2 +3x +6, y = x + 2.
Ввариантах № 6–10 использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка.
6.y = 0, y = −2(x −1)2 +8.
7.y = 0, y = −2(x −3)2 + 2.
8.y = x, x −3y + 2 = 0.
9.x = 0, y =sin x, y = cos x, x = π2 .
10.y = −2x2 +3x +6, y = x + 2.
В вариантах № 11–15 использовать метод прямоугольников. Для построения прямоугольника использовать середину отрезка.
11.y = 0, y =5x − x2 +14.
12.y = x2 + 2x + 2, y = x2 + 4x +5, y =1.
13.y = −x2 + 2x + 2, y = −x2 −4x −1, y =3.
14.y =3x2 −4x + 2, y = 20 − x.
15.y = −2x2 +3x +6, y = x + 2.
Ввариантах № 16–20 использовать метод трапеций.
16.y = 0, y = −2(x −1)2 +8.
17.y = 0, y = −2(x −3)2 + 2.
18.y = x, x −3y + 2 = 0.
19. x = 0, y =sin x, y = cos x, x = π2 .
Языки программирования. Метод. указания по лаб. работам |
-21- |
ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
Варианты заданий
20. y = −2x2 +3x +6, y = x + 2.
Ввариантах № 21–25 использовать формулу Симпсона.
21.y = 0, y =5x − x2 +14.
22.y = x2 + 2x + 2, y = x2 + 4x +5, y =1.
23. y = −x2 + 2x + 2, y = −x2 −4x −1, y =3.
24.y =3x2 −4x + 2, y = 20 − x.
25.y = −2x2 +3x +6, y = x + 2.
26.Дано целое число N > 2 и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на равные отрезки длины H с концами в N точках вида A, A + H, A + 2H, A + 3H, ..., B. Вывести значение H и набор из N точек, образующий разбиение отрезка [A, B].
27.Дано целое число N > 2 и две вещественные точки на числовой оси:
A, B (A < B). Функция F(X) задана форм улой F(X) = 1 – sin(X). Вывести значения функции F в N равноотстоящих точках, образующих разбиение отрезка [A, B]: F(A), F(A + H), F(A + 2H), ..., F(B).
28. Дано число D > 0. Последовательность чисел AN определяется
следующим образом: A1 = 2, AN = 2 + 1/AN–1. Найти первый из номеров K, для которых выполняется условие |AK – AK–1| < D, и вывести этот номер, а также
числа AK–1 и AK.
29. Дано число D > 0. Последовательность чисел AN определяется сле-
дующим образом: A1 = 1, A2 = 2, AN = (AN–2 + AN–1)/2. Найти первый из номеров K, для которых выполняется условие |AK – AK–1| < D, и вывести этот
номер, а также числа AK–1 и AK.
Примеррешениявариантазадания
Вычислить приближенно на отрезке [a, b] площадь фигуры, ограниченной функциями f(x)=x 2 + 1 и f(x)=x+3.
Предварительно находим точки M1 (–1,2) и M 2 (2, 5) пересечения гра-
фиков, решая систему двух уравнений. Отсюда следует, что на отрезке [–1, 2] требуется определить площадь фигуры между прямой и параболой. Площадь данной фигуры S = S1 –S 2 , где S1 – площадь фигуры на отрезке [–1, 2] огра-
ниченной прямой, а S 2 – площадь фигуры на отрезке [–1, 2], ограниченной
параболой. Площадь данных фигур определяется по формулам приближенного вычисления интеграла от функции f(x).
Итак, требуется вычислить ∫b f (x)dx, если f (x) непрерывна на [a,b].
a
Для вычисления разделим отрезок [a,b] точками a = x0 ,x1, x2 , , xn =b на n
Языки программирования. Метод. указания по лаб. работам |
-22- |
ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
Пример решения варианта задания
равных частей, имеющих длину ∆x = b −n a . Найдем значение функции f (x)
в точках x0 , x1, , xn , обозначив их следующим образом: y0 = f (x0 ), y1 = f (x1 ), , yn = f (xn ).
n−1 |
n |
Составим суммы Sn−1 = ∑yi∆x и Sn = ∑yi∆x . |
|
i=0 |
i=1 |
Суммы Sn−1 и Sn являются интегральными суммами для f (x) на [a,b]. Из рис. 4.1 видно, что Sn−1 выражает площадь «вписанной ступенчатой фигуры», а Sn – площадь «описывающей ступенчатой фигуры» относительно
«криволинейной трапеции», соответствующей ∫b |
f (x)dx. Следовательно, |
|||
можно считать, что |
|
|
a |
|
|
|
|
|
|
∫b |
f (x)dx ≈ Sn−1 |
= b −a (y0 + y1 + + yn−1 ), |
||
a |
|
|
n |
|
|
∫b |
f (x)dx ≈ Sn |
= b −a (y1 + y2 + + yn ). |
|
|
a |
|
n |
|
Эти две формулы и есть формулы прямоугольников.
Для определения площади можно использовать значение функции, которая вычисляется в середине отрезка [xi , x i+1 ], где i = 0, 1, …, n.
y
yn−1 yn
|
y2 |
|
|
|
y1 |
|
|
|
y0 |
|
|
|
∆x |
|
|
0 |
a = x0 x1 x2 |
xn−1 xn = b |
x |
Рис. 4.1
Языки программирования. Метод. указания по лаб. работам |
-23- |
ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
Пример решения варианта задания
Кроме того, существуют формула трапеций для вычисления площади
b |
b −a y |
0 |
+ y |
n |
|
|
||
∫ f (x)dx ≈ |
n |
|
|
|
+ y1 + y2 |
+ + yn−1 |
||
|
|
2 |
|
|||||
a |
|
|
|
|
|
и формула Симпсона (формула парабол)
∫b |
f (x)dx ≈ b −a |
(y0 + yn )+ 2(y1 + + yn−1 )+ 4(y0,5 + y1,5 + + yn−0,5 ) . |
a |
6n |
|
Здесь y 0.5 , y1.5 , …, y n−0.5 значения функции, которые вычисляются в середине
отрезов ∆x .
Ниже дан код программы, которая решает поставленную задачу. Площадь S1 вычисляется при помощи формулы трапеции, а S 2 – по формуле Симпсона.
Анализ задачи.
1.Начальные данные:
а) переменные a и b для границ интервала;
б)переменные S, S1, S2 для значений площадей;
в) переменные w1, w2 для значений промежуточных сумм формулы Симпсона;
г) переменная n для числа точек интегрирования; д)переменная x для значения аргумента функции;
е) переменная h для длины интервала. void main()
{
float a = -1, b = 2, h, x;
float S, S1=0, S2=0, w1 = 0, w2 =0; float n;
clrscr();
cout << "Введи число точек на интервале n= "; cin >> n;
h = (b-a)/n;
// Вычисляем площадь по формуле трапеций. for (x=a+h;x<=b-h;x+=h)
S1+= x+3.;
S1 = S1 + (a+3. + b+3. )*0.5;
S1 = S1*h;
Языки программирования. Метод. указания по лаб. работам |
-24- |
ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
Пример решения варианта задания
// Вычисляем площадь по формуле Симпсона. for (x=a+h;x<=b-h;x+=h)
w1=w1+x*x+1.; // Вычисляется 1 сумма в формуле Симпсона. w1=w1*2.;
for (x=a+h*0.5; x<=b-h*0.5; x+=h)
w2= w2+x*x+1.; // Вычисляется 2 сумма в формуле Симпсона. w2 =w2*4.;
S2 = w1 + w2 + a*a + 1 +b*b + 1; S2 = h*S2/6.;
S = S1-S2;
cout << "Площадь фигуры S= " << S << "\n"; getch(); }
В данном примере рассматриваются функции, интегралы которых определяются точно. Это очень удобно при тестировании составленной программы, ибо результат ее работы можно сравнить с точным решением. Такой подход – рассматривать известные решения общей задачи – является основным при отладке программ.
Языки программирования. Метод. указания по лаб. работам |
-25- |