Если компиляция программы завершена успешно, то можно выполнить пробный запуск выполняемой программы, используя первичный набор исходных данных, называемый контрольным примером.
Перед пробным запуском программы следует сохранить текст исходной программы в файле.
Чтобы запустить на выполнение программу, текст которой находится в окне редактирования, надо в пункте меню Run(Выполнить) выполнить команду Run. В результате запуска программы с экрана исчезает окно Turbo Pascal и появляется так называемое окно пользователя (user screen).
В это окно программа выдает сообщения и результаты выполнения программы (результаты выполнения операторов write и writeln), и из этого окна она получает от пользователя необходимые исходные данные (операторы read и readln). По завершении работы запущенной программы вновь появляется главное окно Turbo Pascal. Просмотреть результаты работы программы можно, переключившись в окно пользователя. Для этого надо в пункте меню Debug(Отладка) выполнить команду User Screenили, удерживая нажатой клавишу Alt>, нажать F5>. Вернуться в главное окно из окна пользователя можно, нажав любую клавишу.
Как сделать запуск программ по расписанию
Чтобы по завершении программы окно пользователя сразу не исчезало с экрана, добавьте в конец текста программы следующие операторы:
writeln(‘Программа завершила работу.’);
Отсутствие в тексте программы синтаксических ошибок и генерация компилятором исполняемого файла программы не является гарантией отсутствия ошибок в программе. Ошибки в программе могут проявляться во время ее работы. Такие ошибки называются ошибками времени выполнения программы (runtime error). В этом случае на экран выводится сообщение типа: Runtime error N at. где N – номер ошибки. Причиной ошибок времени выполнения, как правило, являются ошибки в логике алгоритма, положенного в основу программы, или неверные исходные данные.
С помощью команды Runпункта меню Runзапускается программа, текст которой находится в окне редактора. Чтобы иметь возможность использовать созданную программу вне среды программирования (не запуская Turbo Pascal и не загружая текст программы в редактор), нужно создать исполняемый файл программы. Для этого требуется установить режим компиляции «на диск» и выполнить повторную компиляцию программы. В результате в каталоге, предназначенном для хранения файлов выполняемых программ, появится файл, имя которого будет совпадать с именем файла исходной программы и расширением .ехе. После этого созданная программа может быть запущена вне системы программирования, например из Norton Commander или DOS обычным образом.
Завершение работы
Для завершения работы с системой программирования Turbo Pascal 7.0, нужно в пункте меню File(Файл) выполнить команду Exit(Выход) или ввести клавишную команду Alt> — X>.
Программирование линейных вычислительных процессов
Линейным называется вычислительный процесс, все действия которого, начиная от ввода исходных данных и заканчивая получением результатов, выполняются последовательно, одно за другим.
[ИЗБАВЬ СЕБЯ ОТ СТРАДАНИЙ] Автоматизация запуска кода в редакторе VS Code, запуск кода по кнопке
П р и м е р. На плоскости координатами своих вершин x, y в декартовой системе координат задан треугольник ABC. Найти площадь этого треугольника.
Блок-схема алгоритма решения задачи приведена на рис. 10.
Program Treygolnik;
Var
x1, y1, x2, y2, x3, y3 : real;
ab, bc, ac : real;
p, s : real;
Begin
writeln(‘Ввод исходных данных’);
writeln(‘Ввод координат вершины A’); readln(x1,y1);
writeln(‘Ввод координат вершины B’); readln(x2,y2);
writeln(‘Ввод координат вершины C’); readln(x3,y3);
end.
Практическая часть
2.1. Ознакомиться с теоретической частью описания лабораторной работы и по указанию преподавателя запустить систему программирования Turbo Pascal.
2.2. Изучить структуру окна системы программирования и основные операции в ней по пункту 1.3 описания.
2.3. Для каждого из заданий составить блок-схему алгоритма решения и текст программы в рабочей тетради и предъявить их преподавателю. Для пояснения исходных данных, результатов и основных операций текст программы следует сопровождать комментариями.
2.4. По указанию преподавателя войти в режим редактирования, набрать текст программы и сохранить его в рабочем каталоге.
2.5. Выполнить компиляцию программы.
2.6. При выполнении п. 2.5 могут возникнуть ошибки. Сообщение компилятора об ошибке выдается в верхней части окна редактирования. При этом курсор устанавливается в ту позицию текста, где возможна ошибка. Если сразу после этого нажать F1>, то на экране появляется дополнительная информация об ошибке.
Нажатие любой другой клавиши стирает эту информацию. При возникновении ошибки необходимо исправить ошибку и повторить п. 2. 5.
2.7. Подобрать исходные данные и запустить программу на выполнение. Результаты зафиксировать в отчете в рабочей тетради. Если возникли ошибки на этапе выполнения, то необходимо внимательно проверить алгоритм решения и текст программы, затем изменить исходные данные и повторить пп. 2.5 — 2.7.
2.8. Аккуратно оформить отчет по лабораторной работе и предъявить его преподавателю. В отчете по каждому заданию должны быть отражены следующие пункты:
1. БСА алгоритма задачи.
2. Исходный текст программы с комментариями.
3. Результаты отладки по п.2.6.
4. Результаты решения по п. 2.7.
Дата добавления: 2018-05-13 ; просмотров: 548 ; Мы поможем в написании вашей работы!
Поделиться с друзьями:
Источник: studopedia.net
Работа с главным меню системы Turbo Pascal. Программирование линейных алгоритмов
Цель: Изучить элементы диалоговой структуры ТР версии 7.0 и меню операции File. Изучить структуру и правила записи программы на языке ТР. Приобрести начальные навыки работы в системе ТР на примере программирования линейных алгоритмов и по отладке и тестированию программ.
КОНТРОЛЬНЫЕ ВОПРОСЫ:
· Каковы назначение и возможности системы программирования ТР;
· Какие подменю имеет главное меню интегрированной среды;
· Опции меню File;
· Как запустить программу на трансляцию и выполнение;
· Как записываются операторы начала и конца программы;
· Из каких разделов состоит программа на языке ТР;
· В какой последовательности должны быть записаны разделы программы на языке ТР;
Назначение ТР выражается в том, что это язык для создания программ разноплановой задачности, которая имеет несложную структуру окон и более «приветливый» тип общения с пользователем. Возможности ТР выражаются в создании программ, их прогоне, отладке, редактировании, модификации самой программы или ее части.
Главное меню программы множество дополнительных меню которые сгруппированы по своему роду деятельности в кодовом слове соответствующей опции меню:
· File (файл)-действия с файлами;
· Edit (редактирование)-восстановление испорченных данных и работа с буфером;
· Search (поиск)-поиск текста, процедуры, ф-ции или мест ошибки;
· Run (работа)-прогон программы;
· Compile (компиляция)-компиляция программы;
· Tools (инструменты)-вызов вспомогательных утилит;
· Options (установка параметров среды;
· Window (окно)-работа с окнами;
· Help (помощь)-обращение к справочной службе;
Опции меню Fileсодержит:
New– создание и открытие нового окна программы с именем NoNamexx.pas.
Open – открывает новое окно редактора и помещает в него дисковый файл. При этом открывается диалоговое окно, в которое нужно написать имя файл.
Save – сохранение текущего окна редактора в дисковый файл с именем файла NoNamexx.pas (можно вызвать команду непосредственно из редактора клавишей F3).
SaveAs – сохранение содержимого активного окна под другим именем файла. В поле ввода вы должны будете ввести новое имя файла. Можно выбрать уже существующий файл, но его содержимое будет уничтожено и заменено на содержимое уже сохраняемого файла. В зависимости от настрой ТР при этом случае может быть создана резервная копия файла расширения .BAK.
SaveAll – записывает содержимое всех окон в дисковый файл.
ChanceDir – позволяет сменить текущий каталог пользователя. В поле выбора диалогового окна этой опции приводится дерево каталогов.
Print – печать содержимого активного окна редактора на принтере или выводит его в файл.
PrinterSetup – настраивает среду на печать текущего файла.
DosShell – обеспечивает временный вход в среду DOS, сама ТР работает в трее и занимает достаточно большой объем памяти. Чтобы увеличить объем памяти сбрасывают режим отладки нажатием Ctrl+F2. Для возврата в ТР в DOS вводят EXIT и Enter.
Exit – завершение работы с ТР (опция вызывается нажатием Alt+X в окне редактора).
Трансляция и выполнение программы выполняется с помощью нажатия клавиш F9 (прогон программы без выполнения), Ctrl+F9 (прогон программы (компиляция программы, загрузка ее в операционную систему)) и Alt+F5 (вызов на экран окно прогона программы).
Операторы начала и конца программы записываются как Begin иEnd.
Beginзаписывается после описательной части программы и он является началом команды, т.е. без него программа прогонятся не будет. Так же после Begin не ставятся знаки прерывания («;»).
Endзаписывается в самом конце, когда нужно завершить программу (как вариант может присутствовать в составном операторе ). После End обязательно ставится точка(«.»), (для составного оператора знаки прерывания можно и не ставить, но обычно ставится точка с запятой («;»)).
Программа языка ТР состоит из двух частей: раздела описания программы и раздела описания операторов. В разделе описания программы пользователь описывает типы, переменные, функции, процедуры, а так же указывает метки, константы и подключает библиотеку модулей. В разделеописания операторов пользователь занимается составление программы, вводом переменных, описания алгоритма действий и выводом получаемых данных на экран.
В ТР разделы должны записываются по порядку: сначала раздел описания, затем раздел операторов. Написание разделов в неправильном порядке грозит неправильностью работы программы, которая даже не начнет запускаться, несмотря на то, что написана она правильно.
Похожие материалы
- Введение в систему типов языка Pascal
- Работа с главным меню системы Turbo Pascal. Программирование с использованием массивов. Методы сортировки (Отчет по лабораторной работе № 15)
- Функции. Использование динамических переменных
Источник: vunivere.ru
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
В прошлый раз мы говорили о работе с потоками ввода, вывода и ошибок в bash-скриптах, о дескрипторах файлов и о перенаправлении потоков. Сейчас вы знаете уже достаточно много для того, чтобы писать что-то своё. На данном этапе освоения bash у вас вполне могут возникнуть вопросы о том, как управлять работающими скриптами, как автоматизировать их запуск.
До сих пор мы вводили имена скриптов в командную строку и нажимали Enter, что приводило к немедленному запуску программ, но это — не единственный способ вызова сценариев. Сегодня мы поговорим о том как скрипт может работать с сигналами Linux, о различных подходах к запуску скриптов и к управлению ими во время работы.
Сигналы Linux
В Linux существует более трёх десятков сигналов, которые генерирует система или приложения. Вот список наиболее часто используемых, которые наверняка пригодятся при разработке сценариев командной строки.
Код сигнала | Название | Описание |
1 | SIGHUP | Закрытие терминала |
2 | SIGINT | Сигнал остановки процесса пользователем с терминала (CTRL + C) |
3 | SIGQUIT | Сигнал остановки процесса пользователем с терминала (CTRL + ) с дампом памяти |
9 | SIGKILL | Безусловное завершение процесса |
15 | SIGTERM | Сигнал запроса завершения процесса |
17 | SIGSTOP | Принудительная приостановка выполнения процесса, но не завершение его работы |
18 | SIGTSTP | Приостановка процесса с терминала (CTRL + Z), но не завершение работы |
19 | SIGCONT | Продолжение выполнения ранее остановленного процесса |
Если оболочка bash получает сигнал SIGHUP когда вы закрываете терминал, она завершает работу. Перед выходом она отправляет сигнал SIGHUP всем запущенным в ней процессам, включая выполняющиеся скрипты.
Сигнал SIGINT приводит к временной остановке работы. Ядро Linux перестаёт выделять оболочке процессорное время. Когда это происходит, оболочка уведомляет процессы, отправляя им сигнал SIGINT .
Bash-скрипты не контролируют эти сигналы, но они могут распознавать их и выполнять некие команды для подготовки скрипта к последствиям, вызываемым сигналами.
Отправка сигналов скриптам
Оболочка bash позволяет вам отправлять скриптам сигналы, пользуясь комбинациями клавиш на клавиатуре. Это оказывается очень кстати если нужно временно остановить выполняющийся скрипт или завершить его работу.
Завершение работы процесса
Комбинация клавиш CTRL + C генерирует сигнал SIGINT и отправляет его всем процессам, выполняющимся в оболочке, что приводит к завершению их работы.
Выполним в оболочке такую команду:
$ sleep 100
После этого завершим её работу комбинацией клавиш CTRL + C .
Завершение работы процесса с клавиатуры
Временная остановка процесса
Комбинация клавиш CTRL + Z позволяет сгенерировать сигнал SIGTSTP , который приостанавливает работу процесса, но не завершает его выполнение. Такой процесс остаётся в памяти, его работу можно возобновить. Выполним в оболочке команду:
$ sleep 100
И временно остановим её комбинацией клавиш CTRL + Z .
Приостановка процесса
Число в квадратных скобках — это номер задания, который оболочка назначает процессу. Оболочка рассматривает процессы, выполняющиеся в ней, как задания с уникальными номерами. Первому процессу назначается номер 1, второму — 2, и так далее.
Если вы приостановите задание, привязанное к оболочке, и попытаетесь выйти из неё, bash выдаст предупреждение.
Просмотреть приостановленные задания можно такой командой:
ps –l
Список заданий
В колонке S , выводящей состояние процесса, для приостановленных процессов выводится T . Это указывает на то, что команда либо приостановлена, либо находится в состоянии трассировки.
Если нужно завершить работу приостановленного процесса, можно воспользоваться командой kill . Подробности о ней можно почитать здесь.
Выглядит её вызов так:
kill processID
Перехват сигналов
Для того, чтобы включить в скрипте отслеживание сигналов Linux, используется команда trap . Если скрипт получает сигнал, указанный при вызове этой команды, он обрабатывает его самостоятельно, при этом оболочка такой сигнал обрабатывать не будет.
Команда trap позволяет скрипту реагировать на сигналы, в противном случае их обработка выполняется оболочкой без его участия.
Рассмотрим пример, в котором показано, как при вызове команды trap задаётся код, который надо выполнить, и список сигналов, разделённых пробелами, которые мы хотим перехватить. В данном случае это всего один сигнал:
#!/bin/bash trap «echo ‘ Trapped Ctrl-C'» SIGINT echo This is a test script count=1 while [ $count -le 10 ] do echo «Loop #$count» sleep 1 count=$(( $count + 1 )) done
Команда trap , использованная в этом примере, выводит текстовое сообщение всякий раз, когда она обнаруживает сигнал SIGINT , который можно сгенерировать, нажав Ctrl + C на клавиатуре.
Перехват сигналов
Каждый раз, когда вы нажимаете клавиши CTRL + C , скрипт выполняет команду echo , указанную при вызове trace вместо того, чтобы позволить оболочке завершит его работу.
Перехват сигнала выхода из скрипта
Перехватить сигнал выхода из скрипта можно, использовав при вызове команды trap имя сигнала EXIT :
#!/bin/bash trap «echo Goodbye. » EXIT count=1 while [ $count -le 5 ] do echo «Loop #$count» sleep 1 count=$(( $count + 1 )) done
Перехват сигнала выхода из скрипта
При выходе из скрипта, будь то нормальное завершение его работы или завершение, вызванное сигналом SIGINT , сработает перехват и оболочка исполнит команду echo .
Модификация перехваченных сигналов и отмена перехвата
Для модификации перехваченных скриптом сигналов можно выполнить команду trap с новыми параметрами:
#!/bin/bash trap «echo ‘Ctrl-C is trapped.'» SIGINT count=1 while [ $count -le 5 ] do echo «Loop #$count» sleep 1 count=$(( $count + 1 )) done trap «echo ‘ I modified the trap!'» SIGINT count=1 while [ $count -le 5 ] do echo «Second Loop #$count» sleep 1 count=$(( $count + 1 )) done
Модификация перехвата сигналов
После модификации сигналы будут обрабатываться по-новому.
Перехват сигналов можно и отменить, для этого достаточно выполнить команду trap , передав ей двойное тире и имя сигнала:
#!/bin/bash trap «echo ‘Ctrl-C is trapped.'» SIGINT count=1 while [ $count -le 5 ] do echo «Loop #$count» sleep 1 count=$(( $count + 1 )) done trap — SIGINT echo «I just removed the trap» count=1 while [ $count -le 5 ] do echo «Second Loop #$count» sleep 1 count=$(( $count + 1 )) done
Если скрипт получит сигнал до отмены перехвата, он обработает его так, как задано в действующей команде trap . Запустим скрипт:
$ ./myscript
И нажмём CTRL + C на клавиатуре.
Сигнал, перехваченный до отмены перехвата
Первое нажатие CTRL + C пришлось на момент исполнения скрипта, когда перехват сигнала был в силе, поэтому скрипт исполнил назначенную сигналу команду echo . После того, как исполнение дошло до команды отмены перехвата, команда CTRL + C сработала обычным образом, завершив работу скрипта.
Выполнение сценариев командной строки в фоновом режиме
Иногда bash-скриптам требуется немало времени для выполнения некоей задачи. При этом вам может понадобиться возможность нормально работать в командной строке, не дожидаясь завершения скрипта. Реализовать это не так уж и сложно.
Если вы видели список процессов, выводимый командой ps , вы могли заметить процессы, которые выполняются в фоне и не привязаны к терминалу.
Напишем такой скрипт:
#!/bin/bash count=1 while [ $count -le 10 ] do sleep 1 count=$(( $count + 1 )) done
Запустим его, указав после имени символ амперсанда (
Это приведёт к тому, что он будет запущен как фоновый процесс.
Запуск скрипта в фоновом режиме
Скрипт будет запущен в фоновом процессе, в терминал выведется его идентификатор, а когда его выполнение завершится, вы увидите сообщение об этом.
Обратите внимание на то, что хотя скрипт выполняется в фоне, он продолжает использовать терминал для вывода сообщений в STDOUT и STDERR , то есть, выводимый им текст или сообщения об ошибках можно будет увидеть в терминале.
Список процессов
При таком подходе, если выйти из терминала, скрипт, выполняющийся в фоне, так же завершит работу.
Что если нужно, чтобы скрипт продолжал работать и после закрытия терминала?
Выполнение скриптов, не завершающих работу при закрытии терминала
Скрипты можно выполнять в фоновых процессах даже после выхода из терминальной сессии. Для этого можно воспользоваться командой nohup . Эта команда позволяет запустить программу, блокируя сигналы SIGHUP , отправляемые процессу. В результате процесс будет исполняться даже при выходе из терминала, в котором он был запущен.
Применим эту методику при запуске нашего скрипта:
nohup ./myscript Loop #$count» sleep 10 count=$(( $count + 1 )) done
$ ./myscript
И временно остановим комбинацией клавиш CTRL + Z .
Запуск и приостановка скрипта
Запустим тот же скрипт в фоновом режиме, при этом перенаправим вывод скрипта в файл так, чтобы он ничего не выводил на экране:
$ ./myscript > outfile https://habr.com/ru/companies/ruvds/articles/326826/» target=»_blank»]habr.com[/mask_link]