- •А.В. Кравцов, н.В. Чеканцев, е.С. Шарова, м.С. Гынгазова, ю.А. Смышляева, э.Д. Иванчина Проблемно-ориентированная информатика химико-технологических процессов
- •Введение
- •1. Общая характеристика языков программирования
- •2. Основы программирования на языке turbo pascal
- •2.1. Оператор присваивания
- •2.2. Программирование линейных алгоритмов
- •2.3. Программирование разветвляющихся алгоритмов. Условный оператор
- •2.4. Оператор варианта
- •2.5. Программирование циклических алгоритмов
- •2.6. Одномерные массивы
- •2.7. Матрицы
- •2.8. Файлы
- •3. Технология программирования и модули
- •3.1. Подпрограммы
- •3.2. Использование стандартных модулей
- •3.2.1. Модуль Сrt. Работа с экраном в текстовом режиме
- •3.2.2. Модуль Graph . Работа с экраном в графическом режиме
- •3.2.3. Закрашенные области
- •3.2.4. Вывод текстовой информации
- •4. Решение функциональных и вычислительных задач химической технологии
- •4.1. Обработка экспериментальных данных
- •4.1.1 Интерполяционный многочлен Лагранжа
- •4.1.2. Интерполяционный многочлен Ньютона
- •4.2. Итерационные методы решения нелинейных уравнений
- •4.2.1. Метод деления отрезка пополам
- •4.2.2. Метод простых итераций
- •4.2.3. Метод Ньютона (метод касательных)
- •4.2.4. Примеры составления программ
- •4.3. Приближенное решение обыкновенных дифференциальных уравнений первого порядка
- •4.3.1. Метод Эйлера
- •4.3.2. Метод Рунге-Кутта
- •5. Основы работы с windows
- •Управление манипулятором мышь
- •Курсор ввода
- •Рабочий стол
- •Окно программы мой компьютер
- •Корзина
- •Панель задач
- •Файловая система и структура
- •5.1. Основы работы с Microsoft Word
- •5.1.1. Запуск программы Word
- •5.1.2. Элементы окна редактора Word
- •5.1.3. Набор текста
- •5.1.4. Сохранение и загрузка документов
- •5.1.5 Основы форматирования текста
- •5.1.6. Создание таблиц
- •5.1.7. Формульный редактор
- •5.2. Построение графиков с использованием Microsoft Excel
- •Формулы для вычисления линий тренда
- •6. Основы работы в среде delphi
- •6.1. Знакомство со средой Delphi
- •6.1.1. Главное окно
- •Пиктографические кнопки
- •6.1.2. Окно формы
- •6.1.3. Окно Инспектора Объектов
- •6.1.4. Окно кода программы
- •6.2. Основы визуального программирования в среде Delphi
- •6.2.1. Пустая форма и ее модификация
- •6.2.1.1. Настройка Delphi
- •6.2.1.2. Имена в Delphi
- •6.2.1.3. Изменение свойств формы
- •6.2.1.4. Размещение нового компонента
- •6.2.2. Реакция на события
- •6.2.2.1. Обработчик события OnClick
- •6.2.2.2. Динамическое изменение свойств компонента
- •6.3. Использование компонентов общего назначения
- •6.3.1. TFrame – рама и шаблоны компонентов
- •6.3.2. TMainMenu - главное меню формы (программы)
- •6.3.3. TPopupMenu - вспомогательное (локальное) меню
- •6.3.4. TLabel - метка для отображения текста
- •6.3.5. TEdit - ввод и отображение строки
- •6.3.6. TMemo - ввод и отображение текста
- •6.3.7. TButton – кнопка
- •6.3.8. TCheckBox - независимый переключатель
- •6.3.9. TRadioButton - зависимые переключатели
- •6.3.10. TListBox - список выбора
- •6.3.11. TComboBox – раскрывающийся список выбора
- •6.3.12. TScrollBar - управление значением величины
- •6.3.13. TGroupBox - панель группирования
- •6.3.14. TRadioGroup - группа зависимых переключателей
- •6.3.15. TPanel – панель
- •6.3.16. TActionList - механизм действий
- •7. Базы данных и базы знаний. Сеть интернет.
- •7.1. Системы сбора, хранения и обработки информации о протекании промышленного процесса
- •7.1.1 Общая характеристика систем управления базами данных
- •7.1.2 Иерархические субд
- •7.1.3 Сетевые базы данных
- •7.1.4 Реляционные базы данных
- •7.1.5 Среда быстрой разработки приложений Delphi
- •7.1.6 Язык sql как стандартный язык реляционных бд
- •7.1.7 Базы данных на нефтеперерабатывающих заводах. Единая тематическая витрина данных на ооо «по «Киришинефтеоргсинтез»
- •7.1.8 Базы знаний
- •7.2. Сеть интернет
- •7.2.1. Что такое Интернет
- •7.2.2. История возникновения Интернет
- •7.2.3 Интернет - компьютерные сети и сетевые протоколы. Семейство протоколов tcp/ip
- •7.2.4 Службы (сервисы) Интернет и архитектура клиент-сервер
- •7.2.5 Интернет в цифрах
- •8.1. Анализ и задание требований к безопасности
- •8. Средства защиты информации
- •8.2. Безопасность в прикладных системах
- •8.3 Проверка достоверности входных данных.
- •8.4. Проверка достоверности внутренней обработки данных
- •8.5. Аутентификация сообщений
- •8.6. Защита файлов прикладных систем
- •8.7. Контроль рабочего программного обеспечения
- •8.8. Защита системных тестовых данных
- •8.9. Безопасность в среде разработки и рабочей среде
- •8.10. Процедуры управления процессом внесения изменений
- •8.11. Технический анализ изменений, вносимых в операционную систему
- •8.12. Ограничения на внесение изменений в пакеты программ
- •Литература
- •Оглавление
- •Учебное издание
- •Проблемно-ориентированная информатика химико-технологических процессов
2.4. Оператор варианта
Оператор варианта (CASE ... OF) предназначен для программирования алгоритмов с множественным выбором.
Пример 2.4.1. Составить программу для вывода названий месяцев по их номеру.
VAR N:integer;
B EGIN
write(’Введите номер месяца : ’); readln(N);
CASE N OF
1: writeln(’ ЯНВАРЬ’);
2: writeln(’ ФЕВРАЛЬ’);
3: writeln(’ МАРТ’);
4: writeln(’ АПРЕЛЬ’);
5: writeln(’ МАЙ’);
6: writeln(’ ИЮНЬ’);
7: writeln(’ ИЮЛЬ’);
8: writeln(’ АВГУСТ’);
9: writeln(’ СЕНТЯБРЬ’);
10: writeln(’ ОКТЯБРЬ’);
11: writeln(’ НОЯБРЬ’);
12: writeln(’ ДЕКАБРЬ’);
ELSE writeln(’Вы неправильно ввели номер месяца ! ’);
END.
Пример 2.4.2. Составить программу вычисления сумм арифметической и геометрической прогрессий, а также определения значения заданного члена прогрессии.
Для арифметической прогрессии:
Для геометрической прогрессии:
VAR V, N:integer;
A1, B1, AN, BN, SA, SB, d, q:real;
B EGIN
writeln(’Выберите вид прогрессии : ’);
writeln(’ 1- арифметическая’);
writeln(’ 2- геометрическая’);
readln(V);
CASE V OF
1: BEGIN
writeln(’Вы выбрали арифметическую прогрессию.’);
write(’Введите первый член прогрессии A1 =’); readln(A1);
write(’Введите разность прогрессии d =’); readln(d);
write(’Введите номер N =’); readln(N);
AN:=A1+d(N-1);
SA:=(A1+AN)N/2;
writeln(N, ’-й член прогрессии равен =’,AN:6:3);
writeln(’Сумма первых ’,N,’ членов прогрессии равна =’,SA:6:3);
END;
2: BEGIN
writeln(’Вы выбрали геометрическую прогрессию.’);
write(’Введите первый член прогрессии B1 =’); readln(B1);
write(’Введите знаменатель прогрессии q =’); readln(q);
write(’Введите номер N =’); readln(N);
BN:=B1exp((N-1)ln(q));
SB:=(BNq-B1)/(q-1);
writeln(N, ’-й член прогрессии равен =’,BN:6:3);
writeln(’Сумма первых ’,N,’ членов прогрессии равна =’,SB:6:3);
END;
END.
2.5. Программирование циклических алгоритмов
Алгоритмы, в которых действия повторяются многократно, называются циклическими. Виды циклических алгоритмов и способы их программирования приведены в табл. 2.5.1. Часто используются циклы для расчета сумм, произведений, количества. Виды сумм и способы их расчета приведены в табл. 2.5.2. Примеры программ с циклическими алгоритмами приведены также в следующих разделах: 6, 7, 8.
В языке Паскаль существуют три оператора цикла: FOR … TO … DO, WHILE … DO, REPEAT … UNTIL.
Общий вид оператора WHILE A DO ST, где А – логическое выражение, ST – оператор, простой или составной.
WHILE X< >0 DO BEGIN G:= C+1/X; x:=x-1 END; В данном примере вычисляется логическое выражение типа X< >0.
Если оно «истина», то будут выполняться операторы G:= 1/X; X:=X-1; и управление опять будет передаваться вновь на проверку выражения X< >0. Как только условие X<>0, будет «ложь», будет выполняться оператор, следующий за END. То есть цикл повторяется пока X< >0.
Оператор цикла FOR:
FOR i:=n1 TO n2 DO ST;
где i - переменная цикла; n1 - конечное значение переменной; n2 - конечное значение переменой ST - оператор, простой или составной.
FOR i:= 1 TO 20 DO a:=a+1; При такой записи будет выполняться оператор A:=A+1; пока i поочередно принимает значения i= 1,2,...,20.
В операторе FOR шаг изменения параметра цикла равен 1, однако имеется разновидность цикла For или цикл по убывающим значениям параметра цикла,в этом случае параметр цикла изменяет свое значение с шагом -1 от N2 до N1 : FOR I:= n2 DOWNTO n1 DO ST; , FOR i:= 20 DOWNTO n2 DO A:=A+1;
Оператор с постпроверкой условия имеет следующий вид: REPEAT ... UNTIL, где REPEAT < операторы > UNTIL < условие >. Операторы выполняются хотя бы один раз, после чего вычисляется условие. Если значение условия есть FALSE, операторы повторяются, в противном случае оператор завершает свою работу.
Однако цикл может быть организован с помощью условного оператора и оператора безусловного перехода. Метки. Для указания последовательности выполнения программ используют метки. Метка может состоять из букв и цифр, но первой должна стоять буква. В качестве исключения метка может состоять только из цифр, в диапазоне от 0 до 9999. Все метки, используемые в программе, должны быть обозначены с помощью служебного слова LABEL. (Например, label c1,c2;).
Оператор безусловного перехода имеет следующий общий вид:
GOTO N,
где N – имя метки; GOTO - служебное слово.
Метка N описывается с помощью служебного слова LABEL и ставится перед следующим оператором, который должен быть выполнен.
Пример 2.5.1.
PROGRAM Met;
LABEL d1;
VAR p, y, x:real;
BEGIN
read(p);
GOTO d1;
Y:=ln(p)+1;
d1:X:= sqr(p);
write(x);
END.
В результате выполнения данной программы будет вычислена величина X. Значение У останется незаданным, так как управление в программе передается на оператор с меткой d1.
Пример 2.5.2. Составить программу для определения гидравлического сопротивления слоя насадки при изменении скорости газа от 10 до 15 м/с с шагом h=0.5 м/с.
где H - высота слоя, м,
dэ - эквивалентный диаметр, м,
- плотность газа, кг/м3,
wг - скорость газа, м/с.
Коэффициент гидравлического сопротивления рассчитывается по формуле:
где Re - критерий Рейнольдса – равен:
.
- динамическая вязкость газа, Пас.
Рассмотрим пример решения задачи с использованием оператора цикла WHILE ... DO.
VAR dP, L, H, d, w, p, Re, m, wn, wk, hw:real;
BEGIN
H:=1; d:=0.005; p:=1.35; m:=2.45E-6;
writeln(’ wn wk hw’);
readln(wn,wk,hw);
writeln(’ w Re L dP’);
w:=wn;
WHILE w<=wk DO
BEGIN
Re:=wdp/m;
IF Re<40 THEN L:=140/Re ELSE L:=16/exp(0.2ln(Re));
dP:=LH/dsqr(w)p/2;
writeln(w:5:2,’ ’,Re:10,’ ’,L:10,’ ’,dP:10);
w:=w+wh;
END;
END.
Рассмотрим пример решения задачи с использованием оператора цикла REPEAT ... UNTIL.
VAR dP, L, H, d, w, p, Re, m, wn, wk, hw:real;
BEGIN
H:=1;
d:=0.005;
p:=1.35;
m:=2.45E-6;
writeln(’ wn wk hw’);
readln(wn,wk,hw);
writeln(’ w Re L dP’);
w:=wn;
REPEAT
Re:=wdp/m;
IF Re<40 THEN L:=140/Re ELSE L:=16/exp(0.2ln(Re));
dP:=LH/dsqr(w)p/2;
writeln(w:5:2,’ ’,Re:10,’ ’,L:10,’ ’,dP:10);
w:=w+wh
UNTIL w>wk
END.
Пример 2.5.3. Составить программу для расчета удельной теплоемкости метана по эмпирической зависимости:
,
где a, b, c, d, e - эмпирические коэффициенты.
a=4.171;
b=14.4510-3;
c=0.26710-6;
d=0.0;
e=-1.72210-9.
Произвести расчеты для интервала температур от 0 до 500 К, с шагом 50 К.
LABLE 1;
CONST a=4.171;
b=14.45E-03;
c=0.267E-06;
d=0.0;
e=-1.722E-9;
VAR T, T1, T2, dT, Cp:real;
B EGIN
T1:=0;
T2:=500;
dT:=50;
T:=T1;
writeln(’Т,К Cp, Дж/мольK’);
1: Cp:=a+bT+csqr(T)+d/sqr(T)+eexp(3ln(T));
writeln(T:3:0,’ ’,Cp :9:4);
T:=T+dT;
IF T<T2 THEN GOTO 1;
writeln(’Расчет окончен ! ’);
END.
Пример 2.5.4. Составить программу для расчета выражения:
.
VAR F, S, P, x:real; i, k:integer;
BEGIN
write(’x=’); readln(x);
S:=0;
FOR i:=1 TO 11 DO
S:=S+exp(iln(x));
P:=1;
FOR k:=1 TO 20 DO
P:=Pexp(1/kln(x));
F:=exp(1/3ln(S))+P;
writeln(’S=’,S:10,’ P=’,P:10,’ F=’,F:10)
END.
Пример 2.5.5. Составить программу вычисления бесконечного ряда:
.
Условие
окончания расчета ряда:
,
(
= 0.0001).
CONST e=0.0001;
VAR i:integer; X, S, Y:real;
BEGIN
write(’Введите значение X =’); readln(X);
i:=0; {Номер слагаемого.}
y:=1; {Значение i-го слагаемого.}
S:=0; {Сумма ряда.}
REPEAT
S:=S+y; {Расчет суммы.}
i:=i+1;
y:=yx/i {Расчет следующего слагаемого.}
UNTIL y<e;
writeln(’Cумма бесконечного ряда =’, S:10:6);
END.
Пример 2.5.6.
PROGRAM sum;
VAR i,n:integer; s:real;
BEGIN
write('укажите число n ');
readln(n); s:=0; FOR i:=n DOWNTO 1 DO s:=s+i;
writeln('значение суммы ',s);
END.
Таблица 2.5.1
Способы программирования циклов различной структуры
(на
примере расчета суммы
).
Фрагмент блок – схемы |
Операторы |
1. Цикл с предварительным условием
|
а) С использованием цикла WHILE ... DO. S:=0; i:=1; WHILE i<=n DO BEGIN S:=S+a/sqr(i); i:=i+1 END;
б) С использованием операторов IF ... THEN и GOTO. S:=0; i:=1; 1: IF i<=n THEN BEGIN S:=S+a/sqr(i); i:=i+1; GOTO 1 END; |
Продолжение табл. 2.5.1.
|
а) С использованием цикла REPEAT ... UNTIL S:=0; i:=1; REPEAT S:=S+a/sqr(i); i:=i+1 UNTIL i>n;
б) С использованием операторов IF ... THEN и GOTO. S:=0; i:=1; 1: S:=S+a/sqr(i); i:=i+1 IF i<=n THEN GOTO 1; |
Таблица 2.5.2
Расчет сумм (произведений, количества)
Вид суммы |
Фрагмент программы |
1. «Простая» сумма
|
S:=0; FOR i:=1 TO N DO S:=S+1/sqr(i); |
|
S:=0; FOR k:=3 TO 15 DO IF 2i>10 THEN S:=S+sqr(-4+2i); |
|
S1:=0; S2:=0; FOR i:=1 TO n DO BEGIN S1:=S1+sqr(i); S2:=S2+sqrt(i) END; |
а)
|
а) S:=0; FOR i:=1 TO 5 DO FOR j:=1 TO 6 DO S:=S+exp(j-i); |
Продолжение таб. 2.5.2.
б)
|
б) S:=0; FOR i:=1 TO n DO BEGIN S2:=0; FOR j:=1 TO m DO S2:=S2+ij; S:=S+ln(i)S2; END; |
где ai=2ai-1, a1=1. |
a:=1; S:=0; FOR i:=1 TO 10 DO BEGIN S:=S+sqr(a); a:=2a; END; |
Расчет
произведения аналогичен расчету
суммы, только до цикла пишется оператор
P:=1,
а в цикле – выражение вида
P:=P<выражение,
стоящее под знаком произведения>.
Расчет количества – это расчет суммы
вида
|
|
