Parus16.ru

Парус №16
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Здравствуйте, начинающие программисты! Из данной статьи вы узнаете как создать программу на Pascal ABC, например, простейший калькулятор.

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Заходим в программу Pascal ABC, перед нами открывается чистый лист с названием Program1.pas — это файл программных модулей для написания кода. В дальнейшем его можно компилировать в .exe — исполняемый файл, который будет открывать созданную нами программу.

Для начала назовём нашу программу, к примеру, «Решебник», в коде пишем:

Program reshebnik;

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Не забывайте в конце каждой строчки обязательно ставить точку с запятой. Так как мы создаём простейший калькулятор, наш «Решебник» будет вычислять буквально одно действие — сложение двух переменных, то есть a+b=c. Во второй строчке кода объявляем переменные a, b, c и добавляем integer (с англ. — «целое») — уточнение, что a, b, c — целые числа:

Var a, b, c: integer;

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Теперь создадим блок команд (операторов), который начинается со слова begin и заканчивается словом end. Пишем:

begin

Следующей сторочкой предложим пользователю ввести число. Инструкция Write (с анг. — «запись») выведет на экран монитора наше сообщение, WriteLN — ещё и переведёт курсор в начало следующей стороки, то есть пишем в файле четвёртой строчкой:

WriteLN (‘Введите число A:’);

Пятой строчкой выполним ввод пользователя с помощью команды read (с англ. — «читать»):

ReadLN (a);

То же самое проделаем со вторым числом b:

WriteLN (‘Введите число B:.’);
ReadLN (b);

Выполняем подсчёт введённых переменных. Знак «:=» означает присваивание, присваиваем числу c значение a+b:

Выводим ответ и завершаем блок операторов:

WriteLN (‘Ответ’, c);
end.

Итак, наш «Решебник» готов к использованию. Проверим, как он работает. В Верхнем меню программы Pascal ABC выбираем Программа -> Выполнить.

Program reshebnik;
Var a, b, c: integer;
begin
WriteLN (‘Введите число A:’);
ReadLN (a);
WriteLN (‘Введите число B:’);
ReadLN (b);
c := a+b;
WriteLN (‘Ответ’, c);
end.

Как создать программу на Pascal ABC. Простейший калькулятор на Паскале

Вот и все. Надеюсь, всё понятно. Желаю удачи и хороших результатов!

 Дата публикации: 2011-08-16
Опубликовал: Н.Волков
Последний раз редактировалось: 2021-10-28

Pascal ABC задачи с решением

Сгенерировать случайное число, вывести на экран это число, а также сумму и произведение его цифр.

Алгоритм решения задачи:

random(900) генерирует случайное число от 0 до 899. Если прибавить к нему 100, то получится диапазон от 100 до 999 включительно, т. е. охватывает все трехзначные числа.

Чтобы извлечь из числа цифру сотен надо его разделить нацело на 100.

Для получения цифры десяток можно сначала разделить нацело на 10, а затем найти остаток от деления на 10.

Единицы извлекаются путем нахождения остатка от деления числа на 10.

Программа на языке Паскаль:

var n: integer ; a,b,c: byte ; begin randomize; n := random(900) + 100; writeln(n); a := n div 100; b := n div 10 mod 10; c := n mod 10; writeln('Сумма: ',a+b+c); writeln('Произведение: ',a*b*c); end .

Пример выполнения программы:

536 Сумма: 14 Произведение: 90

Задача 2:

Сгенерировать случайные целое число, вещественное число, букву в диапазонах, которые вводит пользователь.

Описание переменных:

min_i, max_i — минимальная и максимальная границы диапазона для целого числа;

n_i — случайное целое число;

min_f, max_f — минимальная и максимальная границы диапазона для вещественного числа;

Читайте так же:
Игра для обучения печатать

n_f — случайное вещественное число;

first_c, last_c — первый и последний символ диапазона, в котором должен быть сгенерирован случайный символ;

min_c, max_c — коды-числа, соответствующие указанным символам;

n_c — случайное число, которое будет переведено в символ по таблице ASCII.

