Какой командой заканчивается программа в pascal
Перейти к содержимому

Какой командой заканчивается программа в pascal

  • автор:

Паскаль – Структуры программы

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

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

Программа Pascal в основном состоит из следующих частей –

  • Название программы
  • Использует команду
  • Объявления типа
  • Постоянные декларации
  • Объявления переменных
  • Объявления функций
  • Процедуры декларации
  • Основной программный блок
  • Заявления и выражения в каждом блоке
  • Комментарии

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

program name of the program> uses comma delimited names of libraries you use> const global constant declaration block> var global variable declaration block> function function declarations, if any>  local variables > begin . end; procedure  procedure declarations, if any>  local variables > begin . end; begin  main program block starts> . end.  the end of main program block >

Pascal Hello World Пример

Ниже приведен простой паскаль-код, который напечатал бы слова “Hello, World!” –

program HelloWorld; uses crt; (* Here the main program block starts *) begin writeln('Hello, World!'); readkey; end. 

Это даст следующий результат –

Hello, World!

Давайте посмотрим различные части вышеуказанной программы –

  • Первая строка программы программы HelloWorld; указывает на название программы.
  • Вторая строка программы использует crt; это команда препроцессора, которая говорит компилятору включить модуль crt перед тем, как перейти к фактической компиляции.
  • Следующие строки, заключенные в операторы начала и конца, являются основным программным блоком. Каждый блок в Паскале заключен в оператор начала и оператора конца . Однако за оператором завершения, указывающим конец основной программы, следует точка (.) Вместо точки с запятой (;).
  • Оператор начала основного блока программы – это место, где начинается выполнение программы.
  • Строки внутри (* … *) будут игнорироваться компилятором, и он был добавлен для добавления комментария в программу.
  • Заявление writeln («Привет, мир!»); использует функцию writeln, доступную в Pascal, которая вызывает сообщение «Hello, World!» быть отображенным на экране.
  • Оператор readkey; позволяет отображать паузу, пока пользователь не нажмет клавишу. Это часть КТО. Блок похож на библиотеку в Паскале.
  • Последнее утверждение заканчивается. заканчивает вашу программу

Первая строка программы программы HelloWorld; указывает на название программы.

Вторая строка программы использует crt; это команда препроцессора, которая говорит компилятору включить модуль crt перед тем, как перейти к фактической компиляции.

Следующие строки, заключенные в операторы начала и конца, являются основным программным блоком. Каждый блок в Паскале заключен в оператор начала и оператора конца . Однако за оператором завершения, указывающим конец основной программы, следует точка (.) Вместо точки с запятой (;).

Оператор начала основного блока программы – это место, где начинается выполнение программы.

Строки внутри (* … *) будут игнорироваться компилятором, и он был добавлен для добавления комментария в программу.

Заявление writeln («Привет, мир!»); использует функцию writeln, доступную в Pascal, которая вызывает сообщение «Hello, World!» быть отображенным на экране.

Оператор readkey; позволяет отображать паузу, пока пользователь не нажмет клавишу. Это часть КТО. Блок похож на библиотеку в Паскале.

Последнее утверждение заканчивается. заканчивает вашу программу

Компиляция и выполнение программы Pascal

  • Откройте текстовый редактор и добавьте вышеупомянутый код.
  • Сохраните файл как hello.pas
  • Откройте командную строку и перейдите в каталог, где вы сохранили файл.
  • Введите в командной строке fpc hello.pas и нажмите Enter, чтобы скомпилировать код.
  • Если в вашем коде нет ошибок, командная строка переместит вас на следующую строку и сгенерирует приветственный исполняемый файл и объектный файл hello.o .
  • Теперь введите hello в командной строке, чтобы выполнить вашу программу.
  • Вы сможете увидеть «Hello World», напечатанный на экране, и программа будет ждать, пока вы не нажмете любую клавишу.

Откройте текстовый редактор и добавьте вышеупомянутый код.

Сохраните файл как hello.pas

Откройте командную строку и перейдите в каталог, где вы сохранили файл.

