Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Выбор аппаратов высокого напряжения
Цель работы Обучение студентов вводу данных в программу из текстовых файлов с неоднородной информацией. Использование циклических операторов for, repeat, while для организации ввода, логических переменных для выбора АВН, операторов if для организации списков вывода. Порядок выполнения работы 1. Получить задание на выбор АВН (генераторы, трансформаторы, выключатели, изоляторы и т.п) и разобраться в структуре текстового файла данных. 2. Создать каталог lab2 и скопировать в него файл программы lab1.pas. Отрыть программу и сохранить её под именем lab2.pas в каталоге lab2. 3. Описать тип АВН как запись с фиксированными полями в разделе описания типов программы. Примеры описания типа АВН: Type transformer = record marka: string[20]; Uvn, Usn, Unn, Snom: real; end; generator = record marka: string[20]; Snom, Pnom, Unom, Cosfi, Inom, Smax, Pmax, Imax, Xd": real; end; transformers = array[1..20] of transformer; generators = array[1..12] of generator;. 3. Описать переменные, относящиеся к введенным типа в разделе описания переменных. Примеры описания переменных: Var tr1, tr2, tr3: transformer; trs: transformers; gn1, gn2, gn3: generator; gns: generators; . 4. Изменить раздел чтения данных из файла следующим образом: а) определить в файле данных число строк, в которых приведены общие сведения о содержании файла, его составителях и т.п. Эти строки следует либо пролистать, используя цикл с известным числом операций: for i: =1 to n do readln(f1); где n – число строк общего назначения, либо переписать их в массив строк: for i: =1 to n do readln(f1, str[i]); . Переменная i должна быть описана как целочисленная, а переменная str как массив строк размером n с длиной каждой строки 80 (размер экрана): var i: integer; str: array[1..4] of string[80]. б) Описать чтение данных АВН циклом с условием выхода из него по достижению конца файла данных. Если в процессе чтения данных был достигнут конец файла, то функция eof(f1) – end of file, которая относится к логическому типу (boolean), принимает значение true (истина). В любом другом месте файла эта функция имеет значение false (ложь). Пример описания чтения данных: i: =1; Repeat readln(f1, trs[i]. marka, trs[i].Uvn, trs[i].Usn, trs[i].Unn, trs[i].Snom); i: =i+1; until eof(f1); Ntrs: =i-1; или i: =1; while not eof(f1) do Begin readln(f1, trs[i]. marka, trs[i].Uvn, trs[i].Usn, trs[i].Unn, trs[i].Snom); i: =i+1; end ; Ntrs: =i-1;. После окончания цикла чтения в переменную Ntrs записывается число трансформаторов из файла данных. 5. Выбрать из прочитанных марок АВН те АВН, которые удовлетворяют заданным условиям, и вывести эту информацию на экран монитора и в файл результатов. Для этого в разделе описания типов описать несколько логических переменных. Число этих переменных выбрать на единицу больше, чем условий выбора АВН. Например, требуется выбрать трансформатор по следующим условиям: высшее напряжение – 500 кВ, среднее напряжение – 110 кВ, низшее напряжение – 15, 75 кВ, номинальная мощность – 200 кВА. Всего 4 условия выбора. Значит должно появиться пять логических идентификаторов в разделе описания переменных: var a, a1, a2, a3, a4: boolean;. Пример написания кода программы для выбора типов АВН: for i: =1 to Ntrs do Begin if abs(trs[i].Uvn-500) < 1 then a1: =true else a1: =false; if abs(trs[i].Usn-220) < 1 then a2: =true else a2: =false; if abs(trs[i].Unn-15.75) < 1 then a3: =true else a3: =false; if abs(trs[i].Snom-200) < 1 then a4: =true else a4: =false; a: =a1 and a2 and a3 and a4; if a then begin writeln(f1, trs[i]. marka, trs[i].Uvn, trs[i].Usn, trs[i].Unn, trs[i].Snom); writeln(trs[i]. marka, trs[i].Uvn, trs[i].Usn, trs[i].Unn, trs[i].Snom); end ; end ;. Отчет по лабораторной работе должен содержать три файла, расположенные в собственном каталоге lab2, например: trans.pas, trans.dat, lab2.res. В файле lab2.res должен содержаться отчет по всем вариантам расчетов, проводившихся во время выполнения работы. Контрольные вопросы 1. В какой позиции находится указатель файла после его открытия оператором reset? 2. Чем различаются однородные и неоднородные файлы? Приведите примеры из техники высоких напряжений. 3. Как правильно организовать текстовый файл с данными об аппаратах высокого напряжения? Приведите пример. 4. Как «пролистать» первые строки файла данных, которые содержат общую информацию о его структуре? 5. Как прочитать целиком строку файла данных? 6. Какой из циклических операторов можно использовать для чтения общей информации о файле? 7. Чем различаются операторы repeat и while? Приведите пример их использования. 8. Как организовать чтение данных из файла, если неизвестно, сколько строк он содержит? Приведите примеры. 9. Как определить число строк в файле? Запишите код примера программы. 10. Какие формы оператора if применяются в языке Паскаль? Приведите примеры. 11. Для чего нужен оператор case? Приведите пример синтаксиса. 12. Как описать логические переменные в языке Паскаль? Какие операции с логическими переменными существуют? 13. В чем состоит различие при выборе какого-либо конкретного значения целочисленной переменной и переменной с плавающей запятой? Приведите пример выбора из техники высоких напряжений. 14. Как организовать выбор АВН по нескольким параметрам? Приведите пример кода программы. 15. Чем различаются операторы or и and? 16. Как изменить значение логической переменной на противоположное? 17. Как использовать логическую функцию конца файла для организации чтения файла неизвестной длины?
Лабораторная работа 3 Расчет параметров высоковольтных электроустановок Цель работы Обучение студентов составлению различных процедур и функций для расчетов в технике высоких напряжений, отсутствующих в базовых языках. Усвоение понятий локальных, глобальных, формальных и фактических переменных. Передача данных между различными частями программы. Понятие блока процедур и функций. Стандартные блоки и блоки пользователей. Порядок выполнения работы Задание 1 1. Получить задание преподавателя на программирование какой-либо функциональной зависимости в высоковольтной технике. 2. Создать подкаталог lab3. 3. Написать и отладить программу по заданию преподавателя. Убедиться, что она работает правильно и во всем диапазоне изменения начальных переменных без сбоев и зависаний. 4. Оформить программу как функцию и проверить работу переписанной программы с использованием новой функции. Пример задания: написать функцию расчета индуктивности коаксиального кабеля. Исходные данные для расчета m0=4p× 10-7 Гн/м, m1, m2, m3 и r1, r2, r3 - относительная магнитная проницаемость и радиусы центральной жилы, фторопластовой изоляции и внешней оболочки кабеля; L - длина кабеля в метрах. Расчет проводится по следующей формуле: . Код программы Const path='e: \student\tvn-1-01\ivanov\lab3\'; mu0=4e-7*pi; function Lcoaks(m1, m2, m3, r1, r2, r3, L: real): real; {Функция Lcoaks вычисляет значение индуктивности коаксиального кабеля в мкф, где m1, m2, m3 - относительная магнитная проницаемость; r1, r2, r3 - радиусы центральной жилы, фторопластовой изоляции и внешней оболочки кабеля в мм, L - длина кабеля в метрах} var l1, l2, l3, a1, a2, a3, a4: real; Begin l1: =m1/4; l2: =m2*ln(r2/r1); a1: =sqr(sqr(r3))*ln(r3/r2); a2: =sqr(sqr(r3)-sqr(r2)); a3: =3*sqr(r3)-sqr(r2); a4: =sqr(r3)+sqr(r2); l3: =m3*(a1/a2-a3/a4/4); Lcoaks: =mu0*L*(l1+l2+l3)/4/pi*1e6; end; {function Lcoaks} var L: real; Begin L: =Lcoaks(1, 1, 7, 0.5, 2, 2.2, 5); writeln('Lcoaks= ', L, ' mkf'); end . Задание 2 1. Получить задание преподавателя на программирование какой-либо процедуры расчета характеристик АВН. 2. Написать и отладить программу расчета. 3. Оформить отлаженную программу в виде отдельной процедуры и написать программу с использованием составленной процедуры. Пример. Записать процедуру преобразования треугольника в эквивалентную звезду. Исходные данные треугольника: x12, x13, x23 – сопротивления сторон звезды с вершинами в точках 1, 2, 3. Выходные параметры треугольника x1, x2, x3 – сопротивления лучей звезды, связанных с точками 1, 2, 3. Код программы Const path='e: \student\tvn-1-01\ivanov\lab3\'; procedure TrianglToStar(x12, x13, x23: real; var x1, x2, x3: real); var x: real; Begin x: =x12+x13+x23; x1: =x12*x13/x; x2: =x12*x23/x; x3: =x23*x13/x; end ; {Procedure TrianglToStar} var a1, a12, a13, a23, a2, a3: real; Begin a12: =0.12; a13: =0.18; a23: =0.08; TrianglToStar(a12, a13, a23, a1, a2, a3); writeln('a1= ', a1: 2: 2, ' a2= ', a2: 2: 2, ' a3= ', a3: 2: 2); end. Задание 3 1. Объединить процедуру и функцию после их отладки в новом окне в отдельный блок (unit), например, Ivanov и сохранить под именем Ivanov.pas. Этот файл называется исходным модулем блока. 2. Запустить блок на компиляцию и убедиться в возникновении файла с расширением ivanov.tpu (turbo Pascal unit). Файл ivanov.tpu называется загрузочным модулем блока. Название программы и блока должны быть одинаковыми. 3. Написать код программы с использованием этого блока и убедиться в её работоспособности.
Пример написания кода блока ivanov.pas: unit Ivanov; Interface Const path='e: \student\tvn-1-01\ivanov\lab3\'; mu0=4e-7*pi; function Lcoaks(m1, m2, m3, r1, r2, r3, L: real): real; {Функция Lcoaks вычисляет значение индуктивности коаксиального кабеля в мкф, где m1, m2, m3 -относительная магнитная проницаемость; r1, r2, r3 - радиусы центральной жилы, фторопластовой изоляции и внешней оболочки кабеля в мм, L - длина кабеля в метрах} procedure TrianglToStar(x12, x13, x23: real; var x1, x2, x3: real); {Процедура выполняет преобразование треугольника в эквивалентную звезду. Исходные данные треугольника: x12, x13, x23 – сопротивления сторон звезды с вершинами в точках 1, 2, 3. Выходные параметры треугольника x1, x2, x3 – сопротивления лучей звезды, связанных с точками 1, 2, 3.} Implementation function Lcoaks(m1, m2, m3, r1, r2, r3, L: real): real; var l1, l2, l3, a1, a2, a3, a4: real; Begin l1: =m1/4; l2: =m2*ln(r2/r1); a1: =sqr(sqr(r3))*ln(r3/r2); a2: =sqr(sqr(r3)-sqr(r2)); a3: =3*sqr(r3)-sqr(r2); a4: =sqr(r3)+sqr(r2); l3: =m3*(a1/a2-a3/a4/4); Lcoaks: =mu0*L*(l1+l2+l3)/4/pi*1e6; end ; {function Lcoaks} procedure TrianglToStar(x12, x13, x23: real; var x1, x2, x3: real); var x: real; Begin x: =x12+x13+x23; x1: =x12*x13/x; x2: =x12*x23/x; x3: =x23*x13/x; end ; {Procedure TrianglToStar} end . {unit Ivanov}
Код основной программы lab3.pas: uses Ivanov; var L, a1, a2, a2: real; Begin L: =Lcoaks(1, 1, 7, 0.5, 2, 2.2, 5); writeln('Lcoaks= ', L, ' mkf'); TrianglToStar(0.12, 0, 18, 0.08, a1, a2, a3); writeln('a1= ', a1: 2: 2, ' a2= ', a2: 2: 2, ' a3= ', a3: 2: 2); End. Отчет по лабораторной работе должен содержать два файла, расположенные в собственном каталоге lab3, например: ivanov.pas и lab3.pas. Контрольные вопросы 1. В каком месте программы приводится описание процедур и функций? 2. В чем состоит отличие процедуры от функции? 3. Как использовать функцию в основной программе? 4. Как использовать процедуру в основной программе? 5. В чем состоит различие между локальными и глобальными переменными? 6. Можно ли использовать одинаковые идентификаторы в различных процедурах (функциях) и в основной программе? 7. Как передаются переменные из процедуры (функции) в основную программу? 8. Можно ли в списке формальных переменных заголовка процедуры (функции) использовать переменные типа array, record? 9. Как передать массив из процедуры в основную программу? 10. Как различить идентификаторы – постоянные и идентификаторы – переменные в списке формальных параметров процедуры (функции)? 11. Для чего нужен блок (unit) процедур и функций? 12. Как использовать процедуру или функцию из блока в основной программе? 13. Перечислите обязательные элементы блока. Запишите пустой блок. 14. Что описывается в разделе interface? 15. Что описывается в разделе implementation? 16. Какие требования предъявляются к списку заголовков процедур и функций, расположенных в разделах interface и implementation блока? 17. Можно ли использовать в блоке процедуру или функцию из другого блока? Если можно, то как это сделать? 18. Налагаются ли какие-либо ограничения на размеры блока?
Лабораторная работа N 4 Расчет характеристик АВН Цель работы Обучение студентов навыком скоростной разработки простых законченных программных продуктов в среде Window на Дельфи. Расчет характеристик АВН электрических станций и сетей. Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 680; Нарушение авторского права страницы