Программа на языке Паскаль:

var min_i, max_i, n_i: integer ; min_f, max_f, n_f: real ; first_c, last_c: char ; min_c, max_c, n_c: byte ; begin randomize; write('Minimum integer: '); readln(min_i); write('Maximum integer: '); readln(max_i); n_i := random(max_i-min_i+1) + min_i; writeln(n_i); write('Minimum float: '); readln(min_f); write('Maximum float: '); readln(max_f); n_f := random() * (max_f-min_f) + min_f; writeln(n_f:5:2); write('First char: '); readln(first_c); write('Last char: '); readln(last_c); min_c := ord(first_c); max_c := ord(last_c); n_c := random(max_c-min_c+1) + min_c; writeln(chr(n_c)); end .

Пример выполнения программы:

Minimum integer : -100 Maximum integer : 100 -46 Minimum float: 0.23 Maximum float: 0.85 0.53 First char : k Last char : q p

Задача 3:

Найти позицию в алфавите двух английских букв и количество символов между ними.

Определить букву по ее позиции в алфавите.

Алгоритм решения задачи:

Позиция буквы в алфавите определяется ее "смещением" относительно первой буквы алфавита. Если знать коды первой буквы и искомой, то разность их кодов покажет, на сколько позиций они отстоят друг от друга. В языке программирования Pascal код-номер буквы по таблице кодов символов ASCII определяется с помощью функции ord(), которой в качестве значения передается символ.

Для обратного действия — определения буквы по ее известной позиции в алфавите — надо к позиции буквы прибавить код первой буквы алфавита. После этого получить искомую букву по ее коду. Это делается с помощью функции chr(), которой передается число-код символа по таблице ASCII.

Программа на языке Паскаль:

var a,b: char ; an, bn, n: byte ; begin write('Буква 1: '); readln(a); write('Буква 2: '); readln(b); an := ord(a); bn := ord(b); writeln('Позиция 1: ', an-ord('a')+1); writeln('Позиция 2: ', bn-ord('a')+1); n := abs(bn-an)-1; writeln('Количество букв между ними: ', n); writeln; write('Позиция буквы в алфвите: '); readln(n); n := n+ord('a')-1; writeln('Это буква — ', chr(n)); end .

Пример выполнения программы:

Буква 1: w Буква 2: z Позиция 1: 23 Позиция 2: 26 Количество букв между ними: 2 Позиция буквы в алфвите: 10 Это буква — j

Задача 4:

По координатам двух точек, которые вводит пользователь, определить уравнение прямой, проходящей через эти точки.

Алгоритм решения задачи:

Общий вид уравнения прямой имеет вид y = kx + b. Чтобы найти уравнение для конкретной прямой, необходимо вычислить коэффициенты k и b. Сделать это можно, если известны координаты двух точек, лежащих на этой прямой. В этом случае решается система уравнений:

Программа на языке Паскаль:

var x1,y1,x2,y2: real ; k, b: real ; begin write('A(x1;y1): '); readln(x1, y1); write('B(x2;y2): '); readln(x2, y2); k := (y1 — y2) / (x1 — x2); b := y2 — k * x2; writeln('y = ',k:0:2,'x + ',b:0:2); end .

Базовые конструкции PascalABC.NET

В большинстве случаев переменные описываются в блоке 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 :

Эта операция эффективна и переводится в

Диапазоны также можно использовать для вещественных значений и для символов:

Для проверки принадлежности множеству значений используется либо множество:

Мы рекомендуем второй способ — он существенно более эффективен по скорости и по памяти.

Условная операция

Если переменной необходимо присвоить значение в зависимости от условия, то вместо условного оператора иногда нагляднее использовать условную операцию:

Методы в стандартных типах

В PascalABC.NET внутри каждого типа имеется ряд полезных методов. В отличие от внешних процедур и функций, они “вшиты” в тип — переменная знает все свои методы и может вызывать их, используя точечную нотацию.

Например, чтобы вывести значение переменной базового типа, можно использовать метод Print:

Из других интересных методов для начинающих для целых типов отметим:

Например, в следующей программе вычисляется количество четных двузначных из 10 введённых:

Для вещественных значений полезными являются методы

В частности, удобно использовать цепочечную точечную нотацию:

Для всех числовых типов также определены константы MinValue и MaxValue. Чтобы обратиться к ним, следует использовать имя типа:

Кортежи

Кортежи представляют собой способ объединить несколько значений в одно целое. Значения типа Кортеж записываются в круглых скобках: (1,2,3) или (‘Иванов’,15) . с помощью кортежей можно выполнять одновременные присваивания нескольким переменным:

Как рисовать в Паскале АВС — команды, алгоритмы и примеры

Особенности графики в Паскале ABC

Этот язык программирования не очень удобен для создания графических приложений. Есть множество более удобных альтернатив, особенно в плане быстродействия кода. Однако большинство школьников, как и некоторые студенты, начинают изучать программирование именно с Паскаля, а с приближением экзаменов всё больше времени тратится на подготовку, из-за чего изучать сторонний материал не всегда уместно. Научиться работать с графическим интерфейсом будет полезно по таким причинам:

Читайте так же:
Игры для xbox 360 на русском языке

Введение в Pascal

  • Легче запомнить синтаксис языка со всеми обозначениями.
  • Новый опыт разработки.
  • Изучение графических функций в Паскале ABC.
  • Визуальное восприятия кода.
  • Некоторым такая задача кажется более интересной.

К тому же освоившись с примерами элементарной графики, у многих возникает желание написать игру или приложение для онлайн-рисования. Такая программа будет очень простой, но из-за постоянного обновления функционала начинающий программист будет узнавать о новых возможностях языка. Кому-то это покажется пустой тратой времени, но работа над проектом — на самом деле лучший способ обучения. Особенно хорошо метод работает, когда ученик сам заинтересован в получении какого-либо информационного продукта, а не получает указание от преподавателя.

Замена графики

Чтобы пользоваться минимальными графическими возможностями, достаточно подключить модуль CRT, который отображает отдельное окно консоли на экране. Без его использования код выводится в соответствующем поле интерпретатора, а также недоступны многие полезные команды Pascal ABC.

В таком режиме можно пользоваться псевдографикой — интерфейсом, построенным из различных символов:

Описание двух вариантов использования псевдографики с модулем CRT

  • звёздочка;
  • точка;
  • тире;
  • подчёркивание;
  • скобки всех разновидностей;
  • кавычки;
  • решётка;
  • восклицательный и вопросительный знаки;
  • прямой и обратный слэш;
  • двоеточие;
  • точка с запятой;
  • тильда;
  • собака;
  • знак доллара.

Так как по умолчанию шрифт консоли таков, что все знаки занимают одинаковую ширину, можно включать любые символы, которые будут достаточно контрастны. Есть несколько вариантов реализации, которые отличаются по сложности кода.

Упрощённый способ

Новичкам лучше начинать с самого простого варианта. Такой код будет плохо оптимизирован, но его проще всего написать. Выполняется это в несколько простых шагов:

Как рисовать в паскале

Графика паскале, различных по уровню сложности

  1. Для начала надо определиться со стандартными размерами окна консоли. Лучше задать это командами setwindowwidth (x) и setwindowheight (x), где в скобках указывается число символов для ширины и высоты соответственно. Однако можно просто настроить окно консоли, щёлкнув по нему правой кнопкой мыши при запуске и перейдя в настройки. Первый вариант гораздо грамотнее и практичнее, ведь приложение будет исправно работать на любой машине с операционной системой Windows.
  2. Когда ширина и высота настроена, можно переходит к следующему шагу — заготовке изображений. Зная параметры границ, при помощи символов можно составить любое изображение. Хранить такую заготовку лучше в матрице текстовых строк (тип string), где столбец соответствует номеру иллюстрации. Этот параметр следует ограничить количеством изображений, а другой — высотой картинки.
  3. Для вывода каждого готового изображения нужно использовать команду writeln (x[n, l]), где x это название массива, n — номер изображения, а l — выводимая строка. Это выполняется в цикле любого типа — главное, чтобы число повторений соответствовало количеству строк.
  4. Алгоритм анимации (с движением) весьма прост. Для очистки экрана надо воспользоваться процедурой clrscr, в неё не нужно передавать какие-либо параметры. Эта команда будет завершающей во внешнем цикле. При следующем исполнении сначала должна быть увеличена переменная l, а лишь затем начать выполняться внутренний цикл.

Ещё один важный момент — необходимость задержки для корректного отображения анимации. Проще всего сделать это, поместив процедуру delay () между окончанием внутреннего цикла и командой очистки экрана. Внутрь этой команде передаётся время задержки в миллисекундах. Если это время должно как-то меняться, то следует выделить для этого отдельную переменную, а также прописать алгоритм изменения.

Это самый лёгкий способ. Его удобно реализовать, на это тратится мало времени, единственная трудность — ручное построение рисунков текстом (при написании программы). А также такой код не всегда будет работать плавно, ведь слишком частая очистка и наполнение консоли заметна визуально из-за мерцания.

Оптимизированный метод

Этот вариант несколько сложнее в реализации, ибо для него не хватит одиночного вложенного цикла. С другой стороны, этот метод не требует обязательной предварительной отрисовки всех изображений. Чтобы адаптироваться к такой технологии, лучше начать с простых фигур:

  • квадрат;
  • треугольник;
  • прямоугольник;
  • трапеция;
  • окружность.
Читайте так же:
Версия linux для игр

Использование модуля GraphABC

Для каждой из вариаций лучше прописывать отдельную функцию. Принцип заключается в том, что если курсор стоит на пространстве консоли, занятом другим символом, то старый знак заменится новым при выводе этого символа. Эта реализация требует использования функции setcursorpos (x, y), где x и y — это координаты установки курсора по ширине и высоте соответственно, отсчёт начинается с левого верхнего угла.

Если на экране ещё нет изображения, то этот оператор используется для точечной отрисовки фигур. При этом важно использовать write, а не writeln, чтобы курсор не переходил на новую строку — в этом нет необходимости. Если рисунок уже есть, то ненужные фрагменты можно просто заменить необходимыми знаками, либо стереть вовсе, введя символ пробела. Функции следует отводить не под целые фигуры, а под составляющие их линии и окружности.

Алгоритм линейного рисования довольно прост. При самой практичной реализации функция принимает лишь координаты двух точек, а также выводимый символ. Затем она вычисляет разницу по ширине и высоте — это необходимо, чтобы строить линии под углом, отличным от 0, 45 и 90. После каждого выполнения цикла печатается по одному знаку, а курсор смещается в новую точку. Смещение рассчитывается при помощи уравнения прямой, которое составляется исходя из разницы по «иксу» и «игрику». Для окружности соответственно применяется уравнение окружности, а принцип остаётся прежним.

Дополнительный вариант

Тонкости рисования в паскале

Этот вариант не исключает использования прошлых методик, но больше подходит для оптимизированной реализации. Модуль crt предусматривает заполнение фона консоли различным цветом. Это распространяется не только на заливку всего окна, но также актуально для каждого пространства под символ.

Таким образом, можно нарисовать любую необходимую фигуру или изображение. Единственное отличие от прошлых двух методов — заполнение осуществляется при помощи связки трёх, а не двух команд. Сначала надо установить курсор консоли в требуемое положение, а после этого функцией textbackground (x), где x — это цвет, заданный числом от 0 до 15 или текстовой константой. Можно как печатать пробел, так и любой другой знак. Этот символ возможно также окрасить процедурой textcolor, которая определяет цвет по аналогичному входящему параметру. Ориентироваться по номерам легче, когда открыта таблица цвета в Паскале abc.

Графический модуль

Если воспользоваться специализированным модулем, то будет возможно создавать пиксельные изображения любой сложности. В Пакале АБС он называется GraphABC, входит в список стандартных и подключается аналогично другим.

Читайте так же:
Готовые движки для игр

Предварительная подготовка

Написание программы следует начать с настройки используемого окна. Для этого можно воспользоваться некоторыми из этих процедур:

Возможность рисовать в Паскале ABC

  • SetWindowWidth. Устанавливает ширину, равную полученному параметру.
  • SetWindowHeight. Выполняет аналогичные действия для высоты.
  • SetWindowIsFixedSize. Принимает переменную логического типа, в случае значения True запрещает пользователю менять параметры ширины и высоты при использовании программы.
  • ClearWindow. Заливает окно белым, очищая экран.
  • Clear. Выполняет аналогичные действия, но может закрасить выбранным цветом.
  • Minimize. Сворачивает приложение.
  • Maximize. Разворачивает окно на весь экран.
  • Normalize. Приводит окно в положение, актуальное до сворачивания. Восстанавливаются такие параметры, как расположение и размеры.

Когда необходимые настройки прописаны, можно приступить к следующему шагу. Если приложение не предполагает, что шрифт будет меняться, его следует также изменить на первых строках кода. Установить цвет и стиль возможно командами SetFontColor и SetFontStyle соответственно. В некоторых случаях могут пригодиться функции FontColor и FontStyle, которые возвращают используемые значения цвета и стиля.

А также важно заранее научиться работать с цветом в Паскале ABC. Будет полезно знать про:

  • RGB. Возвращает значения компонентов из названия.
  • ARGB. Работает аналогично RGB, но дополнительно выводит параметр прозрачности.
  • clRandom. Позволяет получить заранее неизвестный цвет.
  • GetRed. Оценивает красную составляющую переданного цвета.
  • GetGreen. Выводит зелёный из полученной переменной.
  • GetBlue. Возвращает значение синего.

Эти функции очень практичны, ведь в модуле GraphABC цвет задаётся в формате RGB. А также, в сравнении с методами псевдографики, роль курсора играет кисть, поэтому необходимо уметь изменять её параметры. Существуют SetPenColor, SetPenStyle и SetPenWidth — для установки цвета, стиля и толщины.

Для контроля этих значений можно включать в код PenColor, PenWidth, PenStyle. Координаты отслеживаются с помощью PenX и PenY.

Основные процедуры

Этот модуль предоставляет большое количество функций для рисования примитивов наподобие линий, ломаных, текста, а также окружностей и прямоугольников с последующей заливкой. Самая универсальная команда — PutPixel. Она размещает пиксель выбранного цвета в указанной координате. При помощи этой функции можно нарисовать любое изображение, но гораздо удобнее воспользоваться встроенными процедурами:

Иллюстрации и анимация

  • Line. Использует текущий цвет, проводит линию между двумя точками.
  • FillCircle. Рисует круг по полученным координатам центра и длине радиуса.
  • DrawCircle. Выводит окружность без заполнения.
  • DrawEllipse. Выводит контур эллипса, ограниченного прямоугольником с указанными координатами вершин.
  • FillEllipse. Рисует также эллипс, но с заливкой.
  • DrawRectangle или FillRectangle. Работает с прямоугольником, рисует или заливает его соответственно.
  • Arc. Необходим для рисования дуги окружности. Принимает пять параметров, включая координаты центра, радиус и угол поворота ограничивающих лучей.
  • DrawPie и FillPie. Работает аналогично Arc, требует тех же переменных на входе, но рисует сектор окружности или его контур.
  • TextOut. Выводит текст в прямоугольнике по координатам (значениям x и y соответствует левый верхний угол).
  • DrawTextCentered. Похожа на TextOut, но текст размещается по центру.
  • FloodFill. Заливка всей однотонной области, на которую указывает точка.
  • LineTo. Может принимать как два, так и три параметра. По умолчанию проводит линию от положения кисти до заданной координаты текущим цветом, при дополнении — указанным.
  • MoveTo. Ставит кисть на нужное место.

Также может потребоваться GetPixel. Эта функция вернёт цвет пикселя, на который указывает кисть.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector