Как сделать откладку в паскале абс
Язык Паскаль характеризуется чёткой структурой программы, простотой и ясностью конструкций. С момента создания Паскаль был универсален и пригоден для решения широкого круга задач. Строгая типизация языка значительно сокращает количество ошибок в программах.
1. Нерасширенный Паскаль (Unextended Pascal) был разработан в 1983 году и практически полностью совпадает с описанием языка по Вирту.
2. Расширенный Паскаль (Extended Pascal) содержит расширения, затрагивающие модульное программирование (отдельная компиляция модулей, импорт-экспорт подпрограмм, интерфейсная часть и реализация) и дополнен рядом процедур и функций (прямой доступ к файлам, работа со строками и др.).
3. Объектный Паскаль (Object Pascal) принят в 1993 г . Он поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и другие атрибуты объектно-ориентированного программирования. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
1. Для операционной системы MS-DOS самое большое распространение приобрела реализация языка Паскаль фирмы Borland под названием Turbo Pascal (первая версия языка появилась в 1983 году).
2. Borland Pascal включает в себя более дешёвый и менее мощный Turbo Pascal и, кроме того позволяет создавать программы как под реальный, так и под защищённый 16-битный режим DOS, а так же программы для Windows. В нем открыты исходные тексты системных библиотек и функций времени выполнения.
3. Delphi – интегрированная среда разработки ПО для Microsoft Windows на языке Delphi , созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая Embarcadero Technologies.
4. Free Pascal – свободно распространяемый компилятор языка программирования Pascal с ориентацией на Object Pascal.
5. Lazarus – свободно распространяемая интегрированная Delphi -подобная среда разработки программного обеспечения для компилятора Free Pascal, предоставляющая возможности кроссплатформенной разработки приложений.
На предыдущем уроке было показано, как использовать оператор Select Case для выбора из нескольких вариантов.
В этом уроке будет описана среда программирования Pascal ABC.
Вы познакомитесь со структурой окна, горячими клавишами, которые можно использовать при работе с текстом программы, узнаете как выполняется запуск и остановка программы.
Система программирования Pascal ABC ориентирована на школьников и студентов младших курсов. Это в достаточно простая и дружественная среда программирования. Во время работы используются три основных окна: окно редактора кода, окно ввода и окно вывода.
Окно редактора кода
Большую часть рабочей области, её верхнюю часть занимает окно редактора кода. В него вводится исходный текст программы.
Горячие клавиши, которые можно использовать при работе с текстом программы:
F2, Ctrl-S- сохранить файл.
F3, Ctrl-O- загрузить файл.
F12- сохранить файл под новым именем.
Ctrl-Shift-S- сохранить все открытые файлы.
Ctrl-Tab, Ctrl-Shift-Tab — перейти к следующему/предыдущему окну редактора.
Ctrl-Shift-I- увеличить отступ выделенного блока.
Ctrl-Shift-U — уменьшить отступ выделенного блока.
Окно вывода
Окно вывода может быть скрыто. Клавиша F5 показывают/скрывают окно вывода. Для скрытия окна вывода используется также клавиша Esc.
Окно вывода обязательно открывается при любом выводе в него.
Для очистки окна вывода следует нажать комбинацию клавиш Ctrl-Del или кнопку .
Окно ввода
Окно ввода открывается при выполнении процедур read и readln в ходе работы программы:
Ввод данных в в окно ввода сопровождается эхо-выводом в окно вывода (см. рис). После нажатия клавиши Enter данные из окна ввода попадают в соответствующие переменные, окно ввода закрывается, и программа продолжает работать дальше.
Запуск и остановка программы
Для запуска программы в текущем окне редактора следует нажать клавишу F9 или кнопку панели инструментов.
В данной секции располагаются определенные пользователем константы. Синтаксис объявления констант выглядит так:
Данная секция предназначена для переменных и массивов. Переменные объявляются так:
Тип строка - это тип переменных, который позволяет хранить в переменной любой текст. Объявление строковой переменной:
Операция | Описание |
---|---|
s1 + s2 | Объединение строк |
s1*n | Дублирование строки n раз |
Операция | Описание |
---|---|
a + b | Сложение чисел |
a - b | Разность чисел |
a * b | Произведение чисел |
a div b | Целочисленное деление |
a mod b | Остаток от деления |
Декларация переменной типа real:
Пример присваивания переменной данного типа:
Операция | Описание |
---|---|
a + b | Сложение чисел |
a - b | Разность чисел |
a * b | Произведение чисел |
a / b | Частное чисел |
Данный раздел программы содержит все команды, выполняемые при ее запуске. Данная секция программы выглядит так:
Комментарий - это часть кода, которую игнорирует компилятор. Он создается следующим образом:
Массивы - это именованный список элементов одного типа.
P. S. Для работы с массивами существует учебный модуль Arrays.
Статические массивы имеют фиксированный размер. Общий синтаксис объявления данных массивов выглядит так:
, где N - длина массива.
Матрица - это n-мерный список значений, имеющий свой тип и ограниченный некоторыми значениями. Пока будем рассматривать только статические двухмерные и трехмерные матрицы. Перед тем, как перейти к их изучению вспомни таблицы в Excel. Каждая таблица имеет свой размер - ширину и длину. Возьмем за правило ассоциировать двухмерные матрицы с таблицами. Объявление матрицы:
, где N, M количество строчек и столбцов соответственно.
Трехмерный матрицы обладают третьим измерением:
Декларация N-мерной матрицы:
, где A..Z означают количество элементов в соответствующем измерении.
Динамические массивы позволяют управлять количеством элементом в каждом из их измерений во время выполнения программы.
Индекс массива - это номер элемента массива. Индекс может принимать значения [0, N - 1], где N - количество элементов некоторой размерности. Обращение к элементу одномерного массива с некоторым индексом:
Составим таблицу, которую следует запомнить:
Где i, j, k - индексы.
Индексом может быть значение элемента массива:
Вывести текст - это значит отобразить текст на экране. Общий синтаксис для вывода текста выглядит так:
Вывод значений произвольного количества переменных:
Для перехода на новую строку после вывода последнего значения используйте Writeln вместо Write.
Чтение с клавиатуры - это процесс ввода данных с клавиатуры и запись в соответствующий элемент программы этих данных. Элементами программы являются как переменные, так и элементы массивов. Тип данных, вводимых с клавиатуры, должен соответствовать типу элемента, в который записываются данные с клавиатуры. Использование Readln для чтения с клавиатуры и перехода на новую строку:
Общий синтаксис условного оператора if:
Команды . будут выполнены только при истинности условия.
Условные обозначения в программировании операций сравнения приведены в таблице:
Операция | Эквивалент в Паскале |
---|---|
≤ (меньше или равно) | |
≥ (больше или равно) | >= |
> (больше) | > |
= (равно) | = |
≠ (не равно) | <> |
Общий синтаксис сравнения двух величин:
Оператор case используется для сопоставления значения некоторого выражения с константными значениями:
Если некоторое i-тое константное выражение совпадает с значением выражения, то i-ая группа операторов будет выполнена. Группа операторов после else будет выполнена, если значение выражения не совпало ни с одной из констант. begin - end не нужны, если после двоеточия только один оператор.
Оператор цикла позволяет выполнять группу операторов (или один) циклически пока условие является истинным.
Если второе значение меньше первого - используйте downto вместо to.
Для выхода из цикла можно использовать break:
Для завершения текущей итерации цикла и начала другой используйте оператор continue.
Общий синтаксис описания функции:
Можно устанавливать значение переменной Result для указания возвращаемого значения.
Отличие от стандартного Паскаля: значение присваивается в Result .
function Add(a,b:real):real; begin Result:= a + b; end;
function Add(a,b:real):real:= a + b;
Или же функция может выступать в качестве процедуры (нежелательный вариант):
function Add(a,b:real):= a + b; begin print(Add(2,8)); end;
Пример: Вычислить S и P прямоугольника со сторонами a и b. Использовать кортеж и функцию в качестве процедуры.
Выполнение:
function SP(a,b: real):=(a*b,2*(a+b)); begin print(SP(2,3)); end;
Короткие процедуры:
procedure p(a, b: real):= if a
Использование модуля
Функции и процедуры принято помещать в пользовательские модули.
Для модуля создается отдельный файл, например, MyUnit.pas, в котором прописывается код функции или процедуры:
Unit MyUnit; interface function MyFunc(x:real):real; procedure MyPr(x:real); implementation function MyFunc(x:real):real; begin . end; procedure MyPr(x:real); begin . end; end.
В файле с основной программой:
Uses MyUnit; var . begin . end.
Тестирование процедур и функций
Все созданные процедуры принято тестировать. Для этого существует стандартная функция Assert:
function Add(a,b:integer):integer; begin Result:= a + b; end; begin Assert(Add(2,3)=(2+3), 'Тест не прошел'); print (Add(4,6)); end.
Обобщенные функции (Generic-функции)
Не всегда удобно, когда мы указываем конкретный тип аргументов функции или конкретный тип возвращаемого функцией значения.
Есть понятие обобщенной функции, в которой не указано к какому типу будут относиться ее аргументы или возвращаемое ею значение:
Подпрограмма образуется из обобщенной подпрограммы подстановкой конкретных типов в качестве параметров.
Запись такой функции выглядит так:
function MyFunc (a:T):T; begin . end;
В данном примере и аргумент и значение функции имеют изначально неопределенный тип.
Еще пример с обобщенной функцией.
Решение задач
Пример: Описать обобщенную функцию IsitDigit(D) , которая возвращает истину, если целое число D является цифрой (одноразрядное число, то есть D лежит в диапазоне 0–9). В основной программе вывести значение этой функции для N ( N ≥ 0 ) данных чисел
Выполнение:
function IsitDigit (d:T):boolean; begin var ch:=[0..9]; if d in ch then result:=true else result:=false; end; begin var n:=readInteger('введите число > 0'); assert (n>0,'число должно быть > 0'); print(IsitDigit(n)); end.
Выполнение:
function AddToRightDigit(i,n:integer):integer; begin var str:=n.ToString+i; result:=str.ToInteger; end; begin var n :=readInteger ('введите число'); var i :=readInteger('введите постфикс'); print(AddToRightDigit(i,n)) end.
Выполнение:
function ASred(x,y:real):=(x+y)/2; begin var x:= readReal('введите x'); var y:= readReal('введите y'); println('результат средн. арифм: ',ASred(x,y)); end.
Задание 2: Описать в краткой форме функцию GSred(X, Y) , вычисляющую среднее геометрическое двух положительных вещественных чисел X и Y .
Читайте также: