Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Выражения паскаль. основные операции, их приоритет.



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

Операции:

· Арифметические ( + - * / div mod)

· Логические — над данными логического типа (not or and xor )

· Операции сравнения ( = < > < > < = > = )

· Порядок операций:

1. not

2. * / div mod and

3. + - or xor

4. > < = > = < = < >

Операции одного приоритета выполняются слева направо. Для изменения порядка выполнения используют круглые скобки.

 

33. операторы паскаль, составной оператор, операторные скобки, опер-р присваивания значений, примеры

Операторы языка Pascal.

В паскале есть понятие составного оператора. Составной оператор — последовательность любых операторов паскаля, заключенных в операторные скобки Begin <...> End;

Составной оператор условно рассматривается как отдельный оператор и поэтому может включаться в состав других операторов паскаля.

Один составной оператор может быть вложен в другой. Уровней вложения — сколько угодно.

Самый распространенный — оператор присваивания значений. Используется для задания значения переменной в тексте программы.

< Имя переменной>: =< вырражение>;

x: =a+b;

Вычисляется значение выражения и полученное значение заносится в ячейку памяти, связанную с переменной. Обязательное требование — должны совпадать типы выражения. Единственное исключение — integer → real. Остальные преобразования типов должны указываться явно с помощью стандартных функций паскаля.

X: =round(y);

X: =trunc(y);

X: =orb(y);

X: =chr(y);

 

Ввод/вывод данных паскаль. Использ-е стандартных процедур ввода/вывода. Примеры использ-я

Ввод данных

Для ввода исходных данных чаще всего используется процедура ReadLn:

ReadLn(A1, A2,...AK);

Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.

Вывод данных

Для вывода результатов работы программы на экран используются процедуры:

Write(A1, A2,...AK); WriteLn(A1, A2,...AK);

Первый из этих операторов производит вывод значений переменных А1, А2,..., АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.

 

35.условный оператор паскаль, ветвление программы, примеры

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

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

If < условие> then < оператор 1> else < оператор 2>

Вычисляется условие. Если значение условия — истина, то выполняется оператор 1, оператор 2 пропускается. И наоборот.

Может использоваться составная конструкция.

Некоторые условные операторы могут использоваться в сокращенной форме(без else).

Если используется несколько вложенных условных операторов, причем часть из них в сокращенной форме. Может возникнуть неоднозначность использования программы. Поэтому существует правило: else относится к ближайшему слева оператору if.

 

Program prim21;

var a, x, y: real;

begin

write(‘Введите а=’); readln(a);

x: =sqrt(1+sqr(ln(a)));

if x< 0 then

y: =(cos(x*sin(x)))/(1+x*x) else

if x> 2 then y: =ln(1+x) else

y: =(1+x*x)*cos(x);

writeln( ‘ a=’, a: 6: 3, ‘x=’, x: 6: 3, ‘y=’, y: 6: 3, );

end.

 

36.оператор выбора паскаль. Пример
Если необходимо при различных значениях одной и той же переменной выполнять различные действия, в этом случае применяют оператор выбора
Синтаксис:
Case < имя переменной> of
< вариант 1> < оператор 1>;
……
< вариант z>: < оператор z>;
Else < оператор>;
End;

пример на фото

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

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

Для этих целей используют оператор безусловного перехода.

goto < метка>;

Метка — либо число, либо произвольный идентификатор. Меткой можно пометить любой оператор программы. < метка>: < оператор>;

Оператор безусловного перехода.

 

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

 

Форма записи оператора.

 

GOTO < метка>

 

Он указывает, что дальнейшая работа программы должна продолжатся с оператора, на котором стоит < метка>. Оператор, на который происходит переход, должен быть помечен меткой. Эта же метка должна быть указана в операторе GOTO, и описана в разделе описания меток.

 

Описание меток.

 

Метки используемые в TP, могут быть двух типов: - целым числом в диапазоне от 0 до 9999; - обычным идентификатором.

 

Все перечисленные метки должны быть перечислены в разделе объявления меток, начинающимся зарезервированным словом label, например: label 1, 2, Metka;

 

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

1: Write('Привет ');

 

П р и м е р 1.

Найти частное от деления целых чисел.

 

PROGRAM Ex_1;

 

Label

Out; {описание метки}

 

Var {описание переменных}

X, Y, Res: Integer;

 

Begin

 

Write('Введите делимое: '); {вывод сообщения на экран}

Readln(X); {ввод числа}

Write('Введите делитель: ');

Redln(Y);

if Y = 0 then {ветвление}

begin {составной оператор}

Writeln('деление на ноль');

GOTO Out; {использование GOTO}

end;

Res: = X div Y;

Write('Частное = ', Res);

 

Out: {метка на " пустой" оператор}

End.

38.счетные оператора цикла, примеры использования

Счетный оператор цикла
for < счетчик>: =< начальное значение> to < конечное значение> do < оператор>;
счетчик — переменная целого типа, которая специально используется для организации арифметического цикла. Изменяется от начального значения до конечного с шагом +1. Начальное и конечное значения — произвольные выражения целого типа.

пример в фото

 

39. оператор цикла с предпроверкой условия, примеры

Цикл с предусловием.
While < условие> do < оператор>;

 

40.оператор цикла с постпроверкой, примеры

Цикл с постусловием.
Repeat < тело цикла> until < условие>;
Тело цикла — последовательность операторов.

 

Подпрограммы как основной элемент создания программ, метод нисходящего проектирования

ПОДПРОГРАММА поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы

Подпрограммы изначально появились как средство оптимизации программ по объёму занимаемой памяти — они позволили не повторять в программе идентичные блоки кода, а описывать их однократно и вызывать по мере необходимости

НИСХОДЯЩЕЕ ПРОГРАММИРОВАНИЕ. Способ разработки программ, при котором программирование ведется методом " сверху вниз", от общего к деталям. Алгоритм решения задачи разбивается на несколько более простых частей или подзадач.

 

Процедуры и функции. Правила записи в программе. Примеры.

Относительно самостоятельные фрагменты проги, особым способом оформленные и снабженные именем.

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

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

Процедуры и функции

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

В неких языках программирования (к примеру, Бейсик, Фортран) такие автономные описания частей метода именуют подпрограммами. Тут этот термин, стало быть, будет употребляться для общего обозначения процедур и функций.

Описание подпрограммы состоит из заголовка и блока. Заголовок процедуры имеет вид:

 

Procedure < имя > (< список формальных параметров > );

 

Заголовок функции:

 

Function < имя > (< список формальных параметров > ): < тип >;

 

Перечень формальных характеристик необязателен и может отсутствовать. Ежели же он есть, то в нем должны быть перечислены, мягко говоря, имена формальных характеристик и их тип. Несколько однотипных характеристик можно объединять в подсписки, к примеру:

Procedure SB( a: Real; b, d: Integer; c: Char);

Операторы подпрограммы как раз разглядывают перечень формальных характеристик как типичное расширение раздела описаний: все переменные из этого перечня могут употребляться снутри подпрограммы.

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

- в виде функции, вообщем то, описывается метод, результатом выполнения которого является скалярная величина;

- в блоке функции должен быть хотя бы один оператор присваивания с именованием функции в левой части;

- в заголовке функции должен быть указан тип функции (тип возвращаемого через имя функции результата).

Хоть какой из формальных характеристик подпрограммы быть может или параметром-значением, или параметром-переменной.

В прошлом примере характеристики были определены как параметры-значения. Ежели характеристики определяются как параметры-переменные, перед ними нужно ставить зарезервированное слово Var, к примеру:

Procedure FF( Var a: Real);

Если формальный параметр объявлен как параметр-переменная, то при обращении к подпрограмме ему должен соответствовать фактический параметр в виде переменной нужного типа; если формальный параметр объявлен как параметр-значение, то при обращении ему может соответствовать выражение.

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

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

Поэтому параметры-переменные могут использоваться как " средство связи" алгоритма, реализованного в подпрограмме, с " внешним миром”, в частности, с помощью этих параметров процедура передает результаты своей работы вызывающей программе.

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

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

Концепция глобальных и локальных имен относится не только к переменным но и к другим описываемым объектам Паскаля: константам, типам, процедурам и функциям.

Program Calc;

Var n, m: Integer; f: Real;

Function fact(n: Integer): Integer;

Var i, p: Integer;

Begin p: =1;

For i: =2 To n do p: = p* i;

fact: = p

End;

Begin

Read(m, n);

f: = fact(n) * fact(m) / fact(n+m);

Writeln(f)

End.

43. процедуры, правила обращения к процедурам, передача данных в процедуру и обратно. Отличие функции от процедуры, примеры.

Procedure< имя>

(< список формальных параметров> )

< раздел описаний процедуры>

Begin

< раздел исполняемых операторов>

End;

Список форм параметров – перечень ч/з запятую имен переменных.

Второе их назначение – передача и обмен значениями с взывающей прогой. В разделе описаний объявляются все имена(помимо формальных), которые удут использованы в исполняемой части процедуры. Это локальные имена, к-е д-ют только внутри подпроги.

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

 

П Р О Ц Е Д У Р Ы И Ф У Н К Ц И И

 

Алгоритм решения задачи проектируется путем декомпозиции всей за-

дачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подп-

рограмм.

Подпрограмма - это последовательность операторов, которые опреде-

лены и записаны только в одном месте программы, однако их можно

вызвать для выполнения из одной или нескольких точек программы. Каж-

дая подпрограмма определяется уникальным именем. В языке ПАСКАЛЬ су-

ществуют два типа подпрограмм - процедуры и функции.

Процедура и функция - это именованная последовательность описаний

и операторов. При использовании процедур или функций ПАСКАЛЬ - прог-

рамма должна содержать текст процедуры или функции и обращение к про-

цедуре или функции. Тексты процедур и функций помещаются в раздел

описаний процедур и функций.

{}

Процедура может содержать такие - же разделы описаний, что и ПАС-

КАЛЬ - программа, а именно: разделы описания модулей, меток, конс-

тант, типов, переменных, процедур и функций.

{}

ПЕРЕДАЧА ИМЕН ПРОЦЕДУР И ФУНКЦИЙ В КАЧЕСТВЕ ПАРАМЕТРОВ. Во многих

задачах, особенно в задачах вычислительной математики, необходимо пе-

редавать имена процедур и функций в качестве параметров. Для этого в

TURBO PASCAL введен новый тип данных - процедурный или функциональ-

ный, в зависимости от того, что описывается.

Описание процедурных и функциональных типов производится в разделе

описания типов:

type

FuncType = Function(z: Real): Real;

ProcType = Procedure (a, b: Real; var x, y: Real);

 

Функциональный и процедурный тип определяется как заголовок проце-

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

определить функциональный или процедурный тип без параметров, напри-

мер:

type

Proc = Procedure;

 

После объявления процедурного или функционального типа его можно

использовать для описания формальных параметров - имен процедур и

функций.

Кроме того, необходимо написать те реальные процедуры или функции,

имена которых будут передаваться как фактические параметры. Эти про-

цедуры и функции должны компилироваться в режиме дальней адресации с

ключом {$F+}.

Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

var x, y, m, n: integer;

 

procedure MaxNumber(a, b: integer; var max: integer);

begin

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

end;

 

begin

write('Введите x, y ');

readln(x, y);

MaxNumber(x, y, m);

MaxNumber(2, x+y, n);

writeln('m=', m, 'n=', n);

end.

56. Численное интегрирование двойных интегралов. Метод ячеек.

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

Метод ячеек.

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

I= f(x, y)dxdy; D: a=< x=< b; c=< y=< d

 

Геометрически задача сводится к вычислению объема криволинейного параллелепипеда.

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

Для снижения погрешности криволин.паралел-пипед разбиваем на множество более мелких.Вычисляем элементарные объемы и складываем.

Область интегр-я D разбивается на ячейки, соответственно исходный объем также разбивается n на m элементарных объемов.

hy=(d-c)/m; hx=(b-a)/n; S=hx*hy – площадь ячейки; xi=a+i*hx; yi =c+j*hy

Для вычисления элементарного объема, Sячейки умножают на значение подинтегральной ф-ции в центре ячеек xi=(xi+xi-1)/2; yi=(yi+yi-1)/2

суммируя элементарные объемы получают приближенное значеиние 2ого интегрла. Формула ячеек -

f(x, y)dxdy = V=hxhynmf(xi, yi);

57. Метод последовательного интегрирования.

Пусть для 2го интеграла область интегрирования D ограничена непрерывными кривыми: y=φ (x), y=ψ (x) и прямыми x=a, x=b;

= dx f(x, y)dy; Пусть F(x)= f(x, y)dy; I= F(x)dx.

 

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

Применим формулу трапеций: I=hx[F(a)+F(b)/2+∑ n-1F(xi)] (1), где F(xi)-площади сечений исх.фигуры. эти площади вычислим используя формулу прямоуг.трапеций. для вычисления каждое сечение(в проекции хорду)разбиваем вдоль оси Оy с шаг hy; F(xi)= f(x, y)dy = hy[f(x, y)+f(x, d)/2+∑ j n f(xi, yi)] (2)

Порядок расчета. Отрезок [a, b] разбивают с шагом h, в каждой точке xi, вычисляют значения с=φ (xi); d =ψ (xi) – хорду [c, d] разбивают с шагом hy.

Используя ф-лу (2) вычисл площади сечения F[xi, j=0, …n] по формуле (1) вычмсл значение 2го интеграла.

58. Обработка числовых данных.

Получение количественных результатов научных и технических задач приводят к необходимости обработки числовой информации. Данные часто предоставляются в табличной форме. Эти данные отражают функциональную зависимость одной величины от другой. В задаче аппроксимации требуется найти формулу выражающую функциональную зависимость аналитически. Сущ.2 основных подхода к решению данной задачи.1). состоит в построении интерполяционного многочлена, значения которого точно совпадают с табличными.Это достигается методами интерполяции(получ-я промежут значения). Геометрически требуется чтобы интерполирующая кривая y=Pn(x) проходила строго через все табличные точки. Однако совпадения значений в точках не означает совпадения характеров табличной и интерполирующей функций, так как данные экспериментальные – имеют свои погрешности измерения. Поэтому методы интерполяции принимают в узкой области вычисления промежуточных значений ф-ции.(метод интерполяции по Лагранжу, метод разделенных разностей) 2).Табличные данные аппроксимируют достаточно простой функцией применимой во всем диапазоне табличных данных, не обязательно проходящей через все точки. Такой подход называется подгонкой кривой, кот-ю стремятся провести так, чтобы ее отклонения от табл точек были min.Обычно стремятся свести к мин сумму квадратов разностей м/у значениями, вычисленными по кривой и таблицей.+простота – большая погрешность.(Метод наименьших квадратов.)

 

Интерполяция по Лагранжу.

Пусть зависимость y(x) задается n+1 табличным значением (xi, yi). Интерполяционный многочлен для этого метода имеет вид Pn(x)=y0b0(x)+…+ynbn(x), где bj(x)многочлены степени n, коэф-ты кот можно найти с помощью n+1 уравнений. Pn(xi)=yi, i=0, 1, 2…n, В результате получим систему ур-ний y0b0(xn)+…+ynbn(xn)=yn, причем bj(xi)= 1, i=j; 0, i/=j,

Тогда, в общем случае bj(xi)=Сj(x-x0)(x-x1)…(x-xn); так как bj(xi)= 1, то коэф С определяется выраж. С=1/(xj-x0)…(xj-xn); В результате для интерпоняционного многочелена получаем. Pn(x)=∑ yj*(x-x0)(x-x1)…(x-xn)/(xj-x0)(xj-x1)…(xj-xn)

Введя обозначения Lj(x)=(x-x0)(x-x1)…(x-xn); запишем многочлен в более компактном виде Pn(x)=∑ yj* Lj(x)/Lj(xj) – общая формула Лагранжа. «-» нельзя контролировать точность вычисления, выборка должна быть симметричной. + простота.

 


Поделиться:



Последнее изменение этой страницы: 2017-03-14; Просмотров: 1737; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.081 с.)
Главная | Случайная страница | Обратная связь