В данном параграфе предлагаю написать программу «Калькулятор». Эта программа будет похожа на калькулятор, который есть в любом Windows-е, в наборе стандартных программ. Соответственно, в ней будут кнопочки, поля, отображающие вводимые числа, и поле для вывода результата. Написав такую программу, мы получим хороший опыт реализации графического интерфейса.
В дальнейшем, если вы станете программистами, то писать кнопочки, поля и вообще весь графический интерфейс, который присущ операционной системе Windows, вам, скорее всего, не придётся, т.к. они есть уже готовые в любом современном языке программирования. Однако сейчас мы пропишем весь графический интерфейс калькулятора «от и до». А так же представим себе, что мы пишем полноценную программу, которая должна перемещаться мышкой по экрану. Всё это не только для того, что бы получить опыт, но и для того, что бы ощутить все преимущества, предоставляемые фирмами разработчиками современных языков.
И так приступим к программированию. Для начала определимся, как должен выглядеть наш калькулятор:
Паскаль с нуля [ч1]. Первая программа.
Так же сформулируем в виде тезисов элементы графического интерфейса, которые должны присутствовать в программе:
- Калькулятор должен перемещаться по экрану с помощью мыши при нажатой левой кнопки. Для этого необходимо нажать в пустом месте калькулятора, не занятом кнопкой или полем ввода/вывода.
- При нажатии на кнопку калькулятора она должна подсветиться другим цветом символизируя то, что она нажата.
- Поле, в которое вводится число, должно быть выделено другим цветом.
Весь процесс программирования данной программы разделим на четыре этапа. Для начала напишем программу, которая будет просто выводить на экран наш калькулятор, и не будет выполнять ни каких действий. Другими словами выведем графическую оболочку калькулятора на экран.
Затем будем добавлять в неё различные процедуры и функции, реализующие графический интерфейс, а после этого добавим процедуры реализующие назначение калькулятора. Последним этапом будет тестирование программы. На этом этапе могут проявиться какие либо ошибки и «глюки», которые необходимо будет устранить.
Рассмотрим все этапы последовательно отдельно друг от друга. Далее будут приведены рассуждения и получившийся код. Код будет приведён только тот, который относится к данному этапу и данным рассуждениям. Соответственно код, который уже написан, приводиться не будет, и будет заменён многоточиями.
Настоятельно рекомендую параллельно чтению книги собирать код программы в PascalABC.NET, и тестировать его каждый раз по мере появления нового кода. В таком случае вы прочувствуете на себе весь процесс создания программы и убедитесь, что всё это не пустые слова, а результат реальной работы.
Этап первый, рисуем графическую оболочку калькулятора. Выполнить данный этап необходимо с учётом того, что далее нам необходимо будет реализовать графический интерфейс.
Т.к. калькулятор будет перемещаться по экрану, то все координаты должны быть относительными, и каждый раз при перемещении они должны уточняться. Для этого создадим ещё две переменные содержащие координаты левого верхнего угла калькулятора.
Так же создадим процедуру заполнения координатами массива объектов, процедуры рисования и стирания калькулятора, а так же отдельную процедуру прорисовки полей ввода вывода. Поля ввода вывода надо будет перерисовывать при их заполнении, каждый раз при вводе нового символа. Поэтому эту процедуру необходимо прописать отдельно.
Код, написанный на первом этапе, будет следующий:
type TObyekt = record //Тип объектов управления калькулятора
x1,y1,x2,y2: integer ; //Координаты объекта
const RKn= 20 ; //Размер кнопок
var X0,Y0: integer ; //Координаты левого верхнего угла калькулятора
//Массив объектов управления калькулятором
Ob: array [ 1..22 ] of TObyekt;
//1..19 — кнопки; 20..22 — поля ввода вывода
procedure UtochneniyeKoordinatOb; //Уточнение координат объектов
for var i:= 1 to 19 do
if (i mod 4 ) = 0 then
Ob[ 19 ].x2:=Ob[ 19 ].x2+ 5 +Rkn;
for var i:= 20 to 22 do
Ob[i].x1:=X0+ 140 ; Ob[i].y1:=Y0+ 5 +Round((i- 19 )* 120 / 3 — 120 / 3 + 5 );
Ob[i].x2:=X0+ 295 ; Ob[i].y2:=Y0+ 5 +Round((i- 19 )* 120 / 3 — 5 );
for var i:= 20 to 22 do
//Рисуем контур калькулятора
Rectangle(X0,Y0,X0+ 300 ,Y0+ 130 );
Line(X0+ 105 ,Y0,X0+ 105 ,Y0+ 130 );
//Уточняем координаты кнопок и полей
for var i:= 1 to 19 do
TextWidth(Ob[i].sStr)/ 2 ),Ob[i].y1+ 2 ,Ob[i].sStr);
//Рисуем поля для ввода/вывода чисел
FillRectangle(X0,Y0,X0+ 300 ,Y0+ 130 );
//Тело основной программы
//Инициализируем начальные параметры
SetPenColor(clBlue); //Цвет контуров калькулятора и объектов
//Заполняем строки в массиве объектов управления
Ob[ 1 ].sStr:= ‘7’ ; Ob[ 2 ].sStr:= ‘8’ ; Ob[ 3 ].sStr:= ‘9’ ; Ob[ 4 ].sStr:= ‘/’ ;
Ob[ 5 ].sStr:= ‘4’ ; Ob[ 6 ].sStr:= ‘5’ ; Ob[ 7 ].sStr:= ‘6’ ; Ob[ 8 ].sStr:= ‘*’ ;
Ob[ 9 ].sStr:= ‘1’ ; Ob[ 10 ].sStr:= ‘2’ ; Ob[ 11 ].sStr:= ‘3’ ; Ob[ 12 ].sStr:= ‘-‘ ;
Ob[ 13 ].sStr:= ‘0’ ; Ob[ 14 ].sStr:= ‘+/-‘ ; Ob[ 15 ].sStr:= ‘.’ ; Ob[ 16 ].sStr:= ‘+’ ;
Ob[ 20 ].sStr:= » ; Ob[ 21 ].sStr:= » ; Ob[ 22 ].sStr:= » ;
Этап второй, элементы графического интерфейса.
Для начала напишем функцию, определяющую порядковый номер объекта, над которым произошло событие нажатия или отпускания кнопки мыши. Если событие произошло вообще не над калькулятором, то функция должна выдавать ноль, если над калькулятором, но не над объектом, то – 23. В качестве параметров должны передаваться координаты, где произошло событие. Далее код функции:
//Определяет, над каким объектом произошло событие нажатия или отпускания
function OprOb(x,y: integer ): byte ;
Result := 0 ; //Событие произошло не над калькулятором
//Если событие произошло над кальклятором, но не над объектом
//Если событие произошло над калькулятором
for var i:= 1 to 22 do
if (x>Ob[i].x1) and (y>Ob[i].y1) and
Перетаскивание калькулятора по экрану. Создадим переменную с именем Peretaskivaniye, которая будет хранить положение стрелки мыши в момент нажатия на калькуляторе (поля dx и dy) и будет иметь поле логического типа Najatiye, которое будет переводиться в True если нажатие произошло на калькуляторе (функция OprOb выдаст 23) и переводиться в False каждый раз как будет клавиша отпускаться. При перемещении мышки по экрану, если Peretaskivaniye.Najatiye=True, то калькулятор будет перемещаться.
Далее получившийся код:
Var Peretaskivaniye: record //Переменная для реализации перетаскивания
//калькулятора по экрану
Najatie: boolean ; //Произошло ли нажатие на калькуляторе
dx,dy: integer ; end ; //Положение мышки в момент нажатия
procedure MouseDown(x,y,mb: integer );
var NajOb: byte ; //Номер нажатой клавиши
if mb= 1 then //Если нажата левая кнопка мыши
Источник: www.dvkuklin.ru
Создание программы в паскале абс
Здравствуйте, начинающие программисты! Из данной статьи вы узнаете как создать программу на Pascal ABC, например, простейший калькулятор.
Заходим в программу Pascal ABC, перед нами открывается чистый лист с названием Program1.pas— это файл программных модулей для написания кода. В дальнейшем его можно компилировать в .exe— исполняемый файл, который будет открывать созданную нами программу.
Для начала назовём нашу программу, к примеру, «Решебник», в коде пишем:
Program reshebnik;
Не забывайте в конце каждой строчки обязательно ставить точку с запятой. Так как мы создаём простейший калькулятор, наш «Решебник» будет вычислять буквально одно действие — сложение двух переменных, то есть a+b=c. Во второй строчке кода объявляем переменные a, b, cи добавляем integer(с англ. — «целое») — уточнение, что a, b, c — целые числа:
Var a, b, c: integer;
Var— в языках программирования означает «переменная».
Теперь создадим блок команд (операторов), который начинается со слова 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.
Вот и все. Надеюсь, всё понятно. Желаю удачи и хороших результатов!
Волков
Последний раз редактировалось: 2018-01-10
Этот раздел ? для тех, кто хочет самостоятельно научиться программированию и тех, кто желает закрепить свои начальные навыки программирования. Здесь содержатся небольшие примеры программ для начинающих, раскрывающие основные конструкции языка Паскаль и содержащие различные широко используемые алгоритмы. Кроме этого, приводятся стандартные ошибки, которые совершают учащиеся в начале обучения.
Раздел рекомендуется для самообучения, повторения пройденного материала и в качестве справочника. Школьники могут использовать материалы данного раздела для подготовки к ЕГЭ по информатике.
Обычно, изучение любого языка программирования начинается с программы Hello, world! Но мы с вами займемся этим чуть попозже, потому что сейчас я хочу рассказать вам о величинах и типах данных в Pascal.
Виды величин
Обычно, изучение любого языка программирования начинается с программы Hello, world! Но мы с вами займемся этим чуть попозже, потому что сейчас я хочу рассказать вам о величинах и типах данных в Pascal. Что такое величина? Величина — это отдельный информационный объект, хранящийся в памяти компьютера. Существуют две классификации величин.
Мы рассмотрим каждую в отдельности.
Более подробно мы поговорим о них в последующих уроках.
В свою очередь числовой делится на два типа.
Привожу сразу обозначение этого типа в Паскаль
Символьные тоже делятся на два типа.
Вторая классификация величин.Константа — значение неизменно. Переменная — значение может меняться в течение работы программы. Переменные обозначаются символическими именами, которые называются идентификаторами. Как присвоить значение какой либо переменной? С помощью команды присваивания! Команда присваивания в Паскаль::=
Первая программа на Pascal
Структура программы в Паскаль
Объявление переменных и констант
Раздел операторов
Ввод и вывод в Паскаль
У вас, наверняка, возникает вопрос: «Как вводить значения переменных с клавиатуры?», а также: «Как вывести на экран полученный результат?». Для этого используются четыре специальных оператора:
Для ввода:
- read(Переменную)
- readln(Переменную)
И для вывода:
- write(Текст в »)
- writeln(Текст в »)
«В чем разница между read и readln, write и writeln?»: снова озадачитесь вы. Ответ прост. Если добавляете «ln» (что расшифровывается, как Line), то курсор переносится на следующую строку.
Hello, World на Pascal
Теперь вы готовы написать первую программу.
Ну, тут все понятно. Чтобы разнообразить решение предлагаю решить несколько задачек этого типа.
Задача 1. Требуется запросить имя пользователя, а затем вывести «Привет, !»Для решения этой задачи нам потребуется строковой тип данных — string.
Задача 2.Требуется узнать сколько лет пользователю, а затем вывести «Вам лет».Очевидно, что для решения этой задачи нам потребуется целочисленный тип данных — Integer.
Ну, вот и все! Все, что я хотел рассказать вам в сегодняшнем уроке. Вы узнали, что такое величина в Pascal, и выучили основные типы. А также научились создавать простейшие линейные программы. Более подробно про типы в PascalABC.Net мы поговорим в следующих уроках. Кстати, про PascalABC.Net.
Понятно, что писать программы на листочках бесполезно, и вы должны тренироваться на компьютере. По этой ссылке скачайте последнюю версию PascalABC.Net для Windows.
Вот, как выглядит интерфейс программы при запуске.
P.S. Давайте выделим две особенности Pascal:
- Паскаль НЕ чувствителен к регистру, то есть и program, и Program, и PrOgRaM для него ничем не отличаются. А потому с самого начала привыкайте писать в нижнем регистре, чтобы при переходе на другой язык программирования не испытывать никаких проблем с этим;
- Имя программы в Pascal не играет никакого значения, оно не несет в себе никаких полезных функций. Если хотите вы можете просто не писать ЕГО!
Источник: planshet-info.ru
Видеоуроки
Компиляторы (2.Заканчиваем выделять) — Слова и строки
Решаем задачу для 7 класса
Пианино + ООП + Кличко
Крутой калькулятор со скобками. Разбор выражений
Крутой калькулятор со скобками. Разбор выражений(2 часть)
Продвинутая телефонная книга! Быстрый поиск. Индексирование.
Продвинутая телефонная книга! Быстрый поиск. Индексирование.(2 часть)
Продвинутая телефонная книга! Быстрый поиск. Индексирование.(3 часть )
2D Графика. Система частиц. CallBack. Отключили интернет
Продвинутая телефонная книга! Быстрый поиск. Индексирование(2 часть).
2D Графика. Система частиц. CallBack. Затупил.
2D Графика. Система частиц. CallBack. Кружочки.
2D Графика. Система частиц. CallBack. x100 БЫСТРО.
Источник: pascal-abc.ru