русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Основной блок функции


Дата добавления: 2013-12-23; просмотров: 1053; Нарушение авторских прав


Begin

End.

Основной блок программы

Begin

Var

Type

Const

Label

Uses

список используемых модулей;

список меток в основном блоке программы;

определение констант программы;

описание типов;

описание глобальных переменных программы;

[Определение процедур и функций;

 

Label,Const, Type могут быть введены при необходимости. Поэтому более короткий вид программы:

Begin

<операторы языка>

End.

 

1.Раздел `PROGRAM`- это внутреннее имя программы, как правило указывающее на ее сущность (не обязательное).

Пример: Program MGUPI_ti;

2.Раздел ‘USES’- этот раздел позволяет использовать стандартные библиотеки Паскаля. Перечислим несколько:

1) CRT – отвечает за работу с текстом, окна, цвета, звук, управление курсором.

2) GRAPH – осуществляет управление графическим режимом.

3) SYSTEM – реализует стандартные математические функции Паскаля(sin, sqrt и т.д.), этот модуль подключается по умолчанию.

Пример: Uses crt;

3.Раздел ‘LABEL’.

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

Пример:

Program TI;

Uses crt;

Label 10;

Begin

10:writeln(‘Зацикливание’);

Goto 10;

End.

4.Определение констант ‘CONST’- это идентификатор, соответствующий значению, которое не может изменяться в процессе работы программы.

Пример: Const h=0.15; N=15; A=’Для продолжения нажмите пробел’;

Обратите внимание на то, что определяемые константы относятся к различным типам: real, integer, string. Эти типы указывать не надо: ЭВМ сама растащит значения по типам.

Замечание. В Паскаль “вшита” лишь одна константа Pi равная 3.1415926….



5.Определение типов ‘TYPE’

Все, не относящиеся к “вшитым” стандартным типам, подлежит определению в разделе Type. Создаваемый тип может быть ПРОСТЫМ или СОСТАВНЫМ. По способу определения простые типы делятся на перечисляемые и диапазонные. При определение перечисляемого типа следует перечислить все возможные значения переменной:

Type

Personages=(TIti, PRpr, ICic);

Boolean2=(false, true, no_info);

Color=(Red, Green, Blue, Orange);

Для определения диапазонного типа указываются крайние значения переменной:

Type

Digits=0..9;

Century=1..20;

RusLetters=’A’..’Я’;

При определение составного типа в структуры определяются данные известных машине типов. Самые известные такие структуры – МАССИВ и ЗАПИСЬ (рассмотрим в дальнейших лекциях).

6.Описание переменных ‘VAR’- переменные, которые будут фигурировать в программе, должны быть описаны в разделе VAR. При описании указывается имя и ее тип. Пример:

Var

i: byte;q : real;c:char;

7. Begin {начало работы программы}

Основной блок программы {группа операторов, отделенных друг от друга точкой запятой}

End. {конец программы}

 

Оператор перехода GOTO <метки>

 

Обычно операторы в программе выполняются в том порядке, в каком они записаны. Оператор перехода прерывает естественный порядок выполнения программы и указывает, что дальнейшее выполнение должно продолжаться, начиная с оператора, помеченного меткой, указанной в операторе перехода. Пример записи оператора перехода: goto 218;

 

Оператор присваивания имеет следующую структуру:

 

ИМЯ_ПЕРЕМЕННОЙ:=АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ;

Оператор выполняется следующим образом:

1) В арифметическое выражение подставляются текущие значения переменных, хранящиеся в оперативной памяти ЭВМ.

2) Вычисляется значение арифметического выражения.

3) Результат записывается в ячейку, где хранится переменная, чье имя стоит в операторе слева. При этом прежнее значение этой переменной затирается.

Пример: x:=5; x:=x+2;

Количество операторов присваивания в одной строчке неограниченно.

Отметим:

1. Нельзя присваивать переменной значение не родственного типа (например, строковой переменной – целое значение; целой переменной – логическое и т. п.).

2. Нельзя присваивать переменной значение родственного типа, занимающее в памяти больший объем (например, символьной переменной – строковое значение; байтовой переменной – целое со знаком значение; целой переменной – вещественное значение и т. п.).

 

Стандарты ввода – вывода данных

 

Оператор печать, т.е. вывода на экран на Паскале имеет вид:

Write(список вывода); Writeln(список вывода);

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

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

Writeln(a,b,c);

Write(‘Вывести х ‘);Writeln(‘x’,x);

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

Пример: x=4.91E-0008 ( )

Для того чтобы в процессе вывода выдать вещественные данные в приемлемом виде, используют так называемый формат вывода с фиксированной точкой (F-форма):

Writeln(‘x= ‘,x:m:n);

Число m называют шириной поля, число n – точностью числа. Ширина поля – это число позиций, отводимых под запись всего числа. Точность – число позиций, отводимых на его десятичную часть.

Пример:

Writeln(‘Pi= ‘,Pi:7:4); На экране Pi=3.1416

Writeln(‘Pi= ‘,Pi:7:1); На экране Pi=3.1

Оператор ввода данных с клавиатуры выглядит следующим образом:

Read(список ввода); Readln(список ввода);

Здесь в списке ввода должны перечисляться имена вводимых переменных. Их можно вводить как списком, так и поодиночке:

Readln(x,y); = Readln(x); Readln(y);

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

 

Составной оператор

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

Begin

<оператор_1>;

<оператор_n>;

End;

 

Программирование линейных алгоритмов

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

Начало⤍ряд операторов⤍конец.

Пример:

Вычислить площадь параллелограмма. Значения а (основание) и h (высота) ввести с клавиатуры.

Program TI;

Uses crt; {стандартная библиотека}

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

a,h:real;

s:real; {площадь параллелограмма}

begin {начало работы программы}

clrscr; {ф-ция очистки экрана, в данном очистит не весь экран, а только заданное текстовое окно }

write(‘a=’);

readln(a);

write(‘h=’);

readln(h);

s:=a*h;

writeln(‘s=’,s:6:2,’кв.см’); {вывод на экран результата}

Repeat Until Keypressed; {стандартная функция из библиотеки CRT, приводит

к задержке окна результатов до нажатия любой клавиши}

End.

Лекция 6

Процедуры и функции. Условные структуры.

 

Функции Function

Рассмотрим раздел FUNCTION на примере вычисления значения функции:

 

Реализовать формулу перехода из градусов в радианы (так как тригонометрические функции понимают лишь аргумент в радианной мере (см. ниже Примечание)) несложно, но выписывать ее придется четыре раза. С этой целью имеет смысл один раз запрограммировать ее и четыре раза вызывать. Делается это с помощью организации функции в разделе FUNCTION:

 

Function Имя_функции (входные параметры): тип_результата;

Label внутренние метки функции;

Const определение локальных констант;

Type определение типов;

Var описание локальных переменных функции;

End;

 

Глобальные и локальные переменные, формальные и фактические переменные и параметры в функциях и процедурах в языке Pascal

Термин «ЛОКАЛЬНЫЙ» применимо к меткам, константам и переменным, описанным в разделе FUNCTION, означает, что эти метки, константы и переменные с этими именами могут фигурировать лишь в тексте основного блока функции. При этом следует давать имена локальным переменным, константам и даже – входным параметрам, отличающиеся от имен параметров, фигурирующих в основном блоке программы (так называемых ГЛОБАЛЬНЫХ параметров) во избежание путаницы.

Совпадение меток может привести к выдаче сообщения об ошибке «Duplicate Label Number», а локальная переменная «перекроет» свою глобальную напарницу, что очень трудно предугадать в процессе анализа программы. Приведенная структура в точности копирует в миниатюре структуру программы. Тогда текст функции перевода из градусов в радианы (назовем ее GradRad) будет выглядеть так:

 

Function GradRad(fi:real):real;

begin

GradRad:=fi*Pi/180;

end;

При описании и в тексте функции фигурирует не конкретное значение, а некоторый параметр ‘fi’, для которого и выписана формула. Такой параметр называется ФОРМАЛЬНЫМ. Потом, после вызова функции (например, GradRad(17)) в нее будет передано конкретное значение аргумента (17), для которого функция и будет вычислена. Такой параметр называют ФАКТИЧЕСКИМ.

Для перестраховки fi описан типом real, хотя в нашем примере значения целы. Зато именно такой текст функции годится для любой программы.

Примечание. Тригонометрические функции sin(x) и cos(x) обрабатывают аргумент, представленный в радианной, а не градусной мере. Поэтому выражение sin(30) соответствует синусу 30 радиан, а не 30 градусов и, следовательно, не равно 0.5. Аргумент может быть пересчитан из градусной меры в радианную по формуле

 

Соответственно значение функции ArcTan(x) получается в радианной мере, и для его пересчета в градусы используют формулу

 

 

 

Пример:Вычислить значение

 

Program Trigonometry;

Uses crt; {стандартная библиотека}

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

y: real;

Function GradRad(fi: real):real; {функция перевода угла из градусной меры в радианную}

Begin

GradRad:=fi*pi/180

End;

Begin

ClrScr;

y:=sin(GradRad(17))-cos(GradRad(82));

y:=y+sin(GradRad(28))/cos(GradRad(28));

Writeln(' y= ', y:6:2); {вывод на экран результата}

Repeat Until KeyPressed; {стандартная функция из библиотеки CRT, приводит

к задержке окна результатов до нажатия любой клавиши}

End.

 

Результат работы программы y=0.685.

 

Процедуры Procedure

 

Операции, схожие с функциями, именуемые процедурами, но лишенные конкретного числового значения. Разница состоит в том, что конечная цель процедуры – не получение, конкретного одного значения (будь то число, символ, строка, логическая величина), что соответствует функции, а выполнение некоторых операций. Поэтому при организации процедуры тип результата не указывается. Самыми простыми примерами таких операций могут являться распечатка массивов, упорядочивание набора чисел и т. д.

 

Примечание:

Процедура Назначение процедуры Аргумент Примеры
Inc(x) увеличение целого х на 1 Integer inc(d)
Inc(x,k) увеличение целого х на k Integer inc(x, -2)
Dec(x) уменьшение целого х на 1 Integer dec(i)
Dec(x,k) уменьшение целаго х на k Integer dec(j,6)
Randomize изменение программы генерации случайных чисел ______ ______

 

Пример:

Пусть необходимо поменять местами значения вводимых переменных х и у. Эта операция весьма распространена. Поэтому имеет смысл сделать ее стандартной, описав как процедуру. Назовем ее “Swap” (перестановка). Этой процедуре необходимо подавать значения двух переменных. При организации процедур важно помнить одно правило: если передаваемые в процедуру параметры будут в ней изменяться, их описание следует предварять словом Var. Тогда программа примет вид:

Program Change;

Uses CRT; {стандартная библиотека}

Var

x, y:Real;

Procedure Swap(Var aa, bb:real);

Var rr:Real;

Begin

rr:=aa; aa:=bb; bb:=rr

end;

Begin

Write(‘x= ‘); Readln(x);

Write(‘y= ‘); Readln(y);

Swap(x,y);

Writeln(‘x= ‘,x:4:1,’ y = ‘,y:4:1); {вывод на экран результата}

Repeat Until KeyPressed; {стандартная функция из библиотеки CRT, приводит

к задержке окна результатов до нажатия любой клавиши}

End.

Результат работы программы:

x=4

y=6

x= 6.0 y= 4.0

 

 

Условные операторы

Условные операторы позволяют проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условные операторы – это средство ветвления вычислительного процесса.

Следует отметить:

v выбор последовательности операторов осуществляется во время выполнения программы в зависимости от выполнения условия;

v условие – это выражение логического типа, которое может принимать одно из двух значений: true (истина-условие выполняется) или false (ложь-условие не выполняется);

v при помощи логических операций and (логическое «И») и or (логическое «ИЛИ») из простых условий можно строить сложные.

 

Оператор ‘IF-THEN’

Оператор IF-THEN (“Если-то”) форма записи имеет вид:

If (условие) Then Begin

Оператор;

Оператор;

...

End;

Работает следующим образом: Если стоящее в скобках условие истинно, то выполняются операторы, стоящие между Begin и End, а если ложно – программа сразу переходит на конец оператора.

Отличие оператора If-Then от оператора If-Then-Else состоит в том, что условная структура If-Then-Else реализует так называемое двойное ветвление.

 

Пример 1. Вычислить квадратный корень из числа x.

При вводе отрицательного значения x ЭВМ выведет сообщение об ошибке “Invalid Floating Point Operation”. Нужно составить программу, которая в случае отрицательного значения x выводила на экран сообщение: 'Недопустимое значение', в случае x>=0 выводила результат.

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

Write(‘x =’); Readln(x);

If (x>=0) Then

Begin

y:=Sqrt(x);

Writeln(‘Sqrt(x)=’,y:6:2);

End;

If (x<0) Then Write (‘Недопустимое значение’);

 

Любое условие есть величина логическая (типа Boolean), принимающая значение True в том случае, когда условие истинно, и False – в обратном случае. В силу этого обстоятельства условие

If (x<0) then Оператор;

являет собой сокращенную запись условия

 

If ((x<0)=True) then Оператор;

Более краткое If (x<0) then Оператор;

 

 

Оператор ‘IF-THEN-ELSE’

Оператор IF-THEN-ELSE (“Если-То-Иначе”) предусматривает двойное ветвление, форма записи имеет вид:

If (условие) Then

Begin

Оператор1;

End

Else

Begin

Оператор2;

End;

Поставленная после первого End точка с запятой ‘;’ (разделитель операторов) приведет к ошибке, тогда будет означать конец оператора. После ELSE точку с запятой не ставить.

Пример1.Найти максимум из двух целых чисел a и b, введенных с клавиатуры.

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

if (a>b) then max:=a else max:=b;

 

Тройное ветвление

Выбор идет из трех возможных вариантов.

 

Пример 1Ввести x и вычислить y:

 

 

Program TI_1;

Uses crt;

Var x,y:real;

Begin

Write(‘x=’); readln(x);

If x<-1 then y:=ln(abs(x)) else

If (x>=-1) and (x<0) then y:=sin(x) else y:=cos(x);

Writeln(‘x=’,x:5:2,’ y=’,y:5:2);

Readkey; {функция будет ожидать нажатия на любую клавишу}

End.

b<c
+
+
_
_
min:=c
_
+
min:=b
min:=a
a<c
a<b
Алгоритм поиска min и max и его программная реализация

Блок схема

 

 



<== предыдущая лекция | следующая лекция ==>
Арифметические вещественные | Пример 1.Найти min из трех вещественных чисел.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.012 сек.