Введите в командной строке fpc hello.pas и нажмите Enter, чтобы скомпилировать код.

Если в вашем коде нет ошибок, командная строка переместит вас на следующую строку и сгенерирует приветственный исполняемый файл и объектный файл hello.o .

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

Вы сможете увидеть «Hello World», напечатанный на экране, и программа будет ждать, пока вы не нажмете любую клавишу.

$ fpc hello.pas Free Pascal Compiler version 2.6.0 [2011/12/23] for x86_64 Copyright (c) 1993-2011 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling hello.pas Linking hello 8 lines compiled, 0.1 sec $ ./hello Hello, World!

Убедитесь, что в вашем пути есть бесплатный компилятор паскаля fpc и вы запускаете его в каталоге, содержащем исходный файл hello.pas.

Какой командой заканчивается программа в pascal

ЗНАКОМСТВО С ЯЗЫКОМ ПАСКАЛЬ

Программа на языке Паскаль близка по своему виду к описанию на алгоритмическом языке. Если сравнить алгоритм решения задачи рассматриваемой ранее с соответствующей программой на Паскале:

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

На алгоритмическом языке это будет выглядеть так:

На Паскале:

Структура программы на Паскале

Заголовок программы начинается со слова Program , за которым следует произвольное имя, придуманное программистом:

Имя программы, имена констант, переменных и других объектов программы называются ИДЕНТИФИКАТОРАМИ. Они записываются по правилам:

1. Имя должно лаконично отражать сущность объекта.

S,v,t — общепринятые обозначения;

Summa, N_max — значения суммы номера максимума.

2. Длина идентификатора не должна превышать 127 символов, но для Паскаля значимы только первые 63 знака.

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

4. Начинаться идентификатор должен с буквы или знака подчеркивания.

5. Маленькие и большие буквы в записи идентификаторов Паскаль не различает
.

Раздел описания переменных начинается со слова Var ( variables – переменные ), за которым идет список имен переменных через запятую. Тип указывается после двоеточия. В стандарте языка Паскаль существует два типа числовых величин: вещественный и целый .

Слово integer обозначает целый тип (является идентификатором целого типа). Вещественный тип обозначается словом real . Например, раздел описания переменных может быть таким:

var a, b: integer; c, d: real;

Идентификаторы переменных составляются из латинских букв и цифр; первым символом обязательно должна быть буква.

Раздел операторов – основная часть программы. Начало и конец раздела операторов программы отмечаются служебными словами begin (начало) и end (конец).

В самом конце программы ставится точка:

Операторы ввода, вывода и присваивания

Ввод исходных данных с клавиатуры происходит по оператору read или readln :

При выполнении команды ввода компьютер ожидает действий пользователя. Пользователь набирает на клавиатуре значения переменных в том порядке, в каком они указаны в списке, отделяя их друг от друга пробелами. Одновременно с набором данных на клавиатуре они появляются на экране. В конце нажимается клавиша (< ENTER >).

Разница в выполнении операторов readln и read состоит в том, что после выполнения ввода по оператору readln экранный курсор перемещается в начало новой строки, а по оператору read этого не происходит.

Вывод результатов происходит по оператору write или writeln :

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

Разница выполнения операторов writeln и write состоит в том, что после выполнения вывода по оператору writeln экранный курсор перемещается в начало новой строки, а по оператору write этого не происходит.

Арифметические выражения

Арифметический оператор присваивания на Паскале имеет следующий формат:

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

Некоторые формы записи арифметических операций:

Pascal: Занятие №3. Часть 3: Паскаль цикл for

Цикл со счетчиком или, как он еще называется — цикл с параметром в Паскале служит для организации повторений (итераций) с заранее известным их количеством, т.е. когда точно известно, сколько раз должны выполниться операторы тела цикла.

паскаль цикл for блок-схема

Блок-схема, соответствующая циклу For:

Ну или если на простом примере:

Пример: вывести пять раз слово «Привет!»

цикл for

Паскаль цикл For: синтаксис:

Прямое направление цикла (от меньшего значения к большему):

 for счетчик:=значение to конечное_значение do тело_цикла;

Обратное направление (от большего к меньшему):

 for счетчик:=значение downto конечное_значение do тело_цикла;

цикл for Паскаль

Решение на Паскале:

Оператор в теле конструкции может быть одиночным или составным оператором.

составной оператор в цикле for

Счетчик цикла или параметр цикла — это обычная переменная, которая может быть только порядкового (целочисленного, символьного, логического) или перечислимого типа.

При прямом направлении цикла счетчик в каждой итерации увеличивается на единицу, при обратном направлении — уменьшается на единицу.

Важно знать: счетчик (параметр цикла) нельзя изменять внутри тела цикла! Кроме того, нельзя менять его начальное и конечное значения.

PascalABC.NET :
for [var] i: integer := 1 to 5 do

for [var] i: integer := 1 to 5 do

for var i := 1 to 5 do

for var i := 1 to 5 do

Значение переменной цикла после завершения цикла будет не определено (локальная).

Рассмотрим на решенном примере, как используется в Паскаль цикл for:

Пример: Печатать «ноль» указанное количество раз

1 2 3 4 5 6 7
var i,n:integer; begin write ('количество раз'); readln(n); for i:=1 to n do write(0); end.

var i,n:integer; begin write (‘количество раз’); readln(n); for i:=1 to n do write(0); end.

1 2 3 4 5
begin var n:=readInteger('количество раз'); for var i:=1 to n do write(0); end.

begin var n:=readInteger(‘количество раз’); for var i:=1 to n do write(0); end.

Более детально цикл со счетчиком в Паскале рассмотрен в видеоуроке:
youTube

Пример: Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b). Реализовать двумя способами: 1. переменная цикла должна увеличиваться и 2. переменная цикла должна уменьшаться.

цикл с счетчиком

Решение в виде блок-схемы:

Решение на Паскале:

Вариант 1 Вариант 2
3 4

Задача 8. Найти среднее арифметическое чисел в Паскале, числа вводятся с клавиатуры, их количество произвольно. Использовать цикл for

[Название файла: L3task8.pas ]

Задача 9. Составить блок-схему по программе нахождения среднего арифметического в pascal.

[Название файла: L3task9.pas ]

Пример: Вывести на экран квадраты и кубы нечётных целых чисел от 1 до 9.

Решение:

Pascal: выход из цикла

Break и Continue

Для выхода из цикла предусмотрена процедура break в Паскале. Break досрочно прекращает выполнение циклов while , repeat и for .

Процедура Continue досрочно выходит из текущей итерации цикла, но, не завершая его, а переходя к следующей итерации.

Рассмотрим использование процедур выхода из цикла Continue и Break в Паскале (будем использовать цикл while ):

Пример: Программа вывода на экран степеней двойки с использованием процедур break и continue

1 2 3 4 5 6 7 8 9 10 11
var a:integer; begin a:=1; while a1000 do begin a:=a*2; if a=64 then continue; if a=256 then break; write(a:4); end; end.

В результате программы на экране будут напечатаны: 2 4 8 16 32 128.
Число 64 пропущено, так как при условии a=64 происходит выход из текущей итерации ( continue ) и число не выводится на экран, а при a=256 выполнение цикла прерывается окончательно ( break ), так и не распечатав число 256.

Задача 10. Решить рассмотренную задачу с процедурами break и continue для циклов repeat и for

[Название файла: L3task10.pas ]

Произвольный шаг в цикле for

Пример:

Выполнить: Выведите все двухзначные нечетные числа от 11 до 21.

Примерный результат:

11 13 15 17 19 21
  • Решение 1. С циклом loop

Задание 1 (step):
Выполнить: Выведите последовательность 3 5 7 9 … 21 (от 3 до 21 с шагом = 2). Выполнить дважды: с циклом loop и циклом for .

Фрагмент программы:

begin println('результат с циклом loop'); var . ; loop . ; . println('результат с циклом FOR'); for var . . end.

begin println(‘результат с циклом loop’); var . ; loop . ; . println(‘результат с циклом FOR’); for var . . end.

Задание 2 (step):
Выполнить: Вывести последовательность: 20 18 16 … 2 (от 20 до 2 с шагом = 2). Выполнить дважды: с циклом loop и циклом for .

Пример 3:
Выполнить: Вывести последовательность: 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0.

  • Решение 1. С циклом loop

Задание 3 (step):
Выполнить: Вывести последовательность 0.1 0.3 0.5 0.7 0.9 1.1. Выполнить дважды: с циклом loop и циклом for .

Примерный результат:

0.1 0.3 0.5 0.7 0.9 1.1

Табулирование функции на отрезке с заданным шагом

* Следует учесть, что эта тема не обязательна для школьного курса информатики, в основном предполагается ознакомление студентами.

Табулирование функции одной переменной

Пример: На отрезке [a,b] с шагом h протабулировать функцию f(x)=x 2 +Ln|x| и вывести на печать значения этой функции.

Алгоритм:
Для решения задачи в области определения функции вводится сетка – совокупность точек:

0, x1, x2, …, xi>, где x0 = а, x1= x0+h, …, xi = xi-1+h, xn = b.

Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить:

f(x0), f(x1), …, f(xi), f(xn)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
var x, a, b, f, h: real; begin writeln('отрезок от . и до . '); readln(a, b); writeln('шаг'); readln(h); x := a; while x = b do begin f := sqr(x) + ln(abs(x)); writeln('x= ', x, ' f= ', f); x := x + h; end end.

var x, a, b, f, h: real; begin writeln(‘отрезок от . и до . ‘); readln(a, b); writeln(‘шаг’); readln(h); x := a; while x

1 2 3 4 5 6 7 8 9 10 11 12
begin writeln('отрезок от . и до . '); var (a, b):=readReal2; var h:=readReal('шаг'); var x := a; while x = b do begin var f := sqr(x) + ln(abs(x)); writeln('x= ', x, ' f= ', f); x := x + h; end end.

Пример: Вычислить 7 значений функций

0.15x + a y= ----------- a2 + x2 

где начальное значение а=0.14х, шаг Δа=0.22

Результаты для x = 2:

a =0.28 y = 0.142212632404865 a =0.5 y = 0.188235294117647 a =0.72 y = 0.225743626062323 a =0.94 y = 0.253911049225981 a =1.16 y = 0.273121819814427 a =1.38 y = 0.284533568186437 a =1.6 y = 0.289634146341463
var x, a, y, h: real; i:integer; begin writeln('ведите x'); readln(x); h:=0.22; a := 0.14*x; for i:=1 to 7 do begin y := (0.15*x + a)/(sqr(a)+sqr(x)); writeln('a =', a, ' y = ', y); a := a + h; end end.

var x, a, y, h: real; i:integer; begin writeln(‘ведите x’); readln(x); h:=0.22; a := 0.14*x; for i:=1 to 7 do begin y := (0.15*x + a)/(sqr(a)+sqr(x)); writeln(‘a =’, a, ‘ y = ‘, y); a := a + h; end end.

Табулирование функции двух переменных

Пример: На интервале xn≤x≤xk с шагом Δх, для каждого у из интервала уn≤y≤yk с шагом Δу вычислить значение функции f=x 2 +ln|y| .
Например:

если xn = 2; xk = 3 уn = -1; yk = 1 шаг Δх = 1, шаг Δy = 0.5 то f1 = 22+ln|-1| = 4 f2 = 22+ln|-0.5|= 3.30685281944005 .
x= 2 y= -1 f= 4 x= 2 y= -0.5 f= 3.30685281944005 x= 2 y= 0 f= -∞ x= 2 y= 0.5 f= 3.30685281944005 x= 2 y= 1 f= 4 x= 3 y= -1 f= 9 x= 3 y= -0.5 f= 8.30685281944005 x= 3 y= 0 f= -∞ x= 3 y= 0.5 f= 8.30685281944005 x= 3 y= 1 f= 9
var xn, xk, yn, yk, f, hx, hy,x,y: real; begin writeln('отрезок для x от . и до . '); readln(xn, xk); writeln('отрезок для y от . и до . '); readln(yn, yk); writeln('шаг для x'); readln(hx); writeln('шаг для y'); readln(hy); x := xn; y := yn; while x = xk do begin while y = yk do begin f := sqr(x) + ln(abs(y)); writeln('x= ', x, ' y= ', y, ' f= ', f); y := y + hy; end; x := x + hx; y:=yn; end end.

var xn, xk, yn, yk, f, hx, hy,x,y: real; begin writeln(‘отрезок для x от . и до . ‘); readln(xn, xk); writeln(‘отрезок для y от . и до . ‘); readln(yn, yk); writeln(‘шаг для x’); readln(hx); writeln(‘шаг для y’); readln(hy); x := xn; y := yn; while x
Задача 11:
Вычислить значение функции:

z(x, у) = sin x + cos y

при всех х, изменяющихся на интервале [-1, 1] с шагом Δх = 0.2, и у, изменяющихся на интервале [0, 1] с шагом Δу = 0.1.
Результат:

x=-1.00 y=0.00 z=0.16 x=-1.00 y=0.10 z=0.15 x=-1.00 y=0.20 z=0.14 x=-1.00 y=0.30 z=0.11 x=-1.00 y=0.40 z=0.08 x=-1.00 y=0.50 z=0.04 x=-1.00 y=0.60 z=-0.02 x=-1.00 y=0.70 z=-0.08 x=-1.00 y=0.80 z=-0.14 x=-1.00 y=0.90 z=-0.22 x=-1.00 y=1.00 z=-0.30 x=-0.80 y=0.00 z=0.28 .

Дополните код в местах, где стоят троеточия:

var x, y, z: real; // описание переменных begin writeln('x y z(x,y)'); x := -1.0; y := . ; // начальное значение while (x = 1) do begin while (. ) do //запуск внутреннего цикла begin z := sin(x) + cos(y); write(' x=', x:3:2, ' y=', y:3:2, ' z=', z:3:2 ); y := y + . ; writeln(); end; writeln(); x := . ; // изменение параметра х на шаг y:= 0; end end.

[Название файла: L3task11.pas ]

Exit и Halt

Процедура Pascal Exit служит для завершения работы того программного блока, в котором она используется (условный оператор, цикл, процедура…). Если Exit вызывается внутри процедуры или функции, то завершается работа данной процедуры/функции. Если процедура Exit находится в основном блоке программы, то это приводит к ее завершению.

Процедура halt в pascal завершает работу программы.

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

Циклы в Паскале

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

У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину ( True , не ноль).

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

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

Блок-схемы циклов

Цикл for

Часто цикл for называют циклом со счетчиком. В Pascal этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. То есть количество повторений известно заранее.

В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет с шагом равным единице. Второе значение указывает, при каком значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между вторым и первым значением плюс единица. В Pascal тело цикла for не должно содержать выражений, изменяющих счетчик.

Цикл for существует в двух формах:

for счетчик := начало to конец do тело;

for счетчик := начало downto конец do тело;

Если между начальным и конечным значением счетчика указано ключевое слово to, то на каждом шаге цикла значение счетчика будет увеличиваться на единицу. Если же указано downto, то значение счетчика будет уменьшаться на единицу.

Счетчик — это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных.

Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, уже точно известно, сколько раз цикл выполнится.

var i, n: integer; begin write('Количество знаков: '); readln(n); for i := 1 to n do write('*'); writeln; end.

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

Количество знаков: 5 *****
Количество знаков: 13 *************

Цикл while

В Паскаль цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true , то тело цикла выполняется, если false – то нет.

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

var sum, n: integer; begin sum := 0; while sum < 100 do begin readln(n); sum := sum + n; end; writeln('Сумма: ', sum); end.

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

45 23 12 31 Сумма: 111
50 91 Сумма: 141

Цикл repeat

Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false . Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while , здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

var sum, n: integer; begin sum := 0; repeat readln(n); sum := sum + n; until sum > 100; writeln('Сумма: ', sum); end.
35 71 Сумма: 106

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

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