Как оформляется программа на языке программирования pascal
Для начала написания непосредственно кода программы надо знать ее структуру: как правильно записываются команды, в каком порядке.
На первом занятии вы узнаете:
- Какова структура программы на языке Паскаль.
- Как написать простейшую программу.
Для создания программ можно использовать среду программирования Pascal ABC.
Структура программы
Программа на языке Паскаль начинается с заголовка, имеющего следующий вид:
За ним идет раздел описаний, в котором должны быть описаны все идентификаторы (константы, переменные, типы, процедуры, функции, метки), которые будут использованы в программе.
После раздела описаний идет раздел операторов, который начинается со служебного слова begin (начало) и заканчивается служебным словом end (конец).
В этом разделе задаются действия над объектами программы, описанными в предыдущем разделе. Операторы в этом разделе отделяются друг от друга точкой с запятой. После последнего слова end ставится точка.
Общий вид программы:
В разделе описаний не обязательно должны быть все разделы.
В наших первых программах будет только один раздел — раздел Var (variable — переменная), в котором мы будем объявлять те переменные, которые будем использовать в разделе операторов.
Как написать простейшую программу
Рассмотрим простейшую задачу с линейным алгоритмом.
Для записи программы с линейным алгоритмом нам нужно описать входные и выходные данные, нужны процедуры для вводы и вывода данных и оператор присваивания.
Задача. Ввести с клавиатуры два числа. Вывести на экран их произведение.
Пояснения к программе
Имя этой программы example_1.
Из разделов описаний имеется лишь один — раздел переменных. Он начинается со служебного слова var, после которого идет последовательность объявления переменных, разделенных точкой с запятой.
В каждом объявлении перечисляются через запятую имена переменных одного типа, после чего ставится двоеточие и указывается тип переменных.
В нашем примере описаны три переменные: все они (a, b и rez) имеют целый тип (integer).
После описательной части идет раздел операторов, начинающийся со служебного слова begin.
Первый встречающийся оператор — это writeln(‘текст’); — записать (вывести) на экран текст, заключенный между апострофами, ln добавляется в конце этого оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы.
Следующий оператор — это readln(a,b); — читать данные с клавиатуры.
В данном случае во время выполнения программы необходимо ввести два целых числа через пробел, тогда переменной a присваивается значение, равное первому введенному числу, а переменной b присваивается значение, равное второму введенному числу.
Например, вы ввели числа 12 и 45, тогда a = 12, а b = 45. В конце этого оператора также можно ставить ln.
После этих двух операторов стоит оператор присваивания: rez := a * b; (:= — это знак присваивания в языке Паскаль). Переменная rez получит значение, равное произведению числа a на число b .
Следующий оператор — это снова оператор writeln(‘текст’,rez) — он выведет на экран текст, заключенный между апострофами, а за ним значение переменной rez.
Завершает раздел операторов end с точкой.
Выполнение программы
Введите два целых числа через пробел
Коротко о главном
Программа на языке Pascal состоит из заголовка, раздела описаний и раздела операторов.
Если программа содержит несколько операторов, то они разделяются знаком точки с запятой.
Начало и конец раздела операторов обозначаются ключевыми словами begin и end. После слова end в конце текста программы всегда ставиться точка. Она означает, что программа закончена.
Команда вывода на экран — write(‘текст’) и writeln(‘текст’) отличаются положением курсора после выполнения команды. Команда write(‘текст’) оставляет курсор на той же строке, что и текст, а writeln переводит курсор на новую строку.
Компиляция выполняется клавишей F9. Для выполнения программы надо нажать Ctrl+9.
Проверь себя!
Одним из важнейших факторов, влияющих на способность программы к развитию, является ее понимаемость. Одним из существенных факторов понимаемости программы, в свою очередь, является информативность исходного текста. Если исходный текст не является хорошо читаемым, то есть написан без соблюдения определенного стиля и системы и представляет собой "мешанину" операторов и знаков препинания, то вносить изменения в него очень сложно даже автору. Такая программа, безусловно, не является информативной. Сложности модификации значительно возрастают по прошествии времени и при необходимости работать с чужой программой. Рассмотрим ряд требований и рекомендаций, позволяющих выработать хороший стиль оформления программ, повышающий ее информативность.
Содержание
Соглашения по идентификаторам
Подбор идентификаторов
Все идентификаторы должны выбираться из соображений читаемости и максимальной семантической нагрузки. Например:
Неудачными можно считать идентификаторы:
Идентификаторы рекомендуется подбирать из слов английского языка. Например:
Не очень удачными можно считать идентификаторы:
Написание идентификаторов
Зарезервированные слова языка Pascal писать только маленькими буквами. Например: type, var, const, procedure, function, begin, end, if, then, else, repeat, until, case, while, and, not, or, unit, uses, interface, implementation.
В любых идентификаторах каждое слово, входящее в идентификатор, писать, начиная с большой буквы, остальные буквы - маленькие. В этом смысле символ подчеркивания "_" между словами идентификатора можно считать излишним. Например:
Рекомендуется идентификаторы, состоящие из одной буквы, писать большой буквой, если они не являются счетчиками циклов. Например:
Соглашения по самодокументируемости программ
Комментарии
Комментарии в теле программы следует писать на русском языке и по существу так, чтобы программист, не участвовавший в разработке программы (но имеющий опыт работы на языке Pascal), мог без особого труда разобраться в логике программы, и, при необходимости, сопровождать данный программный продукт.
Рекомендуется комментарии программы писать внутри символов < и >, а (* и *) использовать при отладке программы как "заглушки" участков программного кода.
Спецификация подпрограммы
Для каждой пользовательской подпрограммы (процедуры или функции) должна быть описана в виде комментария спецификация, содержащая следующую информацию:
- назначение подпрограммы;
- описание семантики параметров-значений (параметров, передаваемых по значению), если она неочевидна;
- описание семантики параметров-переменных (параметров, передаваемых по ссылке), если она неочевидна.
- для функции: описание семантики возвращаемого значения, если она неочевидна.
Например: семантика параметров и возвращаемого значения очевидна
семантика параметров очевидна, семантика возвращаемого значения неочевидна
семантика параметров и возвращаемого значения неочевидна
Замечание: Если процедура (функция) реализует какой-либо вычислительный метод (например: нахождение площади фигуры методом трапеций, поиск минимума функции методом Ньютона и т.п.), рекомендуется в теле процедуры (функции) поместить комментарий с кратким описанием метода, либо ссылку на источник, где описан метод.
Спецификация программного файла или модуля
Программный файл или модуль (unit) должен начинаться со спецификации в виде комментария, содержащего следующую информацию:
- идентификация (имя) файла;
- фамилия и копирайт автора;
- дата написания файла;
- версия языка программирования и замечания по компиляции программы (модуля) в других версиях языка (если требуется);
- назначение программы (модуля);
Замечание: В программном файле после заголовка Program ; (в файле с пользовательским модулем - после заголовка unit ;) рекомендуется поместить комментарий с указаниями по запуску программы и работе с ней (указаниями по использованию модуля другими программистами) или ссылку на источник, который использован при составлении программы (модуля).
Соглашения по читаемости программ
Лесенка
Длина строк программного текста
Длина строк программы не должна превышать ширины экрана (80 символов).
Прочие рекомендации
Рекомендуется операнды бинарных операций (+, := и т.п.) отделять от знака операции одним пробелом " ". Например:
Рекомендуется при перечислении идентификаторов после запятой "," ставить один пробел " ". Например:
Рекомендуется всегда писать символ-разделитель операторов ";" (непосредственно после оператора). Например:
Рекомендуется после символа-спецификатора типа ":" ставить один пробел " ". Например:
Рекомендуется директивы компилятора писать большими буквами, а условные определения - так же, как идентификаторы (см. 1. Соглашения по идентификаторам). Например:
Программа на языке Паскаль состоит из заголовка программы и тела программы (блока), за которым следует точка — признак конца программы. В свою очередь, блок содержит разделы описаний и раздел операторов.
Раздел операторов имеется в любой программе и является основным. Предшествующие разделы носят характер описаний и не все обязательно присутствуют в каждой программе.
В некоторых диалектах языка Паскаль (Например: Delphi, FreePascal) в отличие от стандарта, возможно следующее:
- отсутствие заголовка программы;
- разделы const, type, var, label могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз.
Содержание
Раздел подключения модулей (uses)
Этот раздел состоит из зарезервированного слова uses и списка имен подключаемых стандартных и пользовательских библиотечных модулей.
Раздел описания меток (label)
Перед любым оператором языка Паскаль можно поставить метку, что позволяет выполнить прямой переход на этот оператор с помощью оператора перехода goto из любого места программы. Метка состоит из имени и следующего за ним двоеточия. Именем может служить идентификатор или цифра. Перед использованием метка должна быть описана. Раздел описания меток начинается зарезервированным словом label (метка), за которым следуют имена меток, разделенные запятыми. За последним именем ставится точка с запятой.
Если метка описана, но не используется в разделе операторов, то ошибки при этом не возникает, т.е. метки можно описывать и применять по мере расширения программы.
Раздел описания констант (const)
В разделе описания констант производится присваивание идентификаторам констант постоянных значений. Раздел начинается зарезервированным словом const, за которым следует ряд выражений, присваивающих идентификаторам постоянные числовые или строковые значения. Выражения присваивания отделяются друг от друга точкой с запятой.
Удачное с точки зрения мнемоники именование констант делает программу лучше читаемой и позволяет быстро вносить в нее изменения при изменении алгоритма.
Раздел описания типов данных (type)
Тип данных может быть либо описан непосредственно в разделе описания переменных, либо определяться идентификатором типа. Стандартные типы не требуют описания, в отличие от типов, определенных пользователем. Строго говоря, синтаксис языка Паскаль не требует обязательного определения идентификатора типа и в последнем случае, так как тип можно задать перечислением в разделе описания переменных. Выбор описания типа зависит, таким образом, только от программиста и специфики программы.
Раздел описания типов данных начинается зарезервированным словом type, за которым следуют одно или несколько определений типов, разделенных точкой с запятой.
каждое описание задает множество значений и связывает с этим множеством некоторое имя типа. Например, в данном описании тип LatLetter определяет множество букв латинского алфавита, Days - множество целых числе от 1 до 31, Matr - массив из 10 целых чисел.
Раздел описания переменных (var)
Каждая встречающаяся в программе переменная должна быть описана. Описание обязательно должно предшествовать использованию переменной. Раздел описания переменных начинается зарезервированным словом var (variable - переменная), затем через запятую перечисляются имена переменных и после двоеточия следуют их тип и точка с запятой.
В рассматриваемом примере программы три переменные A, B и Sum, которые могут принимать целочисленные значения, описаны следующим образом:
Раздел описания процедур и функций
В этом разделе размещаются тела подпрограмм. В языке Паскаль роль подпрограмм выполняют процедуры и функции.
Раздел операторов
В программе на языке Паскаль раздел операторов является основным, так как именно в нем с предварительно описанными переменными, константами, значениями функций выполняются действия, позволяющие получить результат, ради которого создавалась программа.
Раздел операторов начинается зарезервированным словом begin (начало), далее следуют операторы языка, отделенные друг от друга точкой с запятой. Завершает раздел зарезервированное слово end. (конец) с точкой.
Операторы выполняются строго последовательно, в том порядке, в котором они записаны в тексте программы в соответствии с синтаксисом и правилами пунктуации.
Обычно, изучение любого языка программирования начинается с программы Hello, world! Но мы с вами займемся этим чуть попозже, потому что сейчас я хочу рассказать вам о величинах и типах данных в Pascal.
Виды величин
Обычно, изучение любого языка программирования начинается с программы Hello, world! Но мы с вами займемся этим чуть попозже, потому что сейчас я хочу рассказать вам о величинах и типах данных в Pascal. Что такое величина? Величина — это отдельный информационный объект, хранящийся в памяти компьютера. Существуют две классификации величин. Мы рассмотрим каждую в отдельности.
Более подробно мы поговорим о них в последующих уроках.
В свою очередь числовой делится на два типа.
Привожу сразу обозначение этого типа в Паскаль
Символьные тоже делятся на два типа.
Вторая классификация величин.Константа — значение неизменно. Переменная — значение может меняться в течение работы программы. Переменные обозначаются символическими именами, которые называются идентификаторами. Как присвоить значение какой либо переменной? С помощью команды присваивания! Команда присваивания в Паскаль: < переменная >:=
Первая программа на Pascal
Структура программы в Паскаль
Заголовок
Объявление переменных и констант
Раздел операторов
Ввод и вывод в Паскаль
У вас, наверняка, возникает вопрос: «Как вводить значения переменных с клавиатуры?», а также: «Как вывести на экран полученный результат?». Для этого используются четыре специальных оператора:
Для ввода:
И для вывода:
«В чем разница между read и readln, write и writeln?»: снова озадачитесь вы. Ответ прост. Если добавляете «ln» (что расшифровывается, как Line), то курсор переносится на следующую строку.
Hello, World на Pascal
Теперь вы готовы написать первую программу.
Ну, тут все понятно. Чтобы разнообразить решение предлагаю решить несколько задачек этого типа.
Задача 1. Требуется запросить имя пользователя, а затем вывести «Привет, !» Для решения этой задачи нам потребуется строковой тип данных — string.
Задача 2. Требуется узнать сколько лет пользователю, а затем вывести «Вам лет». Очевидно, что для решения этой задачи нам потребуется целочисленный тип данных — Integer.
P.S. Давайте выделим две особенности Pascal:
- Паскаль НЕ чувствителен к регистру, то есть и program, и Program, и PrOgRaM для него ничем не отличаются. А потому с самого начала привыкайте писать в нижнем регистре, чтобы при переходе на другой язык программирования не испытывать никаких проблем с этим;
- Имя программы в Pascal не играет никакого значения, оно не несет в себе никаких полезных функций. Если хотите вы можете просто не писать ЕГО!
P.P.S. В мире наиболее популярны три операционные системы: Linux, Mac OS и Windows. А если у вас не Windows? Какой компилятор выбрать тогда? Об этом мы с вами поговорим в уроке номер N.
После компилирования программа закрывается как только выполнит задачу. Нужно чтобы она дождалась нажатия кнопки. Пробовал пару вариантов, но не работает. Подскажите, пожалуйста.
Если вы используете Turbo Pascal, то поставьте после program uses crt; и перед end. readkey;
program aaa;
uses crt;
var a: integer;
read(a);
writeln(a);
readkey;
end.
После надписи «begin» поставь «;»
После begin двоеточие не ставиться.
В объявлении константы есть ошибка: значение не надо присваивать, у константы оно просто равно
P.P.S. В мире наиболее популярны три операционные системы: Linux, Mac OS и Windows. А если у вас не Windows? Какой компилятор выбрать тогда? Об этом мы с вами поговорим в уроке номер N.
Так что же делать обладателям отличных от Windows ОС?
Вообще у вас есть три более-менее простых варианта:
Есть ещё Lazarus
есть wine, virtualbox, online pascalabc. чего надо еще?
Как открывать нужные скобки? Если я пишу Hello, world в скобках » » , то у меня вылезает ошибка.
WriteLn(‘Текст’) или Write(‘Текст’)
Внутри обычных скобок когда обозначаем текст (НЕ переменную) то ставим ‘ перед и после текста
Спасибо, я создал программу которая общается с пользователем, объединив эти две задачи.
Получилось вот так:
begin
var name: string;
write(‘Напиши своё имя: ‘);
read(name);
write(‘Молодец, ‘, name, ‘!’);
var years: integer;
writeln(‘Сколько тебе лет?’);
read(years);
write(», years, ‘, значит. А мне ещё и года нету(((‘);
writeln(‘Мне пора на компьютер твоего друга… Пока’);
end.
Что делать если установил ABC Pascal, а после запуска не хочет открываться и нормально работать?
А мне не понравилось, что программа не чувствительна к числам, которые заканчиваются на 1,2,3,4. Получилось немного громоздко, но как сократить пока не придумала)
program Your_age;
var a: integer;
begin
writeln(‘А сколько Вам лет?’);
readln(a);
if (a > 4) and (a 21) and (a mod 10 > 4) then
write(‘Значит, Вам ‘,a,’ лет!’);
if (a 1) and (a mod 10 20) and (a mod 10 > 1) and (a mod 10 < 5) then
write('Значит, Вам ',a,' года!');
if (a mod 10 = 1) and (a 11) then
write(‘Значит, Вам ‘,a,’ год!’)
end.
Подскажите, пожалуйста, возможно ли с помощью линейного алгоритма сделать так, что работала команда ввода read(surname)?
Использую PascalABCNET.
После написания такого кода программа не делает того, с чем прошу мне подсказать:
var
name,surname:string;
begin
writeln(‘Введите, пожалуйста, ваше имя: ‘);
readln(name);
writeln(‘Введите, пожалуйста, вашу фамилию: ‘);
readln(surname);
end.
А вы уверены в том, что она не делает?) У вас ведь нигде и вывода нет.
Вы правы, работает. Вчера ночью почему-то не работало. После перезагрузки компьютера заработало. Наверно, что-то не так пошло, потому что тот же самый код запускал. Хорошо, что работает. Думал, что я не понимаю чего-то.
Вспомнил. Дело не только в этом было. Суть в том, что не работал общий код, который был изначально. Именно это там не работало. Эти 2 ввода игнорировались. После вопроса, где нужно ввести 1 или 2 программа переходила на вопрос о возрасте.
var
name, surname: string;
a, age: integer;
writeln (‘Connection…’);
writeln(‘Доброго времени суток, пользователь программы!’);
writeln(‘Вы находитесь в программной среде высшего интеллектуального творчества человечества.’);
writeln(‘Просьба вести себя осторожно, дышать ровно, следовать инструкциям и быть готовым нести ответственность за принятие своих решений.’);
writeln(‘Вы готовы? 1 — Yes/2 — No’);
writeln(‘Введите число:’);
read(a);
case a of
1:writeln(‘Решение о вашем действии записано в информационное пространство Вселенной. Отмена действий невозможна.’);
0:write(‘Большие решения требуют серьёзной ответственности. Когда будете к этому готовы, можете в любой момент обратиться к программной среде.’);
else writeln(‘У вас только одно право на ошибку. Попробуйте ещё раз ввести 1 или 0.’);
end;
writeln(‘Введите, пожалуйста, ваше имя, чтобы программа вам рассказала о его значении: ‘);
read(name);
writeln(‘Введите, пожалуйста, вашу фамилию, чтобы программа вам рассказала о её значении: ‘);
readln(surname);
writeln(‘Сколько вам лет, ‘,name,’?’);
readln(age);
case age of
2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94,102..104,122..124:writeln(‘Вам ‘,age,’ года.’);
1,21,31,41,51,61,71,81,91,101,121:writeln(‘Вам ‘,age,’ год.’);
5..20,25..30,35..40,45..50,55..60,65..70,75..80,85..90,95..100,105..120,125,126:writeln(‘Вам ‘,age,’ лет.’);
else write(‘В настоящее время человечеством не доказано, что человек может столько лет жить на планете Земля.’);
end;
END.
Очень здорово, что программа запустилась. Но на будущее: когда вы просите помощи, лучше прикреплять полный код программы/подпрограммы. Иначе такая помощь выполняется почти вслепую.
writeln(‘Введите, пожалуйста, ваше имя, чтобы программа вам рассказала о его значении: ‘);
readln(name);
нужно писать не read, а readln
Урок 1. Почему Pascal?
Чем удобен Pascal? Чем неудобен? В данном уроке я постараюсь ответить на данный вопрос.
Урок 2. Что такое алгоритм?
На этом уроке мы поговорим об Алгоритме. Что такое алгоритм? Какие бывают виды алгоритмов, какие свойства имеют алгоритмы.
Урок 3. Первая программа в Pascal
В этом уроке мы с вами научимся писать простейшие программы на Паскаль. Узнаем, что такое типы и величины. Узнаем, какой компилятор выбрать.
Урок 4. Блок-схема
В этом уроке вы научитесь составлять простейшие блок-схемы. Блок-схема — основа алгоритма начинающего программиста.
Урок 5. Математические операции, функции и процедуры в Pascal (Часть первая)
В этом уроке мы с вами узнаем основные основные функции и процедуры в Паскаль, а также мы рассмотрим операции целочисленного деления.
Урок 7. Логика в Паскаль. Тип Boolean
Всем привет! Сегодня мы изучаем тип Boolean и все, что с ним связано. Немного теории, немного картинок — таблиц и пять задач — вот он, идеальный урок!
Урок 8. Блок-схема оператора if
В этом уроке мы поговорим об алгоритмах с ветвлением, а также научимся составлять блок-схемы оператора if для решения подобных задач.
Урок 9. Про компиляцию, интерпретацию и .EXE файл
Сегодня мы с вами поговорим про то, что такое компиляция и интерпретация. Также мы научимся создавать .EXE файл из исходных кодов ваших программ.
Урок 10. Немного про Case и goto
Урок 12. Циклы в Pascal: repeat, while, for
Циклы с параметром,предусловием и послесловием-о них мы говорим сегодня.Как обычно,сначала небольшой кусок теории,затем мы решим пару простеньких задачек .
Урок 13. Процедуры и функции в Pascal. Часть 2
Урок 14. Одномерные массивы. Работа с элементами
Сегодня мы с вами переходим на новый уровень и начинаем изучать одномерные массивы и взаимодействие с его элементами, а также мы решим пару задачек.
Читайте также: