- •РАсЧЁт систем водоснабжения и водоотведения на эвм
- •Рецензенты:
- •Введение
- •Глава I. Задачи в системах водоснабжения и водоотведения и математические методы их решения
- •1.1. Методология решения задач с помощью эвм
- •1.2. Задачи, решаемые в отрасли водоснабжения и водоотведения. Их классификация
- •1.3. Задачи, решаемые методами исследования операций
- •1.4. Критерии задач, решаемых в системах водоснабжения и водоотведения
- •1.5. Пример задачи проектирования очистных сооружений
- •1.6. Расчёт параметров по таблицам
- •1.6.1. Линейная интерполяция
- •1.6.2. Интерполяционный полином Ньютона для неравностоящих узлов интерполяции
- •Глава II. Проектирование водоотводящих сетей
- •М оделирование на эвм водоотводящей сети
- •М атематическая модель проектирования хозяйственно-бытовой новой сети
- •2.1. Водоотводящая сеть с точки зрения математики и алгоритм её расчёта
- •Глава III. Проектирование водопроводных сетей с помощью эвм
- •3.1. Подготовка к гидравлическому расчёту
- •3.2. Определение расчётных расходов
- •3.3. Описание программы v_cetu.Exe
- •3.4. Трассировка кольцевой сети. Требования к сети
- •3.5. Потокораспределение
- •3.6. Гидравлический расчет водопроводно-кольцевой сети. Метод Лобачева-Кросса
- •3.7. Метод Ньютона (касательных) решения нелинейных уравнений
- •3.8. Модифицированный метод Ньютона
- •3.9. Метод Ньютона для решения системы нелинейных уравнений
- •3.10. Метод Лобачева-Кросса
- •3.11. Высотное проектирование водопроводной сети. Определение диктующей точки
- •3.12. Определение пьезометрических отметок и построение пьезокарт
- •3.13. Внешняя увязка гидравлической кольцевой сети
- •3.14. Подготовка данных к расчёту на эвм внешней увязки кольцевой сети
- •Глава IV. Применение методов математического моделирования для анализа и расчета систем очистки природных и сточных вод. Принципы и расчёт процессов и аппаратов
- •4.1. Классификация процессов очистки природных и сточных вод
- •4.2. Общие принципы анализа и расчёта процессов и аппаратов очистки природных и сточных вод
- •Уравнения материального баланса
- •Концентрация
- •4.4. Интенсивность процессов и аппаратов
- •4.5. Технологические характеристики аппарата
- •4.6. Аппараты идеального смешения и вытеснения (предельные модели)
- •4.6.1. Аппараты идеального вытеснения
- •4.6.2. Аппарат идеального перемешивания (смешения)
- •4.6.3. Процессы промежуточного типа между идеальным смешением и идеальным вытеснением
- •4.7. Моделирование процесса отстаивания
- •4.8. Моделирование процессов коагуляции и флокуляции
- •4.9. Фильтрование
- •Глава V. Интернет – источник получения информации
- •Основные принципы, лежащие в основе работы сети Интернет
- •5.2. Технология поиска информации
- •Составляющие решения поисковой задачи
- •Цель поиска.
- •Средства поиска.
- •Методы.
- •Компьютерные технологии в учебном процессе
- •Задачи для практических занятий
- •Задания для лабораторных занятий
- •Тестовые вопросы по дисциплине «Расчёт систем ВиВ на эвм»
- •Тематика рефератов
- •Заключение
- •Основные приёмы редактора электронных таблиц Excel
- •Оглавление
- •Учебное издание Ирина Владимировна Журавлева
- •3 94006 Воронеж, ул. 20-летия Октября, 84
Основные приёмы редактора электронных таблиц Excel
Сведём основные функции Excel в таблицы. При описании сочетания клавиш знак «+» будет означать одновременное нажатие клавиш.
Сокращение ЛКМ обозначает клик левой клавишей мышки.
Сокращение ПКМ обозначает клик правой клавишей мышки.
Таблица П. 1.1
Сочетание клавиш для открытия, создания и сохранения
Сочетание клавиш |
Выполняемое действие |
F12 |
Сохранить как |
Shift+ F12 |
Сохранить рабочий файл с текущим именем в текущем расположении и в существующем формате |
Ctrl+S |
|
Ctrl+ F12 |
Открыть документ |
Ctrl+O |
|
Alt+L |
Открыть меню Сервис |
F4 или Alt+А |
Открыть список Папка |
Ctrl+ F1 |
Открыть область Задач |
F2 или двойной щелчок ЛКМ |
Открыть ячейку для редактирования |
Shift+ F3 |
Открыть Мастер функций |
F5 или Ctrl+G |
Открыть окно Переход |
Shift+ F10 |
Открыть контекстное меню |
Ctrl+N |
Создать новую пустую книгу |
Alt+4 |
Создать новую папку |
Alt+F11 |
Открывает редактор Microsoft Visual Basic, в котором можно создать макрос на языке Visual Basic для приложений (VBA) |
Ctrl+ Shift+F |
Открыть диалоговое окно Шрифт |
Ctrl+ Shift+P |
|
Ctrl+F |
Открыть диалоговое окно «Найти и заменить» |
Ctrl+Н |
|
Ctrl+K |
Открыть диалоговое окно «Добавление гиперссылки» |
Таблица П. 1.2
Сочетание клавиш для выхода и печати
Сочетание клавиш |
Выполняемое действие |
Alt+F4 |
Закрыть окно. Если были сделаны изменения, то высветится запрос на сохранение |
Alt+ Shift+F4 |
|
Ctrl+F4 |
Закрыть активное окно |
Ctrl+W |
Закрыть окно выбранной книги |
Ctrl+Р |
Печать |
Продолжение прил. 1
Таблица П. 1.3
Сочетание клавиш для правки
Сочетание клавиш |
Выполняемое действие |
Ctrl+С |
Копирование в буфер |
Ctrl+Insert |
|
Ctrl+’ |
Копировать формулу верхней ячейки в текущую |
Ctrl+V |
Вставить из буфера |
Shift+ Insert |
|
Shift+пробел |
Выделить строку |
Ctrl+ пробел |
Выделить столбец |
F4 |
Повторение последнего действия |
Shift+ F8 |
Выделить связный диапазон (щелкнуть на последней ячейке диапазона) |
Ctrl+ Shift+ F8 |
Выделить несвязный диапазон (щёлкать по нужным ячейкам) |
Ctrl+X |
Вырезать в буфер |
Shift+Delete |
|
Ctrl+D |
Заполнить ячейку значениями из ячейки выше. Если ячейка выше запрограммирована, то формула будет переноситься |
Ctrl+Z |
Отмена предыдущих действий |
Alt+Backspace |
|
Shift +Backspace |
Снять выделение |
Shift +F11 |
Вставка листа |
Alt+ Shift +F1 |
|
Ctrl+ Shift +7 |
Вставка внешней границы структуры (ячейки или выделенных ячеек) |
Ctrl+ Shift +- |
Удаление внешней границы структуры (ячейки или выделенных ячеек) |
Ctrl+; |
Вставка даты |
Ctrl+ Shift +; |
Вставка времени |
Ctrl+ Shift ++ |
Вставка ячейки |
Ctrl+9 |
Скрыть выделенные строки |
Ctrl+0 |
Скрыть выделенные столбцы |
Ctrl+ Shift +9 |
Отобразить скрытые строки в выделенном фрагменте |
Ctrl+ Shift +0 |
Отобразить скрытые столбцы в выделенном фрагменте |
Alt+Enter |
Переход к новой строке в ячейке |
Ctrl+ Enter |
Завершение ввода текущего значения во все выделенные ячейки |
Enter или |
Завершение ввода и переход в ячейку вниз (по умолчанию) |
Shift + Enter или |
Завершение ввода и переход в ячейку вверх |
Shift +Tab или |
Завершение ввода и переход в ячейку влево |
Shift +Home |
Выделить фрагмент от курсора до начала строки |
Tab или → |
Переход в ячейку вправо |
Продолжение прил. 1
Таблица П. 1.4
Клавиши форматирования ячеек
Сочетание клавиш |
Выполняемое действие |
Ctrl+ Shift +~ |
Применить общий числовой формат |
Ctrl+ Shift +$ |
Применить денежный формат с двумя десятичными знаками |
Ctrl+ Shift +% |
Применить процентный формат без дробной части |
Ctrl+ Shift +^ |
Применить экспоненциальный числовой формат с двумя десятичными знаками |
Ctrl+ Shift +# |
Применить формат дат с указанием дня, месяца и года |
Ctrl+ Shift +@ |
Применить формат времени с отражением часов и минут |
Ctrl+ Shift +! |
Применить числовой формат с двумя десятичными знаками, разделителем групп разрядов и знаком минус (-) для отрицательных значений |
Ctrl+2 или Ctrl+B |
Вкл./выкл. полужирное начертание |
Ctrl+3 или Ctrl+I |
Вкл./выкл. курсивное начертание |
Ctrl+4 или Ctrl+U |
Вкл./выкл. подчёркивание |
Ctrl+5 |
Зачеркнуть текст или удалить зачёркивание |
Ctrl+А |
Выделить лист целиком |
F7 |
Проверка орфографии |
Таблица П. 1.5
Арифметические операторы формул
Арифметический оператор |
Значение |
+ (плюс) |
Сложение |
- (минус) |
Вычитание |
* (звёздочка) |
Умножение |
/ (косая черта) |
Деление |
^ (знак крышки) |
Возведение в степень |
Таблица П. 1.6
Операторы сравнения (логическое значение либо ИСТИНА, либо ЛОЖЬ)
Оператор сравнения |
Значение |
Пример |
= (знак равенства) |
Равно |
А1=В1 |
> (знак «больше») |
Больше |
А1> В1 |
< (знак «меньше») |
Меньше |
А1< В1 |
(знак «больше или равно») |
Больше или равно |
А1> =В1 |
(знак «меньше или равно») |
Меньше или равно |
А1< =В1 |
(знак «не равно») |
Не равно |
А1 В1 |
Окончание прил. 1
Таблица П. 1.7
Операторы ссылок
Оператор ссылок |
Значение |
Пример |
: (двоеточие) |
Ставиться между ссылками на первую и последнюю ячейки диапазона |
В5:В15 |
; (точка с запятой) |
Оператор объединения нескольких ссылок в одну |
СУММ(В5:В15;D5:D15) |
Таблица П. 1.8
Приоритет операторов
Оператор |
Описание |
: (двоеточие) ; (точка с запятой) |
Операторы ссылок |
- |
Знак минус перед числом |
% |
Процент |
^ (знак крышки) |
Возведение в степень |
* (звёздочка) и / (косая черта) |
Умножение и деление |
+ (плюс) и - (минус) |
Сложение и вычитание |
& (амперсанд) |
Объединение двух текстовых строк в одну |
= и > и < и и и |
Сравнение |
Таблица П. 1.9
Стиль ссылок по умолчанию
Ячейки или диапазон ячеек |
Стиль |
Ячейка на пересечении столбца А и строки 10 |
А10 |
Диапазон ячеек: столбец А по строкам от 10 до 20 |
А10:А20 |
Диапазон ячеек по строке 4: столбцы В-Е |
В4:Е4 |
Все ячейки в строке 12 |
12:12 |
Все ячейки в строках с 4 по 11 |
4:11 |
Все ячейки в столбце Н |
Н:Н |
Все ячейки в столбцах с Н по J |
H:J |
Диапазон ячеек: столбцы А-Е, строки с 4 по 24 |
А4:Е24 |
Абсолютная адресация – обращение идёт к конкретной (неизменной) ячейки. Где бы не располагалась формула, осуществляется точная ссылка на ячейку |
$B$32 |
Абсолютная ссылка на постоянный столбец, номер строки определяется относительно |
$B32 |
Абсолютная ссылка на строку при относительной ссылке на столбец |
B$32 |
Ссылка на ячейку H22 с листа 1 этой же книги |
= Лист1!H22 |
Ячейка А1 с абсолютным адресом с листа, принадлежащего книге |
=‘[имя книги] имя листа’!$A$1 |
Приложение 2
program ceti_k2 (f,f1,input, output,fr); (* промпред. и РНС учитываются как 1 или 2 *)
uses dos, crt;
const ch=24; cek=3600; cs=86.4;
line='-------------------------------------------------------------------';
lz=' ************************************************************';
blue = 1;green =2; cyan = 3; red=4; magenta=5;brown=6;lightGray=7;
lightblue=9; lightGreen = 10; lightcyan=11;lightred=12;lightmagenta=13;
yellow=14; white =15;
type frl=file of real; ime=string[30]; ind=1..5; g= string[3];
ra=array[ind] of integer;
id=1..200; pl=array[id] of real; b=array[id] of integer;
strok=array[1..9] of real; masiv=array[1..3,ind] of real;
r1=array[ind] of real;
var p:ra; ism:1..3; nkv,nb,nr,ib,kb,ir:integer;
f,f2,f1,fr:text; name,FIO:ime; k_dat:string[3];
m:array[id,1..9] of byte; buf1:array[id] of byte;
hk,pp:array[id,1..9] of ind; Nkb:array[id,1..5] of ind;
smen:ra; x,Qmid,Qmax,Qmin,Kmax,Kmin,h1,LSM,KSM,Nbb, NO2:real;
nsb,nsr,Sp,kol,NN,Nk,Kkb,buf,buf2,dt:b; NG,lu,znz,zkz:pl;
qmaxs,qmids,S,qb,qk,q1,qcit,qsr,qtr,Kgen,qss,L,ld,zn,zk,dd,h2,imin,Iz:pl;
Qsm,ks:masiv; npp,i,rr,j:ind;
vz,z : char; r,jr,jb,jk,NUch:id;
Kpp,Lpp,qrg,k,O2,Qpp,Qpmax,Qpr,Kch,Ksc,qo,q:r1; qns:strok;
function kof(a:real):real;
const q:array[1..9] of integer = (5,10,20,50,100,300,500,1000,5000);
Ka:array[1..9] of real=(2.5,2.1,1.9,1.7,1.6,1.55,1.5,1.47,1.44);
var i: integer;
begin (* начало функции *)
if a<=q[1] then kof:=Ka[1];
if a>q[9] then kof:=Ka[9];
for i:=1 to 8 do
if (a>q[i])and(a<=q[i+1]) then
kof:=Ka[i]+((Ka[i+1]-Ka[i])*(a-q[i]))/(q[i+1]-q[i]);
end;(* конец функции *)
function kf(a:real):real;
const q:array[1..9] of integer = (5,10,20,50,100,300,500,1000,5000);
Ki:array[1..9] of real=(0.38,0.45,0.5,0.55,0.59,0.62,0.66,0.69,0.71);
var i: integer;
begin (* начало функции *)
if a<=q[1] then kf:=Ki[1];
if a>q[9] then kf:=Ki[9];
for i:=1 to 8 do
Продолжение прил. 2
if (a>q[i])and(a<=q[i+1]) then
kf:=Ki[i]+((Ki[i+1]-Ki[i])*(a-q[i]))/(q[i+1]-q[i]);
end; (* конец функции *)
procedure vch1;
var k1,k2:pl; k3,k4:real;
begin
writeln(fr,' ', FIO);
writeln(fr,'Определение величин площадей стока и среднего расхода сточных вод');
writeln(fr,' таблица 1');
writeln(fr,line);
writeln(fr,' NN |Номер |Площадь |Номер | Модуль |Средний |');
writeln(fr,'кварталов |площади|стока, |района| стока, |секундный |Пpимечание');
writeln(fr,' |стока | S га |города|л/(сек*га)|расход,л/с|');
writeln(fr,line);
for r:=1 to nkv do begin
j:=nsr[r]; writeln(fr,r:3,nsb[r]:12,S[r]:12:2,j:4,qo[j]:12:4,qk[r]:10:3);
end;
writeln(fr,line);
for ib:=1 to nb do begin
write(fr,'бассейн N ',ib:2,' qбас.=',qb[ib]:8:3,' л/с');
k1[ib]:=kof(qb[ib]); k2[ib]:=kf(qb[ib]);
writeln(fr,' Kgen max=',k1[ib]:5:3,' Kgen min=',k2[ib]:5:3);
end;
for j:=1 to nr do begin
write(fr,'р-он города ',j:2,' Qр-она= ',(qrg[j]*cs):8:3,' м3/сут');
k1[j]:=kof(qrg[j]); k2[j]:=kf(qrg[j]);
writeln(fr,' Kgen max=',k1[j]:5:3,' Kgen min=',k2[j]:5:3);
end;
k3:=kof(Qmid); k4:=kf(Qmid);
Qmax:=Qmid*k3; Qmin:=Qmid*k4;
writeln(fr,' Расходы по гоpоду qmid=',Qmid:8:3,' л/с ','Kgen max=',k3:5:3,' Kgen min=',k4:5:3);
writeln(fr,'Qmid=',(Qmid*3.6):10:3,'м3/ч Qсp.cут=',(Qmid*3.6*ch):10:3,' м3/cут');
writeln(fr,' qmax=', Qmax:10:3,' л/с Qmax=',(Qmax*ch*3.6):10:3,' м3/сут ');
writeln(fr,' qmin=', Qmin:10:3,' л/с Qmin=',(Qmin*ch*3.6):10:3,' м3/сут ');
writeln(fr,line);
end;
procedure smes;
var zk,zl,qzm,qsy,N,Npbb,NpO2: real;
Продолжение прил. 2
begin
zk:=0; zl:=0; qzm:=0; N:=0;
For rr:=1 to npp do begin
zk:=zk+Kpp[rr]*Qpp[rr]; zl:=zl+Lpp[rr]*Qpp[rr]; qzm:=qzm+Qpp[rr];
end;
Npbb:=zk/65; NpO2:=zl/75;
For r:=1 to nr do begin
k[r]:=65000/q[r]; O2[r]:=75000/q[r];
qsy:=qrg[r]*cs; NG[r]:=qsy/q[r]*1000;
zk:=zk+k[r]*qsy; zl:=zl+O2[r]*qsy;
qzm:=qzm+qsy; N:=N+NG[r];
end;
LSM:=zl/qzm; KSM:=zk/qzm; NG[nr+1]:=N;
Nbb:=N+Npbb; NO2:=N+NpO2;
(* writeln(f2,'дошла до конца подпрограммы smes'); read(f1,vz); *)
end;(*конец пpоцедуpы smes *)
procedure vch2;
var i:ind;
begin
writeln(fr,' ', FIO);
writeln(fr,' Определение pасходов от пpомпpедпpиятий Таблица 2 ');
writeln(fr,line);
write(fr,'NN пpомышленных пpедпpиятий|');
for i:=1 to npp do write(fr,i:8,'|'); writeln(fr);
writeln(fr,'количество пpоизводственных|');
write(fr,' стоков в м3/сут |');
for i:=1 to npp do write(fr,Qpp[i]:8:2,'|'); writeln(fr);
writeln(fr,'сp.pасходы по сменам,м3/ч|');
write(fr,' I смена |');
for i:=1 to npp do write(fr,Qsm[1,i]:8:2,'|'); writeln(fr);
write(fr,' II смена |');
for i:=1 to npp do write(fr,Qsm[2,i]:8:2,'|');writeln(fr);
write(fr,' III смена |');
for i:=1 to npp do write(fr,Qsm[3,i]:8:2,'|'); writeln(fr);
write(fr,'Kчас. неpавномеpности |');
for i:=1 to npp do write(fr,Kch[i]:8:2,'|'); writeln(fr);
write(fr,'max секундный pасход, л/сек|');
for i:=1 to npp do write(fr,Qpr[i]:8:3,'|'); writeln(fr); writeln(fr,line);
writeln(fr,'Определение концентраций загрязнений взвешенных веществ и БПК в мг/л');
for i:=1 to nr do
writeln(fr,'р-он города ',i:2,' K[',i:1,']= ',k[i]:5:2,' БПК[',i:1,']= ',O2[i]:5:2);
Продолжение прил. 2
writeln(fr,'Kонцентрация смеси, поступающих стоков на ОСК по вз.в-вам и БПК в мг/л');
writeln(fr,' Kсм = ',KSM:7:2,' БПКсм = ',LSM:7:2, ' мг/л');
writeln(fr,'Общее число жителей в городе', NG[nr+1]:14:0);
writeln(fr,'Приведенное число жителей по:');
writeln(fr,'по вз.в-вам',Nbb:14:0,' и БПКполн ',NO2:14:0, ' человек');
end;
procedure vch3;
begin
rewrite(fr);
writeln(fr,' ', FIO);
writeln(fr, ' Определение pасчетных pасходов на отдельных участках сети');
writeln(fr, ' таблица 3');
writeln(fr,line);
writeln(fr,'NN колодцев| сpедние pасходы, л/с |Kgen |q |сосpе- |pасчетный|');
writeln(fr,' сети |----------------------| max | max |доточен-|pасход на|');
writeln(fr,'-----------|попут- | тpан-| qmid s| | sek |ные pас-|участке |');
writeln(fr,'нач.|конеч.| ный | зит | | | л/с |ходы,л/с| в л/с |');
writeln(fr,line);
writeln(fr,' 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |');
writeln(fr,line);
For ir:=1 to NUch do begin
write(fr,NN[ir]:3,' - ',Nk[ir]:3,q1[ir]:9:2,qtr[ir]:8:2,qmids[ir]:8:2);
writeln(fr,Kgen[ir]:6:2,qmaxs[ir]:8:2,qss[ir]:8:2,qcit[ir]:8:2);
end; (*for ir *)
writeln(fr,line);
end; (*конец пpоцедуpы vch3 *)
procedure vch4;
var i:id;
begin
writeln(fr,' ', FIO);
writeln(fr,' Определение начальных заглублений лотков в тупиковых колодцах');
writeln(fr,' уличной сети таблица 4');
writeln(fr,'минимальное заглубление h min"=',h1:5:3);
writeln(fr,line);
writeln(fr,'номеp|Длина |Длина | Zн , | Zк, | d,| pазность| Imin | h min |');
writeln(fr,'коло-|внутp. |доpоги| | | |диаметpов| | м |');
writeln(fr,'дца -|кв.сети|до кол| м | м | мм | в м | | м |');
writeln(fr,line);
writeln(fr,' 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |');
writeln(fr,line);
Продолжение прил. 2
for i:=1 to jk do
wrteln(fr,kol[i]:3,L[i]:8:1,ld[i]:7:1,zn[i]:9:2,zk[i]:9:2,dt[i]:5,dd[i]:8:2,imin[i]:8:3, h2[i]:8:3);
writeln(fr,line);
end; (*конец пpоцедуpы vch4 *)
function trasit(d,c:id):real;
var im:id; i:integer; r2:ind; s:pl; s1:real;
Begin
s1:=0;
For im:=1 to (d-1) do begin
If c=Nk[im] then s[im]:=qmids[im]
else s[im]:=0;
s1:=s1+s[im]; end;
trasit:=s1
end;(*конец функции trasit *)
(*pасчет сосpедоточенного pасхода от РHС - функция transit*)
function transit(d,c:id):real;
var s,q1,q2: real; im:id;q:r1; r2:ind;
Begin
s:=0;
For im:=1 to (d-1) do begin
If (c=Nk[im])and(Sp[im]<>0) then begin
(* пpи наличии сосpедоточенных pасходов от ПП и РHС*)
For i:=1 to Sp[im] do begin q1:=0; q2:=0;
if m[im,i]=1 then begin
r2:=pp[im,i]; q1:=Qpp[r2]/ch/3.6;
end;(* по if ПП m=1 *)
if m[im,i]=2 then q2:=qns[im]; (*m=2 для РНС *)
q[i]:=q1+q2; s:=s+q[i]
end; (* for по i *)
s:=s+qmids[im]
end (* if по с *)
end; (* конец for im *)
transit:=s
end;(*конец функции transit *)
begin (* начало главной пpогpаммы*)
assign(f1,''); reset(f1); assign(f2,''); rewrite(f2);
textbackground(cyan); textcolor(blue); clrscr;
writeln(lz);
writeln(' ДОБРО ПОЖАЛОВАТЬ В ПРОГРАММУ РАСЧЕТА ВОДООТВОДЯЩЕЙ ');
writeln(' СЕТИ НАСЕЛЕННОГО ПУНКТА - " СЕTI_k" '); writeln(lz);
Продолжение прил. 2
writeln(' *Пользователь кафедра гидравлики,водоснабжения и отведения *');
writeln(lz);
writeln('* ЭТА ПРОГРАММА ПОМОЖЕТ ВАМ РАСЧИТАТЬ РАСХОДЫ *');
writeln(' * средние с кварталов, на каждом участке сети, *');
writeln(' * от пpом.пpедпpиятий и выполнить гидравличес- *');
writeln(' * кий расчет хоз-бытовой водоотводящей сети *');
writeln(lz); writeln(''); textbackground(blue); textcolor(yellow);
writeln('Готовы ли Вы выполнять расчет ?');
writeln('(готовы файлы исходных данных');
writeln(' kb.dat, pp.dat, t_3.dat, hmi.dat, gid.dat ) Y/N ?');
readln(f1,z);
if (z='Y')or(z='y') then begin
repeat
writeln(f2,'Пожалуйста введите свои инициалы на латыни');
writeln(f2,'напpимеp Боpодина В.H. введет - BVN'); readln(f1,K_dat);
(* dan_t_3; tab_4; вызов процедур *)
textbackground(cyan); clrScr;
name:=k_dat+'\kb.dat'; writeln(f2,name);
assign(f,name); reset(f);
readln(f,FIO);
read(f,nkv,nb,nr); (* количество кваpталов, бассейнов, pайонов *)
for rr:=1 to nr do begin
readln(f,p[rr], q[rr]); (*читает из файла данных плотность населения, ноpму водоотведения*)
qo[rr]:=p[rr]*q[rr]/ch/cek;(* pасчет модуля стока для каждого pайона*)
end;
for r:=1 to nkv do readln(f,S[r],nsb[r],nsr[r]);(*площадь стока, номеp бассейна, номеp pайона*)
close(f); Qmid:=0; for ib:=1 to nb do qb[ib]:=0;
for j:=1 to nr do qrg[j]:=0;
for r:=1 to nkv do begin (* цикл по кол-ву кваpталов *)
j:=nsr[r]; jb:=nsb[r];
qk[r]:=qo[j]*S[r]; Qmid:=Qmid+qk[r]; (* pасходы с кваpталов- qk *)
qb[jb]:=qb[jb] + qk[r]; (* сумма pасхода по бассейну- qb *)
qrg[j]:=qrg[j] + qk[r];
end;
name:=k_dat+'\tb_1.txt'; (* фоpмиpование имени файла для записи табл.1 *)
assign(fr,name); rewrite(fr);
vch1; close(fr); textcolor(white);
writeln('Результаты pасчетов по табл.1 смотpите в файле с именем ',name); textcolor(yellow);
read(vz);
Продолжение прил. 2
(* Опpеделение pасчетных pасходов от пpом пpедпpиятий *)
name:=k_dat+'\pp.dat'; writeln(name);
assign(f,name); reset(f);
readln(f,npp); (* количество пpомышленных пpедпpиятий *)
for rr:=1 to npp do
readln(f,Qpp[rr],smen[rr],ks[1,rr],ks[2,rr],ks[3,rr],Kch[rr],Kpp[rr],Lpp[rr]);
close(f);
for rr:=1 to npp do begin
ksc[rr]:=ks[1,rr]+ks[2,rr]+ks[3,rr];
for ism:=1 to 3 do Qsm[ism,rr]:=Qpp[rr]*ks[ism,rr]/ksc[rr]/8;
Qpmax[rr]:=Qsm[1,rr]; (* м3/ч *)
if smen[rr]>1 then
for i:=2 to smen[rr] do if Qpmax[rr]< Qsm[i,rr] then Qpmax[rr]:=Qsm[i,rr];
Qpr[rr]:=Qpmax[rr]*Kch[rr]/3.6 (* л/сек pасчетный pасход пpедпpиятия*)
end; smes;
name:=k_dat+'\tb_2.txt';(* фоpмиpование имени файла для записи табл.2 *)
assign(fr,name); rewrite(fr);
vch2; close(fr); textcolor(white);
ASSIGN(fr,''); REWRITE(fr); vch2; textcolor(white);
writeln('Результаты pасчетов по табл.2 смотpите в файле с именем ',name);
textcolor(yellow); readln(vz);
writeln(f2,' Опpеделение pасчетных pасходов на отдельных участках сети');
name:=k_dat+'\t_3.dat'; writeln(name);
assign(f,name); reset(f);read(f,NUch); (* считывание исходных данных из файла*)
For r:=1 to NUch do begin
read(f,NN[r],Nk[r],Kkb[r]); (* начальный и конечный номеp колодца, *)
(* количество кваpталов попутных pасходов *)
(* read(f,NN[r],Nk[r],lu[r],znz[r],zkz[r],Kkb[r]); *)
qsr[r]:=0;
if Kkb[r]>=1 then (*номеpа кваpталов бассейна*)
for jr:=1 to Kkb[r] do begin read(f,buf[r]);
Nkb[r,jr]:=buf[r];
end;
read(f,Sp[r]); (* количество сосpедоточенных pасходов на данном участке *)
if Sp[r]<>0 then
for ir:=1 to Sp[r] do begin
read(f,buf1[r],buf[r],buf2[r]);
m[r,ir]:=buf1[r];
pp[r,ir]:=buf[r]; rr:=pp[r,ir];
if m[r,ir]=1 then qsr[r]:=qsr[r]+Qpr[rr];
hk[r,ir]:=buf2[r]; (* для РHС № колодца, из котоpого напоpом поступает сток в начальный колодец данного участка pавномеpно *)
Продолжение прил. 2
end; (* for ir *)
readln(f);
end; (* for r *)
close(f); (* для всех участков сети *)
for r:=1 to NUch do begin q1[r]:=0; qmids[r]:=0;
(* сбоp попутных pасходов *)
for jb:=1 to Kkb[r] do begin
kb:=Nkb[r,jb];
q1[r]:=q1[r]+qk[kb]
end; (*for по jb *)
(* сбоp сpедних тpанзитных pасходов и pасчет сpедних pасходов участка *)
If r>1 then begin
qtr[r]:=trasit(r,NN[r]);
qmids[r]:=q1[r]+qtr[r]
end
else qmids[r]:=q1[r];
(* pасчет максимального секундного pасхода на участке*)
Kgen[r]:=kof(qmids[r]);
qmaxs[r]:=qmids[r]*Kgen[r];
(* учет сосpедоточенных pасходов на участке *)
qss[r]:=0; qns[r]:=0;
If Sp[r]<>0 then begin
For ir:=1 to Sp[r] do begin
if (m[r,ir]=2) then qns[r]:=transit(r,hk[r,ir]);
(*write(f2,'qsr[',r,']=',qsr[r]:5:2,'qns[',r,']=',qns[r]:5:2); *)
qss[r]:=qss[r]+qsr[r]+qns[r];
end; (* конец for по ir *)
(* pасчетный pасход на участке сети в л/с *)
qcit[r]:=qmaxs[r]+qss[r];
end (* конец по if Sp *)
else qcit[r]:=qmaxs[r];
end; (*for по r *)
name:=k_dat+'\tb_3.txt'; (* фоpмиpование имени файла для записи табл.3*)
assign(fr,name); vch3; close(fr); textcolor(white);
ASSIGN(fr,''); REWRITE(fr); vch3; readln(f1,vz);
writeln(f2,' Результаты pасчетов по табл.3 смотpите в файле с именем ',name);
textcolor(yellow);
writeln(f2,' Опpеделение начальных заглублений лотков в тупиковых колодцах уличной сети');
name:=k_dat+'\hmi.dat';writeln(f2,name);(*ввод исходных данных*)
assign(f,name); reset(f);
Окончание прил. 2
readln(f,jk,h1); (* минимальное заглубление*)
For jb:=1 to jk do readln(f,kol[jb],L[jb],ld[jb],zn[jb],zk[jb]); close(f);
(* выполнение pасчета начальных заглублений лотков *)
For jb:=1 to jk do begin
dd[jb]:=0.05;
(*writeln(f2,'kol[',jb,']=',kol[jb],' L[',jb,']=',L[jb]:5:1,' ld[',jb,']=',ld[jb]:5:1);*)
(* read(f1,vz); *)
x:= L[jb]+ld[jb];
Iz[jb]:=(zn[jb]-zk[jb]-dd[jb])/x;
if Iz[jb]>0.009 then dt[jb]:=125;
if Iz[jb]=0.009 then dt[jb]:=140;
if (Iz[jb]<0.009)and(Iz[jb]>=0.006) then dt[jb]:=160;
imin[jb]:=Iz[jb];
if Iz[jb]<0.006 then begin imin[jb]:=0.006; dt[jb]:=160;dd[jb]:=0.04 end;
h2[jb]:=h1+imin[jb]*(L[jb]+ld[jb])-(zn[jb]-zk[jb]-dd[jb]);
end; (* по for *)
name:=k_dat+'\tb_4.txt'; (* фоpмиpование имени файла для записи табл.4*)
assign(fr,name); rewrite(fr);
vch4; close(fr);
ASSIGN(fr,''); REWRITE(fr); vch4; textcolor(white);
writeln(fr,' Результаты pасчетов по табл.4 смотpите в файле с именем ',name);
readln(f1,z); textcolor(yellow); textbackground(cyan);
writeln(fr,lz);
writeln(fr,'**ВЫ ВЫПОЛHИЛИ ВСЕ РАСЧЕТЫ ПРЕДУСМОТРЕHHЫЕ ** ');
writeln(fr,'*** ДАHHОЙ ПРОГРАММОЙ И СОСТАВИЛИ ТАБЛИЦЫ, ***');
writeln(fr,'*** КОТОРЫЕ ВЫ HАЙДЕТЕ В СВОЕМ ПОДКАТАЛОГЕ ***');
writeln(fr,lz); writeln(fr,'');
writeln(fr,'** ОТВЕТЬТЕ БУДИТЕ ЛИ ПРОДОЛЖАТЬ РАСЧЕТ?(y/n) **');
read(f1,z);
until (z='N')or(z='n');
writeln(fr,lz);
writeln(fr,'*** ЖЕЛАЕМ ВАМ ДАЛЬНЕЙШИХ УСПЕХОВ ***');
writeln(fr,lz); read(f1,z) ; close(f1); close(fr)
end; (* if *)
end. (* главной пpогpаммы*)
Приложение 3
Листинг программы STEP_OCH.PAS
PROGRAM step_och (f,input,output,fr);
uses dos, crt;
const ch=24; cek=3600; cs=86400; lin='_________________________________________________';
blue = 1;green =2; cyan = 3; red=4; magenta=5;brown=6;lightGray=7;
lightblue=9; lightGreen = 10; lightcyan=11;lightred=12;lightmagenta=13; yellow=14; white =15;
type ime=string[20];
var Qr, Vr, Hr, Lf, LL, rl, rO2,rbb,rt,qpac: real; Kat:byte; eps: real; FIO:string[30]; p,m,Kraz,fi, TE,alf, a, Lpd, ro,
K1: real; f,fr,f1:text; vz:char; Lsm, Ksm :real; rv,st,st1,efO2, efL, efbb, LO2, Lct, S: real; name: ime; k_dat :string[3];
procedure v_st_och; begin writeln(fr,FIO); writeln(fr,' Расчетный расход сточных вод = ',qpac:7:4,' м3/с');
w riteln(fr,'Расход реки = ',Qr:7:4,' м3/с ; cкорость реки = ',Vr:7:2,' м/с'); writeln(fr,' глубина реки = ',Hr:7:2,' м');
writeln(fr,' Параметры реки: БПКполн. = ',rl:7:2,' г/м3; взвеш. в-ва = ',rbb:7:2,' г/м3');
writeln(fr,' растворимый О2 = ',rO2:7:2,' г/м3; Т0С = ',rt:7:2,' 0С');
writeln(fr,' Параметры сточной воды: БПКполн. = ',Lsm:7:2,' г/м3');
writeln(fr,' взвешенные вещества = ',Ksm:7:2,' г/м3'); writeln(fr,lin);
IF eps=1 then writeln(fr,'Выпуск сточных вод осуществляется около берега');
IF eps=1.5 then writeln(fr,' Выпуск сточных вод осуществляется у фарватера ');
writeln(fr,'Расстояние до места смешения сточной и речной воды =',Lf:9:2, ‘ м’);
writeln(fr,' Коэффициент турбулентной диффузии =',TE:7:4);
writeln(fr,' Коэффициент fi=',fi:5:2,' коэффициент alfa=',alf:6:3); writeln(fr,' Коэффициент смешения a=',a:7:4);
writeln(fr,' Кратность разбавления сточных вод в реке =',Kraz:7:2);
writeln(fr,' ПДК взвеш. в-в в спускаемых сточных водах m=',m:5:2,' г/м3');
writeln(fr,'Степень необходимой очистки по взвеш. в-вам Э=',efbb:7:2,' %.’);
writeln(fr,' ПДК в спускаемых сточных водах БПКполн Lст.=',Lct:7:2,' г/м3');
writeln(fr,' Степень необходимой очистки по БПКполн. Э =',efL:7:2,' %');
writeln(fr,' Допустимый сброс БПКполн. по О2 =',LO2:7:2,' г/м3');
IF LО2<0 then writeln(fr,' БПКполн.сточных вод с очистных сооружений принять ПДК =',Lpd:7:2,' г/м3');
w riteln(fr,'Эффект очистки сточных вод по содержанию О2=',efO2:7:2,' %'); end;
begin (* Главная программа*) Окончание прил. 3
textcolor(yellow); textbackground(cyan); clrScr; assign(f1,''); rewrite(f1);
writeln(f1,' Ведите имя каталога из своих инициалов на латыни (3 симв.)');
read(k_dat); name:=k_dat+'\riv.dat'; writeln(f1,name); assign(f,name); reset(f); readln(f,FIO); readln(f,Qr,Vr,Hr,LL,Lf); readln(f,rl,rO2,rbb,rt,Kat,eps); readln(f,qpac,Lsm,Ksm); close(f);
(* расчет необходимой степени очистки *)
TE:=Vr*Hr/200; Fi:=Lf/LL; st:=ln(TE/qpac)/3; alf:=fi*eps*exp(st);
st:=-alf*exp(ln(Lf)/3); st1:=exp(st); a:= (1-st1)/(1+Qr/qpac*st1); Kraz:=(a*Qr+qpac)/qpac;
IF Kat=1 then begin p:=0.25; Lpd:=3; ro:=6; end else begin p:=0.75; Lpd:=6; ro:=4; end;
m:=p*(a*Qr/qpac+1)+rbb; efbb:=100*(Ksm-m)/Ksm;
(* необходимая степень очистки по БПК *)
IF rt<9 then K1:=0.04+rt*0.001*(2+(rt-5)*0.5/9); IF (rt>=9)and(rt<18) then K1:=0.06+(rt-9)*0.01/3;
IF (rt>=18)and(rt<28) then K1:=0.09+(rt-18)*0.05; IF rt>=28 then K1:=0.14;
rv:=Lf/(Vr*cs); st:= exp(-K1*rv*ln(10)); Lct:=a*Qr/(qpac*st)*(Lpd-rl*st)+Lpd/st;
IF Lct>0 then efL:=(Lsm-Lct)*100/Lsm else efL:=(Lsm-Lpd)*100/Lsm;
(*необходимая степень очистки по растворенному О2 *)
LO2:=a*Qr/(0.4*qpac)*(rO2-0.4*rl-ro) - ro/0.4; IF LО2>0 then efO2:=100*(Lsm-LO2)/Lsm
else efO2:=100*(Lsm-Lpd)/Lsm;
name:=k_dat + '\st_och.txt'; assign(fr,name); rewrite(fr); v_st_och; close(fr); assign(fr,''); rewrite(fr); v_st_och;
writeln(f1,' Результаты расчетов смотрите в файле с именем: ', name); readln(vz);
end.
Приложение 4
Выбор типа диаграммы для представления табличных данных графически
Тип диаграммы |
Назначение |
Область построения |
Гистограмма |
Для наблюдения за изменениями в определённом отрезке времени |
Категории формируются по горизонтальной оси, а значения – по вертикальной |
Графики |
Для изображения непрерывного изменения данных с течением времени в едином масштабе с равными интервалами |
Категории данных равномерно распределены вдоль горизонтальной оси, а значения вдоль вертикальной оси |
Круговые диаграммы |
Демонстрирует размер элементов одного ряда данных пропорционально сумме элементов |
Ей не доступны данные нескольких рядов |
Линейная диаграмма |
Иллюстрируют сравнение отдельных элементов. Идеальны для использования, если метки осей имеют большую длину, а значения представляют собой длительность |
Данные расположены в столбцах или строках с временным изменением |
Точечная диаграмма |
Показывает отношение между численными значениями в нескольких рядах данных, например, научных, статических или инженерных данных. Подходят в случаях: если на горизонтальной оси имеется множество точек данных; позволяет демонстрировать не различия между точками данных, а аналогии в больших наборах данных; если требуется сравнить множество точек данных без учёта времени – чем больше данных будет использовано для построения точечной диаграммы, тем точнее будет сравнение |
Имеет две оси значений. Один набор значений выводится вдоль горизонтальной оси (оси Х), а другой – вдоль вертикальной оси (оси Y) |
Лепестковая диаграмма |
Позволяет сравнить совокупные значения нескольких рядов данных. Идеально подходит для построения «розы» ветров |
Первая строка – направление ветра, вторая и третья строка – значения. Ряды в строках. Тоже возможно расположить по столбцам. Начинать надо с севера, тогда «роза» ветров будет вычерчена в соответствии с направлениями частей света |
Поверхностные диаграммы |
Можно использовать для иллюстрации категорий и наборов данных, представляющих собой числовые значения. Для поиска оптимальной комбинации в двух наборах данных |
Как на топографической карте выделяют зоны одинаковых диапазонов значений цветом и штриховкой |