- •Основы программирования
- •Учебное пособие и методические указания по выполнению практических занятий для студентов специальностей:
- •Isbn 966-7508-285
- •7.080401 – Информационные управляющие системы и технологии
- •Isbn 966-7508-285
- •Оглавление
- •Введение
- •Часть I. Основы вычислительной техники, алгоритмизации и программирования;
- •Часть II. Алгоритмизация информационных процессов;
- •Часть III. Алгоритмический язык с.
- •1. Краткие теоретические сведения
- •1.1. Структурно-функциональная организация среды пакета Turbo-Pascal
- •1.2. Среда программирования пакета Turbo-Pascal
- •1.3. Технология работы с текстовым редактором
- •1.4. Прогон и отладка программы
- •1.5. Алгоритмизация вычислительных процессов
- •1.6. Структура программы на языке Тurbo-Pascal
- •1.7. Типы данных
- •1.8. Выражения и стандартные функции
- •1.9. Массивы и записи
- •Var mas: array[1..2,1..3] of integer;
- •1.10. Основные операторы
- •1.11. Процедуры и функции
- •1.12. Работа с файлами
- •2. Методические указания к практическим занятиям
- •2. Текст программы:
- •2. Тексты программ:
- •2. Тексты программ:
- •2. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •Приложения Основные символы схем алгоритмов
- •Список рекомендуемой литературы
2. Тексты программ:
PROGRAM z41; (* 1-й способ с оператором перехода GOTO *)
CONST
k=2; (* поименованная константа *)
LABEL 1; (* метка *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
1: i:=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO fakt:=fakt*j;
a:=znak*EXP((k*i+1)*LN(k*x))/fakt;
s:=s+a;
IF ABS(a)>0.0001 THEN GOTO 1;
WRITE(‘При a= ’,a:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на’ 4:2,‘-ой итерации’);
END.
3а) Схема алгоритма задачи 4 (1-й способ (опера-торы IF и GOTO))
X
– аргумент
S
– сумма
а
– член ряда
znak
– знак члена ряда
i
– номер итерации
j
– счётчик циклов
K
– коэффициент
FAKT
–
факториал
Объявление
переменных
Вывод
результата
PROGRAM z42;
(* 2-й способ с оператором цикла WHILE *)
CONST
k=2; (* поименованная константа *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы,
переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
a:=1;
WHILE ABS(a)>0.0001 DO
BEGIN
i=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO
fakt:=fakt*i;
a:=znak*EXP((k*i+1)*LN(k*x))/fakt;
s:=s+a;
END;
WRITE(‘При a= ’,a:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на ’i:2,‘-ой итерации’);
END.
3б) Схема алгоритма задачи 4 (2-й способ (цикл WHILE))
X
– аргумент
S
– сумма
а
– член ряда
znak
– знак члена ряда
i
– номер итерации
j
– счётчик циклов
K
– коэффициент
FAKT
–
факториал
Объявление
переменных
Вывод
результата
PROGRAM z43;
(* 3-й способ с оператором цикла REPEAT *)
CONST
k=2; (* поименованная константа *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
REPEAT
i:=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO
fakt:=fakt*j;
a:=znak*EXP((k*i+1)*LN(k*x)/fakt;
s:=s+a:
UNTIL ABS(a)>0.0001;
WRITE(‘При а= ’,а:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на ’ i:2,‘-ой итерации’);
END.
3в) Схема алгоритма задачи 4 (3-й способ (цикл REPEAT))
X
– аргумент
S
– сумма
а
– член ряда
znak
– знак члена ряда
i
– номер итерации
j
– счётчик циклов
K
– коэффициент
FAKT
–
факториал
Объявление
переменных
Вывод
результата
PROGRAM z44; (* 4-й способ с операторами описания и вызова процедур и функций *)
CONST
k=2; (* поименованная константа )
VAR
x,s,a,i:REAL; (* переменная, сумма, элемент суммы,
номер элемента суммы *)
i1:INTEGER; (* целый тип номера элемента суммы *)
FUNCTION fakt(f:INTEGER):INTEGER; (* функция факториал *)
VAR fak,j:INTEGER; (* локальные переменные *)
BEGIN
fak:=1;
FOR j:=1 TO f DO
fak:=fak*j;
fakt:=fak;
END;
PROCEDURE summa(VAR,s:REAL; b:REAL); (* процедура суммы *)
BEGIN
s:=s+b;
END;
FUNCTION stepen(osn:REAL;step:INTEGER):RЕАL; (* функция степени *)
VAR k:INTEGER; (* локальные*)
st:REAL; (* переменные *)
BEGIN
st:=1.0;
FOR k:=1 TO step DO
st:=st*osn;
stepen:=st;
END;
BEGIN
s:=0.0;
i:=0;
x:=0.1;
REPEAT
summa(i,1.0);
i1:=TRUNC(i);
a:=stepen(-1.0,i1)* stepen(k*x,k*i1+1)/fakt(k*i1+1);
summa(s,a);
UNTIL ABS(a)<0.0001;
WRITE(‘При a= ’,a:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на ’,i1:2,‘-ой итерации’);
END.
3г) Схема алгоритма задачи 4 (4-й способ (FUNCTION и PROCEDURE))
Объявление
переменных
Вывод
результата
Описание
функции
Описание
процедуры
Описание
функции
Вызов
процедуры
Преобразование
к целому типу
Вызов
процедуры
Функция FAKT
F
– формальный параметр
j
– счётчик циклов
FAK
– промежуточная переменная
Объявление
переменных
Присвоение
значения функции
Передача
значения параметру
Процедура SUMMA
Передача
значений параметрам
S,
B
– формальные параметры
Функция STEPEN
OSN,
STEP
– формальные параметры
K
– счётчик циклов
ST
– промежуточная переменная
Объявление
переменных
Присвоение
значения функции
Передача
значений параметрам
Задача 5
1. Условие: Составить схему алгоритма и написать ВР-программу обработки одномерного массива целых чисел (вид обработки см. в табл. П. 2). Результат вывести на экран дисплея.
Пример: вид обработки заключается в подсчете количества положительных элементов массива.