Перейти к содержимому

С чего начинается любая программа

  • автор:

4. Структура программы на языке Паскаль

Screenshot_17.png

Программа состоит из трёх частей: заголовок программы, блок описания входных данных, программный блок (непосредственно сам алгоритм).

Программа начинается со служебного слова program и имени программы.

Имя программы может состоять из английских букв, цифр, нижнего подчёркивания. Например, zadacha_1 . Имя программы не может начинаться с цифры.

Далее необходимо описать все входные данные, которые будут использоваться в программе. После const указываются имена постоянных значений и сами значения, после var указываем имена переменных и их тип.

Начало. Тексты программ

Это — самая первая программа на любом языке программирования.

Вычисление площади круга

const Pi = 3.1415; begin var r := ReadReal('Введите радиус круга: '); var S := Pi*r*r; Println('Площадь круга равна ',S); end. 

Здесь иллюстрируется ввод, затем вычисления и вывод результата.

Вычисление A 8

Код на PascalABC.NET:

var a: real; begin var a := ReadReal('Введите a: '); var a2,a4,a8: real; // вспомогательные переменные var a2 := a * a; var a4 := a2 * a2; var a8 := a4 * a4; Println(a,$' в степени 8 = '); end. 

Здесь иллюстрируется использование промежуточных переменных и вычислений: без промежуточных вычислений мы бы потратили 7 умножений, а с промежуточными — всего 3.

Вычисление расстояния между двумя точками на прямой

Код на Pascal:

var a,b: real; // координаты точек r: real; // расстояние между точками на прямой begin write('Введите координату точки a: '); readln(a); write('Введите координату точки b: '); readln(b); r := abs(a-b); writeln('Расстояние между точками = ',r); end. 

Здесь иллюстрируется использование стандартной функции abs

Вычисление гипотенузы по катетам

var a,b: real; // катеты c: real; // гипотенуза begin write('Введите катеты прямоугольного треугольника: '); readln(a,b); c := sqrt(a*a+b*b); writeln('Гипотенуза = ',c); end. 

Здесь иллюстрируется использование стандартной функции sqrt

Бросание кубиков

var r1,r2: integer; // значения на верхних гранях кубиков begin r1 := Random(6)+1; r2 := Random(6)+1; writeln('Очки, выыпавшие на кубиках: ',r1,' ',r2); writeln('Сумма очков равна ',r1+r2); end. 

Здесь иллюстрируется использование стандартной функции Random

Обмен значений двух переменных с использованием третьей

var x,y: real; v: real; // вспомогательная переменная begin write('Введите x,y: '); readln(x,y); v := x; x := y; y := v; writeln('Новые значения x,y: ',x,' ',y); end. 

Это — классическая задача о перемене местами значений двух переменных с использованием третьей переменной. Она часто возникает в других задачах. Интересно, что x и y являются как входными, так и выходными переменными

Код на PascalABC.NET:

var x,y: real; begin write('Введите x,y: '); readln(x,y); var v: real; // вспомогательная переменная v := x; x := y; y := v; writeln('Новые значения x,y: ',x,' ',y); end. 

Данное решение использует внутриблочное описание переменной. В результате вспомогательная переменная описывается первый раз лишь в тот момент, в который она действительно понадобилась

Выделение цифр из двузначного числа

var x: integer; // двузначное число c1,c2: integer; // первая и вторая цифры двузначного числа begin write('Введите двузначное число: '); readln(x); c1 := x div 10; c2 := x mod 10; writeln('Первая и вторая цифры двузначного числа: ',c1,' ',c2); end. 

Ссылки

  • Программы для начинающих
  • Сайт PascalABC.NET: Программы и алгоритмы для начинающих

Основы языка программирования C++

Программа на С++ состоит из набора инструкций. Каждая инструкция (statement) выполняет определенное действие. В конце инструкции в языке C++ ставится точка с запятой (;). Данный знак указывает компилятору на завершение инструкции. Например:

std::cout 

Данная строка выводит на консоль строку "Hello world!", является инструкцией и поэтому завершается точкой с запятой.

Набор инструкций может представлять блок кода. Блок кода заключается в фигурные скобки, а инструкции помещаются между открывающей и закрывающей фигурными скобками:

В этом блоке кода две инструкции, которые выводят на консоль определенную строку.

Функция main

Каждая программа на языке С++ должна иметь как минимум одну функцию - функцию main() . Именно с этой функции начинается выполнение приложения. Ее имя main фиксировано и для всех программ на С++ всегда одинаково.

Функция также является блоком кода, поэтому ее тело обрамляется фигурными скобками, между которыми определяется набор инструкций.

В частности, при создании первой программы использовалась следующая функция main:

#include // подключаем заголовочный файл iostream int main() // определяем функцию main < // начало функции std::cout // конец функции

Определение функии main начинается с возвращаемого типа. Функция main в любом случае должна возвращать число. Поэтому ее определение начинается с ключевого слова int .

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

int main (int argc, char *argv[])

И после списка параметров идет блок кода, который и содержит в виде инструкций собственно те действия, выполняемые функцией main.

В конце функции идет инструкция return :

return 0;

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

Число 0 после оператора return указывает операционной системе, что выполнение функции завершилось успешно, без ошибок.

Также стоит отметить, что в функции main можно опустить инструкцию return 0; :

#include int main()

Директивы препроцессора

В примере выше на консоль выводится строка, но чтобы использовать вывод на консоль, необходимо в начале файла с исходным кодом подключать библиотеку iostream с помощью директивы include .

#include // подключаем библиотеку iostream

Директива include является директивой препроцессора. Каждая директива препроцессора размещается на одной строке. И в отличие от обычных инструкциий языка C++, которые завершаются точкой с запятой ; , признаком завершения препроцессорной директивы является перевод на новую строку. Кроме того, директива должна начинаться со знака решетки #. Непосредственно директива "include" определяет, какие файлы и библиотеки надо подключить в данном месте в код программы.

Комментарии

Исходный код может содержать комментарии. Комментарии позволяют понять смысл программы, что делают те или иные ее части. При компиляции комментарии игнорируются и не оказывают никакого влияние на работу приложения и на его размер.

В языке C++ есть два типа комментариев: однострочный и многострочный. Однострочный комментарий размещается на одной строке после двойного слеша //:

#include // подключаем библиотеку iostream int main() // определяем функцию main < // начало функции std::cout // конец функции

Многострочный комментарий заключается между символами /* текст комментария */ . Он может размещаться на нескольких строках. Например:

#include /* Определение функции Main Выводит на консоль строку Hello World! */ int main() < std::cout 

Компиляция

Создание исполняемого файла из исходного кода на C++ в общем случае состоит из трех этапов:

  1. Препроцессор обрабатывает все директивы препроцессора (например, директиву #include )
  2. Компилятор обрабатывает каждый файл с исходным кодом и создает из него объектный файл , который содержит машинный код. Например, код может разбросан по нескольким файлам с исходным кодом, и для каждого файла создается свой объектный файл
  3. Компоновщик (он же линкер/линковщик) объединяет все объектные файлы в единую программу. Данный процесс называется компоновкой/линковкой

Например, если у нас исходный код находится в трех файлах .cpp

Структура программы в Pascal

Любая программа, написанная на языке Pascal состоит из заголовка программы и некоторого блока. Блок содержит раздел описаний, в котором определяются все локальные по отношению к данной программе объекты, и раздел операторов. Он задает действия, которые необходимо выполнять, над этими объектами.

program имя программы; uses Label . . . ; Const . ; . ; Type = ; Var :; Function . ; Procedure . ; begin . ; . ; end.

Заголовок программы

В заголовке программе дается некоторое имя. Обычно стараются выбирать имя, отражающее основную функцию, выполняемую программой. Заголовок всегда начинается со служебного слова program , после которого через пробел пишется имя программы. Оно может состоять из символов английского алфавита, цифр и знака подчеркивания. Имя программы всегда должно начинаться с буквы.

В имени программы нельзя использовать какие-либо предописанные имена (зарезервированные слова). Они используются в программе только в том значении, которое зафиксировано для них разработчиками языка Pascal. Ниже приведен список таких слов.

and end nil set
array file not then
begin for of to
case function or type
const goto packed until
div if procedure var
do in program while
downto label record with
else mod repeat

Заголовок носит чисто информативный характер и никак не влияет на программу. Программу можно написать и не используя его. После имени программы в ранних редакциях языка указывались круглые скобки и в них давались имена входных и выходных файлов задачи. В последних версиях языка Pascal имена входных и выходных файлов в заголовке программы отсутствуют.

Пример правильного написания заголовка:

program Perimetr; program Phone37; program one_two_3;

Пример неправильного написания заголовка:

program 9zet; program Samara-63; program repeat;

Label - раздел описания меток

Любой оператор программы можно маркировать, поставив перед ним через двоеточие метку, тем самым появляется возможность ссылаться на эту метку при помощи оператора перехода goto . Однако такая метка, прежде чем она будет использована, должна быть описана в разделе описания меток. Этот раздел начинается со слова Label .

Имя метки может включать в себя буквы английского алфавита, цифры и знак подчеркивания. При этом, в отличии от имени программы метка может начинаться с цифры, да и вообще состоять только из цифр, но это число должно представлять собой целое число без знака, лежащее в диапазоне от 0 до 9999.

Пример правильного написания меток:

label 13, 00100, 99, qwerty, x_y;

Раз уж разговор зашел про метки, то нужно сказать, что использование меток и оператора перехода goto не желательно при написании программы на Pascal. Применять его стоит только в необычных, исключительных ситуациях, когда приходится нарушать естественную структуру алгоритма. Частое появление в программе на Pascal оператора перехода свидетельствует о том, что программист еще не научился думать на Pascal.
Этот раздел необязателен, если у вас в программе не используются метки.

Const - раздел определения констант

Константы - это величины, которые не меняют своих значений в процессе выполнения программы. Допустим, в вашей программе часто приходится оперировать с числом 3,14 (число Пи). Чтобы каждый раз не вводить это число, мы определяем константу с именем Pi и в вычисления уже подставляем ее.

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

Начинается данный раздел со служебного слова Const . Далее идут описания констант, каждое из которых начинается с имени константы, затем идет символ = (равенство), после чего пишется константа или выражение, составленное из констант. Завершается каждое описание точкой с запятой.

Const = ;

Константа может иметь только предопределенный (стандартный) тип данных. Тип присваивается константе по внешнему виду значения и в соответствии с этим типом отводится память для хранения значения константы.

В качестве расширения стандартного Паскаля разрешено использовать выражения, составленные из ранее определенных констант и некоторых стандартных функций: Abs, Chr, Hi, Length, Lo, Odd, Ord, Pred, Prt, Round, SizeOf, Succ, Swap, Trunc . Константные выражения вычисляются компилятором без выполнения программы на этапе ее создания. Пример:

const Avogadro = 6.023Е23; PageLength = 60; MyMove = True; stroka = 'abcdefg'; Min = 0; Max = 250; Centr = (Max-Min) div 2; Beta = Chr(225); NumChars = Ord('2') - Ord('A')+l;

Этот раздел также необязателен, если у вас в программе не используются константы.

Type - раздел описания типов

Помимо стандартных типов данных в Pascal (Real, Integer, Boolean, Char) пользователь может задать новые типы. Структура раздела описания типов имеет вид:

Type = ; = ; … = ;

Имя типа представляет собой идентификатор, который может употребляться в других типах, описанных вслед за данным типом. Вообще, новые типы можно определять и в разделе переменных Var, поэтому можно обойтись без этого раздела. Приведу несколько примеров описания типов:

Type Year = 1800.. 2015; Alfavit = ('А', 'B, 'C', 'T, 'L'); Matrica = array[1..12, 'А'.. 'Z'] of real;

Var - раздел описания переменных

Этот раздел является обязательным. Переменные отличаются от констант тем, что им можно присваивать новые значения при исполнении программы. Любая переменная, которая будет использована в программе должна быть описана. Что включает в себя описание переменной? Это значит, что переменной должен быть присвоен какой-либо тип данных, который характеризует множество значений, которые может принимать объект; множество операций, которые могут применяться к объекту; размер памяти, занимаемый объектом.

Начинается этот раздел с предописанного слова var . Следом идут описания переменных, каждое из которых начинается со списка имен переменных, разделяемых запятыми, затем идет символ : (двоеточие), затем указывается тип этих переменных. Завершается каждое описание точкой с запятой.

Структура раздела имеет вид:

Тип переменных представляет собой имя (идентификатор), описанный в разделе TYPE при явном описании типа, или собственно описание типа в случае его неявного задания. Примеры описания переменных:

Var Year: 1800.. 2000; А, В, C: Real; Istina: Boolean; Stroka: Char; I, J, К: Integer;

Function, Procedure - раздел описаний процедур и функций

В разделе Function и Procedure описываются пользовательские процедуры и функции, если таковые имеются. Если их нет, то этот раздел не обязателен в программе.

Процедура представляет собою подпрограмму и активируется (начинает выполняться) через оператор процедуры. Функция - это тоже подпрограмма, но она выдает некоторое значение - результат и поэтому используется, как компонента выражения.

Структура раздела имеет вид:

Procedure ();   Begin End; Function (): ; < заголовок >  Begin End;

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

© program4you.ru 2015 - 2022
Копирование материалов сайта разрешено только при наличии активной ссылки на данный сайт

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *