- •ОГЛАВЛЕНИЕ
- •1. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
- •2. РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ «ИНФОРМАТИКА»
- •2.1 Тематический план дисциплины
- •2.2. Описание содержания основных тем
- •3. ОПОРНЫЙ КОНСПЕКТ ЛЕКЦИЙ
- •3.1. Понятия информации, данных и информационных процессов
- •3.2. Устройство и принципы работы персонального компьютера
- •3.3. Программное обеспечение персонального компьютера
- •БАЗОВОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
- •ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
- •Системы и языки программирования
- •Пакеты прикладных программ
- •Интегрированные пакеты
- •Проблемно-ориентированные (специализированные) пакеты
- •Элементы алгоритмического языка Фортран
- •Простейшие операторы Фортрана
- •3.4. Программирование задач на простые переменные
- •Разветвляющийся алгоритм
- •Циклический алгоритм
- •3.5.Программирование задач на одномерные и двумерные массивы. Введение
- •Операторы Фортрана при работе с массивами
- •Ввод и вывод массивов
- •Суммирование, нахождение произведения и количества элементов массива
- •Перестановка элементов массива
- •4. ОПИСАНИЕ ЛАБОРАТОРНЫХ РАБОТ
- •Порядок выполнения лабораторной работы № 1
- •Порядок выполнения лабораторной работы № 2
- •Порядок выполнения лабораторной работы № 3
- •Задание №1.
- •Задание № 2
- •Задание № 3
- •Задание №4
- •6. МЕТОДИЧЕСКИЕ УКАЗАНИЯ И ПРИМЕРЫ ВЫПОЛНЕНИЯ КОНТРОЛЬНЫХ РАБОТ
- •Задание №1
- •Задание №2
- •Задание №3
- •Задание №4
- •7. КОНТРОЛЬ ЗНАНИЙ СТУДЕНТОВ
- •Таблица вариантов заданий
- •Задание №1. Архитектура ПЭВМ. Программное обеспечение
- •Контрольные вопросы
- •8. ГЛОССАРИЙ
- •9. СПИСОК ЛИТЕРАТУРЫ
Циклический алгоритм
Циклическим алгоритмом называется алгоритм, часть которого выполняется многократно с различными значениями изменяющейся по определенному закону переменной (переменной цикла). На рис. 9 приведена обобщенная схема циклического алгоритма.
|
|
x=xn |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
Тело цикла |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x=x+hx |
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x≤xk |
|
|
4 |
|
да |
|
|
|
|
|
||
|
|
нет |
|
|
|
|
|
|
Рис. 9. Обобщенная схема циклического алгоритма
Для организации цикла определяются переменная цикла (x) и его параметры - начальное и конечное значение переменной цикла и шаг ее изменения (xn, xk, hx). Блоки 1 – 4 называются блоками организации цикла:
1.Блок начального присвоения (переменной цикла присваивается начальное значение).
2.Тело цикла - многократно повторяющаяся часть алгоритма, внутри которой переменная цикла не изменяется. Телом цикла может быть любой алгоритм: линейный, разветвляющийся или циклический.
3.Блок приращения значения переменной цикла (переменная цикла изменяет свое значение на величину шага).
4.Блок проверки условия продолжения цикла (цикл выполняется до тех пор, пока значение переменной цикла не превысит xk).
45
Пример 1. Вычислить таблицу значений y= x при x, изменяющемся в интервале [xn;xk] с шагом hx. Параметры цикла xn, xk, hx задаются произвольно.
Телом цикла в данном примере является линейный алгоритм, состоящий из двух блоков: блока вычислений и блока печати.
Блок-схема |
Программа на Фортране |
|
xn, xk, hx |
|
WRITE(*,*) ’Введите xn,xk,hx’ |
||
|
|
READ(*,*) xn,xk,hx |
|
||
’ |
x |
y’ |
|
WRITE(*,*) ’ x |
y’ |
|
x=xn |
|
|||
|
x=xn |
10 |
y=SQRT(ABS(x)) |
|
|
|
|
WRITE(*,*) x,y |
|
||
|
|
|
|
|
|
|
|
|
|
x=x+hx |
|
|
y = |
x |
|
IF (x.LE.xk) GOTO 10 |
|
|
|
END |
|
||
|
|
|
|
|
|
|
|
x, y |
|
|
|
x=x+hx
да
x≤ xk
нет
конец
Одномерный циклический алгоритм реализуется, если имеется лишь одна переменная цикла. Рассмотрим случай, когда телом цикла является разветвляющийся алгоритм.
Пример 2. Вычислить таблицу значений функции
ax2 |
+bx +c, если |
x ≤1,3; |
y = |
если |
x >1,3 |
ax, |
при различных значениях переменной x, изменяющейся в интервале от xn = 0,1 до xk = 0,4. по закону арифметической прогрессии с шагом hx = 0,1. Здесь a, b, c – заданные константы (a = 0,5; b = 1; c = 2).
46
Блок-схема
a,b,c
xn, xk, hx
заголовок
x=xn
x≤ 0.3
нет да y=ax
y=ax2+bx+c
x, y
x=x+hx
да
x≤ xk
нет
конец
Программа на Фортране
WRITE(*,*) ’Введите a,b,c’ READ(*,*) a,b,c
WRITE(*,*) ’Введите xn,xk,hx’ READ(*,*) xn,xk,hx WRITE(*,*) ’ x y’
x=xn
4IF (x.LE.1.3) GOTO 5 y=ax
GOTO 6
5y=a*x**2+b*x+c
6WRITE(*,*) x,y x=x+hx
IF (x.LE.xk) GOTO 4 END
Часто бывает полезным перед тем, как запустить программу на счет, прокрутить алгоритм вручную. Приведем ручную прокрутку данного алгоритма.
1.Ввод исходных данных и параметров цикла.
2.Печать заголовка таблицы.
3.Присвоение начального значения переменной цикла x = 0,1.
4.x≤ 0,3 – да; y = ax = 0,5*0,1 = 0,05; печать 0,1 0,05; x = 0,2; x≤ 0,4 – да.
5.x≤ 0,3 – да; y = ax = 0,5*0,2 = 0,1; печать 0,2 0,1; x = 0,3; x≤ 0,4 – да.
6.x≤ 0,3 – да; y = ax = 0,5*0,3 = 0,15; печать 0,3 0,15; x = 0,4; x≤ 0,4 – да.
7.x≤ 0,3 – нет; y = ax2+bx+c = 0,5*0,4*0,4+1*0,4+2 = 2,48; печать 0,4 2,48; x
=0,5; x≤ 0,4 – нет.
8.Конец.
Циклический алгоритм, содержащий в теле цикла циклы по другим пере-
менным, называется многомерным циклом. Правило построения многомерных циклов:
47
1.Вначале записываются блоки начального присвоения, начиная с самого внешнего и кончая самым внутренним циклом.
2.Далее следует тело самого внутреннего цикла.
3.В заключение записываются парами блоки №3 и №4 (приращения и проверки условия продолжения цикла), начиная с самого внутреннего и кончая самым внешним циклом.
Рассмотрим пример двумерного циклического алгоритма, в котором телом внутреннего цикла является разветвляющийся алгоритм.
Пример 3. Вычислить таблицу значений функции
ax2 |
, |
если x ≤1,3; |
y = |
|
если x >1,3 |
ax, |
|
так, что для каждого значения а, изменяющегося в интервале [an;ak] с шагом ha, переменная x принимает все значения в интервале [xn;xk] с шагом hx.
Блок-схема
|
|
|
|
|
|
an,ak,ha |
|
|
|
|
|||||||
|
|
|
|
|
|
xn,xk,hx |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
’a x y’ |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
a=an |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
x=xn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нет |
|
т |
т |
|||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
е |
е |
||||||
|
|
|
|
|
|
x≤ 1,3 |
|
|
|
л |
л |
||||||
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
да |
|
о |
о |
|||||||
|
|
|
|
|
|
|
|
ц |
ц |
||||||||
|
|
|
|
|
|
y=ax2 |
|
|
|
|
|
и |
и |
||||
|
|
|
|
|
|
|
|
|
|
|
к |
к |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
л |
л |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
y=ax |
|
|
|
|
|
а |
а |
||||
|
|
|
|
|
|
|
|
|
|
п |
п |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
a,x,y |
|
о |
о |
||||||||
|
|
|
|
|
|
|
x |
a |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
x=x+hx |
|
|
|
|
|
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
||||||||
|
|
x≤ xk |
|
|
|
||||||||||||
|
|
|
нет |
|
|
|
|
|
|||||||||
|
|
a=a+ha |
|
|
|
||||||||||||
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
a≤ ak |
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
нет |
|
|
|
|||||||
|
|
|
|
|
|
конец |
|
|
|
|
|
|
Программа на Фортране
WRITE(*,*)’Введите an,ak,ha’ READ(*,*) an,ak,ha WRITE(*,*)’Введите xn,xk,hx’ READ(*,*) xn,xk,hx WRITE(*,*)’ a x y’
a=an 20 x=xn
15IF (x.LE.1.3) THEN y=a*x**2
ELSE y=a*x END IF
WRITE(*,*) a,x,y x=x+hx
IF (x.LE.xk) GOTO 15 a=a+ha
IF (a.LE.ak) GOTO 20 END
48
Пример 4. Поиск экстремального значения функции методом простого перебора значений аргументов.
Найти значения x, y, z с наименьшим z = f(x,y). Каждый из аргументов x, y
изменяется с заданным шагом в заданной области (см. рис. 10.).
y
-2 |
0 |
2 |
x
-2
Рис. 10. Иллюстрация к примеру 4
В данном случае область ограничена сверху осью абсцисс (y=0), а снизу – двумя прямыми y=x-2 и y=-x-2. Пусть z=2x+3y-2xy; hx =0,2; hy = 0,1. Условие ограничения снизу имеет вид: y ≥ x-2 и y ≥ -x-2. Минимальное значение функции z и соответствующие значения аргументов будут расположены в ячейках zm, xm, ym, причем в начале программы идет присвоение zm = f(xn,yn), где xn = -2, yn = 0. Далее организуется двумерный цикл, в котором x изменяется от xn = -2 до xk = 2, а y изменяется от yn = 0 до yk = -2, причем hx =0,2; hy = -0,1 (от-
рицательный шаг). Внутри тела цикла организован алгоритм поиска минимального значения функции при условии попадания аргументов в заданную олбласть.
49
Блок-схема
xn,xk,hx
yn,yk,hy
zm=f(xn,yn
x=xn
y=yn
да
x+y<-2
нет
да
x-y<-2
нет
z=f(x,y)
да z≥zm
нет
zm=z
xm=x
ym=y
y=y+hy
да
y≤ yk
нет
x=x+hx
да
x≤ xk
нет xm,ym,zm
конец
Программа на Фортране
WRITE(*,*)’Введите xn,xk,hx’ READ(*,*) xn,xk,hx WRITE(*,*)’Введите yn,yk,hy’ READ(*,*) yn,yk,hy zm=f(xn,yn)
x=xn 10 y=yn
5IF (x+y.LE.-2) GOTO 1 IF (x-y.LE.-2) GOTO 1 z=f(x,y)
IF (z.GE.zm) GOTO 1 zm=z
xm=x
ym=y 1 y=y+hy
IF (y.LE.yk) GOTO 5 x=x+hx
IF (x.LE.xk) GOTO 10 WRITE(*,*) xm,ym,zm END
50