Как сделать паузу в паскале
Задачи изучения дисциплины заключаются в практическом освоении языка и среды Турбо Паскаля (версии 7.0), в приобретении студентами навыков составления алгоритмов задач теплоэнергетического профиля, отладки программ, в умении проводить анализ полученных результатов и корректировать свои действия с целью улучшения качественных показателей программ.
Язык Турбо Паскаль является классическим языком программирования, широко применяемым в инженерных расчётах. Его изучение позволяет сформировать у студентов особый вид мышления – алгоритмический. Студентам, успешно овладевшим этим языком, не составит особого труда в будущей своей трудовой деятельности применять свои знания и составлять программы не только на языке Паскаль, но и на других языках программирования. Особенно важным является то, что знание языка Паскаль нужно для составления программ в среде Windows при помощи прикладного пакета Delphi, всё более популярного в последнее время.
К настоящему моменту имеется огромное количество библиотек программ, процедур и функций с примерами реализации большинства инженерных задач на языке Паскаль и в среде визуального программирования Delphi. Умелое применение этих наработок предполагает хорошее базовое знание языка Паскаль.
В период обучения студенты должны освоить некоторые численные методы и способы их реализации на языке Паскаль, в том числе с использованием библиотек подпрограмм и внешних файлов данных.
1. ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМЫ ПРОГРАММИРОВАНИЯ ТУРБО ПАСКАЛЬ
Большинство программ создаются для решения какой-либо задачи. В процессе ее решения на ПК необходимо: ввести данные, указать способ их обработки, задать способ вывода полученных результатов. Поэтому нужно знать следующее:
- Как ввести информацию в память (ввод).
- Как хранить информацию в памяти (данные).
- Как указать правильные команды для обработки данных (операции).
- Как передать данные из программы пользователю (вывод).
Необходимо также уметь упорядочивать команды так, чтобы:
- некоторые из них выполнялись только в случае, если соблюдается некоторое условие или ряд условий (условное выполнение);
- другие выполнялись повторно некоторое число раз (циклы);
- третьи выделялись в отдельные части, которые могут быть неоднократно выполнены в разных местах программы (подпрограммы).
Таким образом, нужно уметь использовать семь основных элементов программирования – ввод, данные, операции, вывод, условное выполнение, циклы и подпрограммы – и на их основе строить программы.
Этот список не является полным, однако, он содержит те элементы, которые присущи обычно всем программам. Многие языки программирования имеют еще и дополнительные средства, в том числе и Паскаль.
Основные файлы пакета Турбо Паскаль:
- Turbo.exe – интегрированная среда программирования;
- Turbo.hlp – файл, содержащий данные для оперативной подсказки;
- Turbo.tp – файл конфигурационной системы;
- Turbo.tpl – библиотека стандартных модулей Турбо Паскаля.
После загрузки системы экран разделен на три части: основное (или рабочее) окно, главное меню и строка, в которой указывается назначение основных функциональных клавиш. Переход из основного окна в главное меню и обратно осуществляется посредством клавиши F10.
В рабочем окне осуществляется набор текста программы, запуск же происходит следующим образом: выход в меню, выбор пункта Run – Run.
Для того чтобы сохранить программу, необходимо: выйти в меню, выбрать File – Save (Save as …), в появившемся окне ввести имя файла и нажать клавишу Enter.
Выход из системы программирования: выход в меню, пункт File – Exit.
1.1. Алфавит и словарь языка Паскаль
Язык – совокупность символов, соглашений и правил, используемых для общения. При записи алгоритма решения задачи на языке программирования необходимо четко знать правила написания и использования языковых единиц. Основой любого языка является алфавит (набор знаков, состоящий из букв, десятичных и шестнадцатеричных цифр, специальных символов).
Алфавит Паскаля составляют:
- прописные и строчные буквы латинского алфавита:
A, B, C…Y, Z, a, b, c…y, z;
- десятичные цифры: 0, 1, 2…9;
- специальные символы:
Неделимые последовательности знаков алфавита образуют слова, отделенные друг от друга разделителями. Ими могут быть пробел, комментарий или символ конца строки. Словарь Паскаля можно разделить на три группы слов: зарезервированные слова, стандартные идентификаторы и идентификаторы пользователя.
Зарезервированные слова (см. табл. 1.1) имеют фиксированное написание и навсегда определенный смысл. Они не могут изменяться программистом, и их нельзя использовать в качестве имен для обозначения величин.
Идентификатор – имя (identification – установление соответствия объекта некоторому набору символов). Для обозначения определенных разработчиками языка функций, констант и т. д. служат стандартные идентификаторы, например, Sqr, Sqrt и т. д. В этом примере Sqr вызывает функцию, которая возводит в квадрат данное число, а Sqrt – корень квадратный из заданного числа. Пользователь может переопределить любой стандартный идентификатор, но чаще всего это приводит к ошибкам, поэтому на практике их используют без изменения. Идентификаторы пользователя – это те имена, которые дает сам программист. При записи программ нужно соблюдать общие правила написания идентификаторов:
В большинстве случаев переменные описываются в блоке begin-end и описание совмещается с инициализацией:
Это решает сразу несколько проблем:
- можно не говорить о типах в первых программах или лишь упоминать их
- невозможно забыть инициализировать переменную
- переменные описываются по мере необходимости близко к месту их использования. Это улучшает читаемость. Проблема старого Паскаля, когда груда переменных описывалась до beginа, отсутствует
При таком способе возникает одна проблема: если надо накопить сумму вещественных, то такой код приведет к ошибке типов:
Для исправления этой ошибки всё равно придётся говорить о типах и инициализировать sum одним из двух способов:
Цикл for var
Переменная - счётчик цикла for всегда должна описываться в заголовке цикла:
Это делает невозможным использование счётчика цикла вне цикла
Цикл loop
Если количество повторений цикла заранее известно, но неважен номер повторения, то используется цикл loop:
Множественное описание переменных с инициализацией
Можно инициализировать сразу несколько переменных в момент описания:
Вывод
Для вывода вместо процедуры Write предпочтительно использовать процедуру Print. В отличие от Write она разделяет элементы вывода пробелами. Например:
Для вывода нескольких значений с пояснениями рекомендуется использовать интерполированные строки:
вместо режущего глаз
Ввод принято осуществлять, используя функции вида ReadInteger, ReadReal и т.д.:
Это позволяет совмещать описание переменной с инициализацией и автовыводом типа. В качестве дополнительных бонусов: можно делать приглашение к вводу как параметр функции ввода и вводить сразу несколько переменных одного типа:
Для ввода с контролем ошибок используется функция TryRead. Она возвращает False если ввод осуществлён неверно (введено не число или число выходит за границы диапазона). Типичный пример её использования:
Тип BigInteger
Для работы с длинными целыми используется тип BigInteger. Например, чтобы вычислить 100!, достаточно написать следующий код:
Константу BigInteger можно также создать, используя суффикс bi - тогда предыдущий код изменится следующим образом:
Некоторые полезные стандартные процедуры, функции и операции
Для обмена значений двух переменных a и b используйте стандартную функцию Swap(a,b) :
Разумеется, первый раз необходимо показать, что обмен значений осуществляется через третью переменную:
Но далее следует использовать Swap.
Минимальное и максимальное среди множества значений можно вычислить, используя стандартные функции Min и Max:
Для возведения в степень используется операция ** :
Возведение в целую степень оптимизировано и работает быстрее стандартной функции Power(a,n) .
Для проверки принадлежности диапазону используется конструкция x in a..b :
Эта операция эффективна и переводится в
Диапазоны также можно использовать для вещественных значений и для символов:
Для проверки принадлежности множеству значений используется либо множество:
Мы рекомендуем второй способ - он существенно более эффективен по скорости и по памяти.
Условная операция
Если переменной необходимо присвоить значение в зависимости от условия, то вместо условного оператора иногда нагляднее использовать условную операцию:
Методы в стандартных типах
Например, чтобы вывести значение переменной базового типа, можно использовать метод Print:
Из других интересных методов для начинающих для целых типов отметим:
Например, в следующей программе вычисляется количество четных двузначных из 10 введённых:
Для вещественных значений полезными являются методы
В частности, удобно использовать цепочечную точечную нотацию:
Для всех числовых типов также определены константы MinValue и MaxValue. Чтобы обратиться к ним, следует использовать имя типа:
Кортежи
Кортежи представляют собой способ объединить несколько значений в одно целое. Значения типа Кортеж записываются в круглых скобках: (1,2,3) или ('Иванов',15) . с помощью кортежей можно выполнять одновременные присваивания нескольким переменным:
Присваивание (a,b) := (b,a) позволяет поменять значения двух переменных.
Использование кортежей даже в начальных задачах крайне многообразно.
Пример 1. Нахождение наибольшего общего делителя
Пример 2. Числа Фибоначчи
©2022 PascalABCNET Team. All rights reserved.
Page last updated: 19.12.2020
Site last generated: Jan 9, 2022
2. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ПАСКАЛЕ
2.5. Организация программ циклической структуры
Для многократного повторения одних и тех же действий в Паскале предусмотрены три оператора цикла. Если число повторений цикла известно, то применяется оператор for . Если число повторений заранее неизвестно, но известно условие завершения цикла, применяются операторы repeat и while .
Данный оператор имеет вид:
f or i := a to b do s ;
При выполнении оператора for сначала вычисляется начальное значение а, которое присваивается переменной i , называемой параметром цикла. Затем вычисляется конечное значение b и проверяется, имеет ли место равенство i = b . Если равенства нет, выполняется оператор s , который может быть составным, и переменная i увеличивается на единицу. После этого проверка (не равен ли параметр конечному значению), выполнение оператора s и увеличение переменной i на единицу выполняется циклически до тех пор, пока не наступает равенство i = b . Параметр цикла i , начальное и конечное значения a и b могут принадлежать любому порядковому типу данных (например, integer ) . Если начальное значение превышает или равно конечному значению с самого начала, оператор s не выполняется ни разу.
Использованные здесь зарезервированные слова for , to и do имеют смысл от, до и выполнить, соответственно.
Возможна другая форма оператора цикла с параметром:
for i := a down to b do s;
Здесь, чтобы выполнялся оператор s , начальное значение а должно превышать конечное значение b . Кроме того, в этом случае параметр i с каждым циклом уменьшается на единицу, пока не станет равным значению b .
Оператор цикла for имеет такие особенности:
· в теле цикла запрещается явно изменять значение параметра цикла;
· по завершении работы оператора for значение параметра цикла считается неопределенным.
Любой цикл состоит из тела и заголовка. Тело цикла — это набор повторяющихся операторов, а условие — это логическое выражение, в зависимости от результата которого и происходит повторное выполнение цикла.
Возьмем одну задачу, которую будем решать, используя различные виды циклов.
Задача 1. Вывести все числа от 1 до числа, введенного с клавиатуры.
While, или цикл с предусловием
Как вы, наверное, уже поняли из названия, while — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true; как только условие становится false, выполнение цикла прекращается.
While имеет формат:
while do ;
Данный цикл подходит только для одного оператора, если же вы хотите использовать несколько операторов в своем коде, вам следует заключить их в операторные скобки — begin и end;.
Repeat, или цикл с постусловием
Repeat — полная противоположность while. Repeat — это цикл, в котором условие стоит после тела. Причем оно выполняется тогда и только тогда, когда результат условия false; как только логическое выражение становится true, выполнение цикла прекращается.
Repeat имеет формат:
repeat < повторяй … >
;
;
…
until
Begin и end не требуются.
For, или цикл с параметром
For — это цикл, в котором тело выполняется заданное количество раз.
Существует две формы записи этого цикла:
Первая форма
После каждой итерации значение будет увеличиваться на 1.
— это начальное значение счетчика. Это может быть переменная или число.
: как только значение станет больше , выполнение цикла прекратится.
Если требуется написать несколько операторов в теле цикла, используем begin и end.
И , и , и — переменные целого типа.
Чаще всего в качестве счетчика используется переменная i.
Вторая форма
После каждой итерации значение будет уменьшатся на 1.
— это начальное значение счетчика.
: как только значение станет меньше , выполнение цикла прекратится.
Два важных примечания:
- Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение ; конечное_значение].
- Изменять значение счетчика внутри тела нельзя! Вот что выводит компилятор:
Согласитесь, данный код проще и лаконичнее, чем все предыдущие. И цикл for — не совсем обычный цикл, в нем нет логического условия. Поэтому цикл с параметром в программировании называют синтаксическим сахаром. Синтаксический сахар — это дополнения синтаксиса языка программирования, которые не добавляют новых возможностей, а делают использование языка более удобным для человека.
Давайте решим пару задач.
For1. Даны целые числа K и N (N > 0). Вывести N раз число K.
Организовываем простой цикл от 1 до требуемого числа.
For2. Даны два целых числа A и B (A
For9. Даны два целых числа A и B (A
Организовываем такой же цикл, как и в предыдущей задаче, но одновременно суммируем квадраты всех чисел. Чтобы высчитать квадрат, используем функцию Sqr.
For13°. Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать.
Для того, чтобы поменять знак, каждую итерацию цикла меняем значение специальной переменной на противоположное.
While1°. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.
Каждый раз вычитаем B из А, пока А — В >= 0.
While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является — вывести False.
Действуем следующим образом: пока N делится нацело на три, делим N нацело. Затем, если N = 1 — число является степенью тройки; если N <> 1, тогда число — не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое div и mod, и как работают логические выражения.
На сегодня все! Не забывайте почаще заходить на наш сайт и кликать по кнопочкам, которые расположены перед комментариями.
Читайте также: