Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Замечание. При большом количестве интервалов кусочно-однородной функции преимущество древовидного способа становится более значительным. Циклы


Else

Else

Else

Else

Else

Else

Else

Else

Else

End

Begin

Begin

Pascal

Begin

Else

Begin

Begin

Var

Begin

Var

. . .

Var

. . .

End

Begin

Implementation

Interface

[<Ключи компиляции> ]

[uses <Список используемых устройств (модулей)>;]

[<Разделы объявления глобальных переменных, констант, типов, классов>]

[<Раздел объявления заголовков глобальных процедур и функций>]

[<Ключи компиляции> ]

[uses <Список используемых устройств (модулей)>;]

[<Разделы объявления локальных переменных, констант, типов, классов>]

[<Раздел объявления локальных процедур и функций>]

[<Раздел исполнения>]


<Раздел исполнения> :: =

 

<Операторы>

<Раздел объявления переменных> :: =

 

var // Признак начала раздела объявления переменных

<Список имён 1>: <Тип 1>;

<Список имён 2>: <Тип 2>;

 


Примеры.

 

I, J, K: integer;

x, y, z: double;

c: char;

s5: string[5];

s255: string; // Равноценно s255: string[255]

 

 


Замечание. В языке «C++» объявление переменных имеет вид:

 

<Тип 1> <Список имён 1>;

<Тип 2> <Список имён 2>;

 

Примеры.

 

int I, J, K;

double x, y, z;

char c;


Пример программы, обменивающей значениями две числовые переменные

(среда программирования – Delphi или Lasarus)

 

На форме (Form1) размещаются два текстовых поля (Edit1, Edit2) и две кнопки (Button1, Button2).

 


proocedure TForm1.Button1Click(Sender: TObject);

a, b: double;

a := StrToFloat(Edit1.Text);

b := StrToFloat(Edit2.Text);

a := a - b; // a' =a – b

b := a + b; // b' = a' + b = a

a := b - a; // a'' = b' – a'= b

Edit1.Text := FloatToStr(a);

Edit2.Text := FloatToStr(b);

end;

 


procedureTForm1.Button2Click(Sender: TObject);

a, b, c: double;

ier: integer;

val(Edit1.Text, a, ier);

ifier <> 0 then

ShowMessage(‘Ошибка в Edit1’);

exit;

end;

 

val(Edit2.Text, b, ier);

ifier <> 0 then

ShowMessage (‘Ошибка в Edit2’)

 


c := a; a := b; b := c;

Edit1.Text := FloatToStr(a);

Edit2.Text := FloatToStr(b);

end;

end;

 


Button1:

Edit1: 1; Edit2: 7; Верно.

Edit1: 1e-20; Edit2: 7; Неверно.

 

Button2:

Всегда верно.

 


Обращение к параметрам программы,

запущенной из командной строки

 

Пример запуска программы с помощью командной строки:

<Путь к EXE-файлу>P2.exe 1 22 333 4444 55555



Кроме указания пути к исполняемому файлу, командная строка содержит список параметров запуска, которые могут быть распознаны и использованы программой. Разделитель элементов списка – пробел. Если пробел заменён группой из нескольких подряд идущих пробелов, эта группа воспринимается как один пробел.

 

 


 

Для нахождения числа параметров программы служит стандартная (для TP7, Delphi, Lazarus) функция ParamCount (это функция без параметров). Благодаря этой функции становится известно, сколько параметров имеется в командной строке. Для обращения к самим параметрам служит стандартная функция ParamStr. Например, ParamStr(i) возвращает строку, содержащую i-й параметр программы.

 

program P2;

uses crt,

var i: integer;

i:=ParamCount;

if i >= 4 then writeln('i=', i, '4-th Parameter=', ParamStr(4));

ReadKey;

end.


C++

 

Число параметров программы на единицу меньше, чем значение первого формального параметра функции _tmain. Второй параметр функции _tmain представляет собой массив строк, содержащих параметры программы. Например, argv[i] есть строка, содержащую i-й параметр программы. argv[0] есть строка с именем самого EXE-файла и путём к нему.

 

#include "stdafx.h"

#include "conio.h"

int i;

int _tmain(int argc, _TCHAR* argv[])

{

i=argc;

if (i !< 5) printf("i=%d 4-th Parameter=%ls", i, argv[4]);

_getch();

return 0;

}

<Операторы>

 

 

Замечание. В языке «C++» аналогичная конструкция называется БЛОК. В начале блока можно объявлять локальные переменные блока.

 

{

<Объявления>

<Операторы>

}

Условный оператор (развилка)

 

1. Упрощенная (сокращенная) развилка. <Л.В.> – логическое выражение.

 

 

В одну строчку:

if <Л.В.> then <Оператор>

 

В несколько строчек:

if <Л.В.> then

<Оператор>

Замечание. В языке «C++» аналогичная конструкция не использует служебное слово then. Скобки вокруг <Л.В.> – обязательны.

 

if (<Л.В.>) <Оператор>


2. Классическая развилка

 

 

В одну строчку:

 

if <Л.В.> then <Оператор1> else <Оператор2>

 

В несколько строчек:

if <Л.В.> then

<Оператор1>

<Оператор2>

 

Замечание. В языке «C++» в аналогичной конструкции требуется точка с запятой перед служебным словомelse.

 

if (<Л.В.>) <Оператор1>; else <Оператор2>

 


Замечание. В языке программирования «Mathematica» классическая развилка имеет не две, а три ветви: “Yes”, “No”, “I don’t know”:


3. Вложенная развилка

 

 

В одну строчку:

 

if <Л.В.1> then <Оператор1> else if <Л.В.2> then <Оператор2> else <Оператор3>

 

 

В несколько строчек:

 

if <Л.В.1> then

<Оператор1>

if <Л.В.2> then

<Оператор2>

<Оператор3>

 

 

Замечание. В языке «C++» в аналогичной конструкции требуется знак «точка с запятой» перед каждым служебным словомelse.

 

if (<Л.В.1>) <Оператор1>; else if (<Л.В.2>) <Оператор2>; else <Оператор3> )

 

Вложенные развилки могут быть построены и по более громоздким схемам. Сложность этих схем принципиально ничем не ограничена.

Пример. Организовать вычисление кусочно-однородной функции

 

pi – вероятность того, что переменная x попадёт в i-й интервал из четырёх предусмотренных. Оценка вероятности возможна из соотношения pini / n0 , где ni – наблюденное число случаев, когда вычисления требовались по i-й строчке, n0 – общее число случаев вычисления.

ti – время, необходимое для вычисления логического выражения (какого – ясно по цвету в схеме алгоритма и в программе)

 


Способ 1 (линейный).

Схема алгоритма

 


Программа

if x<-2 then

y := 4/x // t = t1

if x<1 then

y := x // t = t1 + t2

if x<5 then

y := sqr(x-1)// t = t1 + t2 + t3

y := 4// t = t1 + t2 + t3

 


Среднее время вычисления:

.

 

Математическое ожидание времени вычисления:

.

 

= > .


Способ 2 (древовидный).

Схема алгоритма

 

Программа

 

if x<1 then

if x<-2 then

y := 4/x // t = t1 + t2

y := x // t = t1 + t2

if x<5 then

y := sqr(x-1)// t = t2 + t3

y := 4// t = t2 + t3

 

Математическое ожидание времени вычисления:

 

 


Пусть , ().

 

Тогда , .

 

 

 

Цикл с параметром (1-й вариант)

 

for <Параметр> := <Начальн. знач.> to <Конечн. знач.> do <Оператор>

 

<Параметр> может быть только порядковой переменной.

<Начальн. знач.> и <Конечн. знач.> могут быть только выражениями порядкового типа.

Шаг изменения переменной <Параметр> равен (+1).

 

<Оператор> является телом цикла. Он выполняется столько раз, сколько значений примет <Параметр>, изменяясь от <Начальн. знач.> до <Конечн. знач.> с шагом (+1).

 

Если <Начальн. знач.> больше, чем <Конечн. знач.>, то тело цикла не выполняется ни разу.

 


Замечание. В языке «C++» аналогичная конструкция имеет вид:

for (<Параметр> = <Начальн. знач.>;

<Параметр> <= <Конечн. знач.>;

<Параметр>++ )

<Оператор>

 

<Параметр> может быть переменной «непорядкового» (в терминологии языка Pascal) типа. Например, может быть переменной типа Double.


Цикл с параметром (2-й вариант)

 

for <Параметр> := <Начальн. знач.> downto <Конечн. знач.> do <Оператор>

 

Шаг изменения переменной <Параметр> равен (1).

 

<Оператор> (тело цикла) выполняется столько раз, сколько значений примет <Параметр>, изменяясь от <Начальн. знач.> до <Конечн. знач.> с шагом (1).

 

Если <Начальн. знач.> меньше, чем <Конечн. знач.>, то тело цикла не выполняется ни разу.

 


Замечание. В языке «C++» аналогичная конструкция имеет вид:

for (<Параметр> = <Начальн. знач.>;

<Параметр> >= <Конечн. знач.>;

<Параметр>-- )

<Оператор>


Примеры

 

1. Вывести на экран заглавные буквы латинского алфавита

 

Free Pascal, TP7:

 

uses crt;

<== предыдущая лекция | следующая лекция ==>
 | Dim I As Integer, N As Integer

Дата добавления: 2014-01-04; Просмотров: 228; Нарушение авторских прав?


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



ПОИСК ПО САЙТУ:


Рекомендуемые страницы:

Читайте также:
studopedia.su - Студопедия (2013 - 2020) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление
Генерация страницы за: 0.025 сек.