«программирование»





Название«программирование»
страница7/11
Дата публикации08.03.2015
Размер1.89 Mb.
ТипУчебно-методический комплекс
100-bal.ru > Информатика > Учебно-методический комплекс
1   2   3   4   5   6   7   8   9   10   11

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

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

Если для обработки таких данных не использовать внешнюю память (файлы), то разумно расположить их в динамической памяти. Во-первых, динамическая память позволяет хранить больший объем информации, чем статическая. А во-вторых, в динамической памяти эти числа можно организовать в связанный список, который не требует предварительного указания количества чисел, подобно массиву. Что же такое "связанный список"? Схематически он выглядит так:

Здесь Inf — информационная часть звена списка (величина любого простого или структурированного типа, кроме файлового), Next — указатель на следующее звено списка; First — указатель на заглавное звено списка.

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

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

Type U = ^Zveno;

Zveno = Record Inf : BT; Next: U End;

Здесь BT — некоторый базовый тип элементов списка.

Если указатель ссылается только на следующее звено списка (как показано на рисунке и в объявленной выше структуре), то такой список называют однонаправленным, если на следующее и предыдущее звенья — двунаправленным списком. Если указатель в последнем звене установлен не в Nil, а ссылается на заглавное звено списка, то такой список называется кольцевым. Кольцевыми могут быть и однонаправленные, и двунаправленные списки.

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

Выделим типовые операции над списками:

добавление звена в начало списка;

удаление звена из начала списка;

добавление звена в произвольное место списка, отличное от начала (например, после звена, указатель на которое задан);

удаление звена из произвольного места списка, отличного от начала (например, после звена, указатель на которое задан);

проверка, пуст ли список;

очистка списка;

печать списка.
Реализуем выделенный набор операций в виде модуля. Подключив этот модуль, можно решить большинство типовых задач на обработку списка. Пусть список объявлен так, как было описано выше. Первые четыре действия сначала реализуем отдельно, снабдив их иллюстрациями.
1. Добавление звена в начало списка {Процедура добавления звена в начало списка; в x содержится добавляемая информация}

Procedure V_Nachalo(Var First : U; X : BT);

Var Vsp : U;

Begin

New(Vsp);

Vsp^.Inf := X;

Vsp^.Next := First; {То звено, что было заглавным, становится вторым по счёту}

First := Vsp; {Новое звено становится заглавным}

End;

2. Удаление звена из начала списка {Процедура удаления звена из начала списка;

в x содержится информация из удалённого звена}

Procedure Iz_Nachala(Var First : U; Var X : BT);

Var Vsp : U;

Begin

Vsp := First; {Забираем ссылку на текущее заглавное звено}

First := First^.Next; {То звено, что было вторым по счёту, становится заглавным}

X := Vsp^.Inf; {Забираем информацию из удаляемого звена}

Dispose(Vsp); {Уничтожаем звено}

End;

3. Добавление звена в произвольное место списка, отличное от начала (после звена, указатель на которое задан) {Процедура добавления звена в список после звена,

на которое ссылается указатель Pred;

в x содержится информация для добавления}

Procedure V_Spisok(Pred : U; X : BT);

Var Vsp : U;

Begin

New(Vsp); {Создаем пустое звено}

Vsp^.Inf := X; {Заносим информацию}

Vsp^.Next := Pred^.Next; {Теперь это звено ссылается на то,

что было следом за звеном Pred}

Pred^.Next := Vsp; {Теперь новое звено встало вслед за звеном Pred}

End;

4. Удаление звена из произвольного места списка, отличного от начала (после звена, указатель на которое задан) {Процедура удаления звена из списка после звена,

на которое ссылается указатель Pred;

в x содержится информация из удалённого звена}

Procedure Iz_Spiska(Pred : U; Var X : BT);

Var Vsp : U;

Begin

Vsp := Pred^.Next; {Забираем ссылку на удаляемое звено}

{Удаляем звено из списка, перенаправив ссылку на следующее

за ним звено}

Pred^.Next := Pred^.Next^.Next;

X := Vsp^.Inf; {Забираем информацию из удаляемого звена}

Dispose(Vsp); {Уничтожаем звено}

End;

Приведём полный текст модуля.{Язык Pascal}

Unit Spisok;
Interface

Type BT = LongInt;

U = ^Zveno;

Zveno = Record Inf : BT; Next: U End;

Procedure V_Nachalo(Var First : U; X : BT);

Procedure Iz_Nachala(Var First : U; Var X : BT);

Procedure V_Spisok(Pred : U; X : BT);

Procedure Iz_Spiska(Pred : U; Var X : BT);

Procedure Ochistka(Var First: U);

Function Pust(First : U) : Boolean;

Procedure Print(First : U);
Implementation
Procedure V_Nachalo;

Var Vsp : U;

Begin

New(Vsp);

Vsp^.Inf := X;

Vsp^.Next := First;

First := Vsp;

End;
Procedure Iz_Nachala;

Var Vsp : U;

Begin

Vsp := First;

First := First^.Next;

X := Vsp^.Inf;

Dispose(Vsp);

End;
Procedure V_Spisok;

Var Vsp : U;

Begin

New(Vsp);

Vsp^.Inf := X;

Vsp^.Next := Pred^.Next;

Pred^.Next := Vsp;

End;
Procedure Iz_Spiska;

Var Vsp : U;

Begin

Vsp := Pred^.Next;

Pred^.Next := Pred^.Next^.Next;

X := Vsp^.Inf;

Dispose(Vsp);

End;
Procedure Ochistka;

Var Vsp : BT;

Begin

While Not Pust(First) Do Iz_Nachala(First, Vsp)

End;
Function Pust;

Begin

Pust := First = Nil

End;
Procedure Print;

Var Vsp : U;

Begin

Vsp := First;

While Vsp <> Nil Do

Begin

Write(Vsp^.Inf : 6);

Vsp := Vsp^.Next

End; WriteLn

End;
Begin

End. // Язык С++

#include < iostream.h >

#include < conio.h >

#include < stdlib.h >

#include < time.h >

typedef long BT;

struct Zveno{

BT Inf;

Zveno *Next; };
Zveno *V_Nachalo(Zveno *First, BT X)

{ Zveno *Vsp;

Vsp = (Zveno *) malloc(sizeof(Zveno));

Vsp->Inf=X; Vsp->Next=First; First=Vsp;

return First;

}
Zveno *Iz_Nachala(Zveno *First)

{ Zveno *Vsp;

Vsp=First->Next;

free(First);

return Vsp;

}
Zveno *V_Spisok(Zveno *Pred, BT X)

{ Zveno *Vsp;

Vsp = (Zveno *) malloc(sizeof(Zveno));

Vsp->Inf=X;

Vsp->Next=Pred->Next;

Pred->Next=Vsp;

return Vsp;

}
BT Iz_Spiska(Zveno *Pred)

{ BT X;

Zveno *Vsp;

Vsp=Pred->Next;

Pred->Next=Pred->Next->Next;

X=Vsp->Inf;

free(Vsp);

return X;

}
void Print(Zveno *First)

{ Zveno *Vsp;

Vsp=First;

while (Vsp)

{cout << Vsp->Inf << ' '; Vsp=Vsp->Next;}

cout << "\n";

}
int Pust(Zveno *First)

{

return !First;

}
Zveno *Ochistka(Zveno *First)

{

while (!Pust(First)) First=Iz_Nachala(First);

return First;

}

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

При реализации алгоритма будем использовать подпрограммы разработанного модуля. Это существенно облегчает решение задачи.
{Программа на Turbo Pascal}

Program Ex_sp_1;

Uses Spisok;

Var S1, S2, S3, V1, V2, V3 : U; A : BT; I, N : Byte;

Begin

Randomize;

N := 1 + Random(20);

S1 := Nil; A := -100 + Random(201);

V_Nachalo(S1, A); V1 := S1;

For I := 2 To N Do

Begin A := -100 + Random(201); V_Spisok(V1, A); V1 := V1^.Next End;

WriteLn('Исходный список: '); Print(S1);

V1 := s1; S2 := Nil; S3 := Nil;

While V1 <> Nil Do

Begin

If V1^.Inf > 0

Then If S2 = Nil

Then Begin V_Nachalo(S2, V1^.Inf); V2 := S2 End

Else Begin V_Spisok(V2, V1^.Inf); V2 := V2^.Next End;

If V1^.Inf < 0

Then If S3 = Nil

Then Begin V_Nachalo(s3, V1^.Inf); V3 := S3 End

Else Begin V_Spisok(V3, V1^.Inf); V3 := V3^.Next End;

V1:= V1^.Next

End;

WriteLn('Результирующий список из положительных элементов: '); Print(S2);

WriteLn('Результирующий список из отрицательных элементов: '); Print(S3);

Ochistka(S1); Ochistka(S2); Ochistka(S3);

End.

// Программа на C++

#include "SPIS.CPP"

void main()

{Zveno *S1, *S2, *S3, *V1, *V2, *V3;

BT a; int i, n;

clrscr();

randomize();

S1=NULL;

// создаём первый элемент

a=-100+random(201);

S1=V_Nachalo(S1, a);

n=1+random(20);

// формируем список произвольной длины и выводим на печать

V1=S1;

for (i=2; i<=n; i++)

{

a=-100+random(201);

V1=V_Spisok(V1, a);

}

Print(S1);

V1 = S1; S2 = NULL; S3 = NULL;

while (V1)

{if (V1->Inf > 0)

if (!S2)

{S2=V_Nachalo(S2, V1->Inf); V2 = S2;}

else {V_Spisok(V2, V1->Inf); V2 = V2->Next;};

if (V1->Inf < 0)

if (!S3)

{S3=V_Nachalo(S3, V1->Inf); V3 = S3;}

else {V_Spisok(V3, V1->Inf); V3 = V3->Next;};

V1= V1->Next;}

cout << "Результирующий список из положительных элементов: \n";

Print(S2);

cout << "Результирующий список из отрицательных элементов: \n";

Print(S3);

S1=Ochistka(S1); S2=Ochistka(S2); S3=Ochistka(S3);

}


Контрольные вопросы и задания


  1. Чем отличаются статические и динамические величины?

  2. Какая память называется динамически распределяемой?

  3. Что такое указатель?

  4. Какие виды указателей вам известны?

  5. Как определяется адрес переменной?

  6. Приведите примеры объявления указателей.

  7. Как выделить память под динамическую переменную? Как освободить память от динамической переменной?

  8. Что такое "разыменование"?

  9. Что в языке Pascal обозначает константа Nil (в языке C константа NULL)?

  10. В каком случае возможно присваивание указателей?

  11. Какие ситуации приводят к возникновению в динамически распределяемой памяти "мусора"?

  12. Что понимают под "связанным списком"?

  13. Как классифицируют связанные списки?

  14. Какие основные действия над списками и компонентами списков обычно реализуют?

  15. Как описывается список?

  16. Двунаправленный список объявлен следующим образом:

Type BT = Byte;

U = ^Zveno;

Zveno = Record Inf : BT; Pred, Next: U End;

Здесь Pred, Next — соответственно указатели на предыдущее и последующее звенья списка. Разработать основные подпрограммы для обслуживания такого списка.


Лекция №13. Динамические структуры данных: стеки
Стек — динамическая структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека.
По определению, элементы извлекаются из стека в порядке, обратном их добавлению в эту структуру, т.е. действует принцип "последний пришёл — первый ушёл".

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

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

добавление элемента в стек;

удаление элемента из стека;

проверка, пуст ли стек;

просмотр элемента в вершине стека без удаления;

очистка стека.
Реализуем эти операции, используя разработанный ранее модуль для однонаправленных списков (см. материал "Динамические структуры данных: списки").
{ Turbo Pascal, файл STACK.PAS }

Unit Stack;

Interface

Uses Spisok;

Procedure V_Stack(Var Versh : U; X : BT);

Procedure Iz_Stack(Var Versh : U; Var X : BT);

Function Pust(Versh : U) : Boolean;

Function V_Vershine(Versh : U) : BT;

Procedure Ochistka(Var Versh : U);

Implementation

Procedure V_Stack;

Begin

V_Nachalo(Versh, X)

End;

Procedure Iz_Stack;

Begin

Iz_Nachala(Versh, X)

End;

Function Pust;

Begin

Pust := Versh = Nil

End;

Function V_Vershine;

Begin

V_Vershine := Versh^.Inf

End;

Procedure Ochistka;

Begin

Spisok.Ochistka(Versh)

End;

Begin

End. /* C++, файл STACK.CPP */

#include "SPIS.CPP"

Zveno *V_Stack(Zveno *Versh, BT X)

{

return V_Nachalo(Versh, X);

}

Zveno *Iz_Stack(Zveno *Versh)

{

return Iz_Nachala(Versh);

}

int SPust(Zveno *Versh)

{

return !Versh;

}

BT V_Vershine(Zveno *Versh)

{

return Versh->Inf;

}

Zveno *Chistka(Zveno *Versh)

{

while (!Pust(Versh)) Versh=Iz_Stack(Versh);

return Versh;

}

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

Алгоритм решения. Выражение просматривается слева направо. Если встречается число, то его значение (как целое) заносится в стек, а если встречается знак операции, то из стека извлекаются два последних элемента (это операнды данной операции), над ними выполняется операция и ее результат записывается в стек. В конце в стеке остается только одно число — значение всего выражения.
{ Turbo Pascal, файл ST2.PAS }

Program St2;

Uses Spisok, Stack;

Const Znak = ['+', '-', '*', '/'];

Var S, S1 : String;

T : Text;

I, N : Byte;

X, Y : BT; Code : Integer;

NS : U;

Begin

Write('Введите имя файла: '); ReadLn(S1);

Assign(T, S1); ReSet(T);

NS := Nil;

While Not Eof(T) Do

Begin

ReadLn(T, S); I := 1;

While I <= Length(S) Do

Begin

If S[I] In ['0'..'9']

Then

Begin

N := I;

While S[I] In ['0'..'9'] Do

I := I + 1;

Val(Copy(S, N, I - N), X, Code);

V_Stack(NS, X);

End

Else

If S[I] In Znak

Then

Begin

Iz_Stack(NS, X);

Iz_Stack(NS, Y);

Case S[I] Of

'+' : X := X + Y;

'-' : X := Y - X;

'*' : X := X * Y;

'/' : X := Y Div X

End;

V_Stack(NS, X)

End;

I := I + 1

End;

Iz_Stack(NS, X);

WriteLn(S, ' = ', X);

End

End. /* C++, файл ST2.CPP */

#include "STACK.CPP"

#include < string.h >

#include < stdio.h >

void main(void)

{

char S[255];

FILE *T;

int I; BT X, Y;

Zveno *NS;

clrscr();

cout << "Введите имя файла: "; cin >> S;

T=fopen(S, "r");

NS = NULL;

while (!feof(T))

{

fgets(S, 255, T);

I = 0;

while (I <= strlen(S)-1)

{

if (S[I]>='0'&&S[I]<='9')

{

X=0;

while(S[I]>='0'&&S[I]<='9') {X=X*10+(S[I]-'0'); I++;}

NS=V_Stack(NS, X);

}

else

if (S[I]=='+'||S[I]=='-'||S[I]=='/'||S[I]=='*')

{

X=V_Vershine(NS);

NS=Iz_Stack(NS);

Y=V_Vershine(NS);

NS=Iz_Stack(NS);

switch (S[I]) {

case '+' : X += Y; break;

case '-' : X = Y - X; break;

case '*' : X *= Y; break;

case '/' : X = Y / X; break;}

NS=V_Stack(NS, X);

}

I++;

}

X=V_Vershine(NS);

NS=Iz_Stack(NS);

cout << S << " => " << X << "\n";}

}

Очередь — это информационная структура, в которой для добавления элементов доступен только один конец, называемый хвостом, а для удаления — другой, называемый головой. В англоязычной литературе для обозначения очередей довольно часто используется аббревиатура FIFO (first-in-first-out — первый вошёл — первым вышел).

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

Выделим типовые операции над очередями:

добавление элемента в очередь (помещение в хвост);

удаление элемента из очереди (удаление из головы);

проверка, пуста ли очередь;

очистка очереди.

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

{Язык Pascal}

Unit Spisok2;

Interface

Type BT = LongInt;

U = ^Zveno;

Zveno = Record Inf : BT; N, P: U End;

Procedure V_Och(Var First : U; X : BT);

Procedure Iz_Och(Var First : U; Var X : BT);

Procedure Ochistka(Var First: U);

Function Pust(First : U) : Boolean;

Implementation

Procedure V_Och;

Var Vsp : U;

Begin

New(Vsp);

Vsp^.Inf := X;

If First = Nil then begin Vsp^.N := Vsp; Vsp^.P := Vsp; First := Vsp end

else begin Vsp^.N := First; Vsp^.P := First^.P; First^.P^.N := Vsp; First^.P := Vsp; end;

End;

Procedure Iz_Och;

Var Vsp : U;

Begin

x:=first^.inf;

if First^.p=first

then begin

dispose(first);

first:= nil

end

else

begin

Vsp := First;

First := First^.N;

First^.P := Vsp^.P;

Dispose(Vsp)

end

End;

Procedure Ochistka;

Var Vsp : BT;

Begin

While Not Pust(First) Do Iz_Och(First, Vsp)

End;

Function Pust;

Begin

Pust := First = Nil

End;

Begin

End.

// Язык С++

#include

#include

#include

#include

typedef long BT;

struct U{

BT Inf;

U *N, *P;};
U *V_Och(U *First, BT X)

{ U *Vsp;

Vsp = (U*) malloc (sizeof(U));

Vsp->Inf=X;

if (!First) {Vsp->N=Vsp; Vsp->P=Vsp; First=Vsp;}

else {Vsp->N=First; Vsp->P=First->P; First->P->N=Vsp; First->P=Vsp;}

return First;}
U *Iz_Och(U *First, BT &X)

{ U *Vsp;

X=First->Inf;

if (First->P==First) {free(First); First=NULL;}

else {Vsp=First; First=First->N; First->P=Vsp->P; free(Vsp);}

return First;}
int Pust(U *First)

{ return !First;}
U *Ochistka(U *First)

{ BT Vsp;

while (!Pust(First)) First=Iz_Och(First, Vsp);

return First;

}
Пример. Напечатать в порядке возрастания первые n натуральных чисел, в разложение которых на простые множители входят только числа 2, 3, 5.

Алгоритм решения. Введем три очереди x2, x3, x5, в которых будем хранить элементы, которые соответственно в 2, 3, 5 раз больше напечатанных, но еще не напечатаны. Рассмотрим наименьший из ненапечатанных элементов; пусть это x. Тогда он делится нацело на одно из чисел 2, 3, 5. x находится в одной из очередей и, следовательно, является в ней первым (меньшие напечатаны, а элементы очередей не напечатаны). Напечатав x, нужно его изъять и добавить его кратные. Длины очередей не превосходят числа напечатанных элементов.

{Язык Pascal}

Program Example;

Uses Spisok2;

Var X2, X3, X5 : U; X : BT; I, N : Word;

Procedure PrintAndAdd(T : BT);

Begin

If T <> 1 Then Write(T : 6);

V_Och(X2, T * 2); V_Och(X3, T * 3); V_Och(X5, T * 5);

End;

Function Min(A, B, C : BT) : BT;

Var Vsp : BT;

Begin

If A < B Then Vsp := A Else Vsp := B;

If C < Vsp Then Vsp := C;

Min := Vsp

End;

Begin

X2 := Nil; X3 := Nil; X5 := Nil;

Write('Сколько чисел напечатать? '); ReadLn(N);

PrintAndAdd(1);

For I := 1 To N Do

Begin

X := Min(X2^.Inf, X3^.Inf, X5^.Inf);

PrintAndAdd(X);

If X = X2^.Inf Then Iz_Och(X2, X);

If X = X3^.Inf Then Iz_Och(X3, X);

If X = X5^.Inf Then Iz_Och(X5, X);

End;

Ochistka(X2); Ochistka(X3); Ochistka(X5);

WriteLn

End.

// Язык С++

#include "spis2.cpp"

void PrintAndAdd(BT T);

BT Min (BT A, BT B, BT C);

U * X2, *X3, *X5;

void main ()

{ BT X; long I, N;

X2 = NULL; X3 = NULL; X5 = NULL;

cout << "Сколько чисел напечатать? "; cin >> N;

PrintAndAdd(1);

for (I=1;I<=N; I++)

{ X = Min(X2->Inf, X3->Inf, X5->Inf);

PrintAndAdd(X);

if (X==X2->Inf) X2=Iz_Och(X2, X);

if (X==X3->Inf) X3=Iz_Och(X3, X);

if (X==X5->Inf) X5=Iz_Och(X5, X);

}

X2=Ochistka(X2); X3=Ochistka(X3); X5=Ochistka(X5); cout << endl;

}

void PrintAndAdd(BT T)

{ if (T!=1) {cout.width(6); cout << T;}

X2=V_Och(X2, T*2);

X3=V_Och(X3, T*3);

X5=V_Och(X5, T*5);

}

BT Min (BT A, BT B, BT C)

{ BT vsp;

if (A < B) vsp=A; else vsp=B;

if (C < vsp) vsp=C;

return vsp;

}


Контрольные вопросы и задания


  1. Какую структуру данных называют очередью? Что такое хвост и голова очереди?

  2. На базе каких структур данных может быть организована очередь?

  3. Приведите из жизни примеры организации чего-либо по принципу очереди.

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

  5. Составьте и решите задачу с использованием абстрактного типа данных "очередь".


4.2. Содержание практических занятий
Практическое занятие № 1

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

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

Теоретический материал

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

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

• словесный (описание на естественном человеческом языке);

• с помощью одного из алгоритмических языков программирования;

• графический (на языке блок-схем);

• с использованием диаграмм;

• с использованием таблиц решений;

и др.

Рассмотрим способ составления алгоритма на языке блок-схем.

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

1. Блок-схема строится сверху вниз.

2. В любой блок-схеме имеется только один элемент, соответствующий

началу алгоритма, и один элемент, соответствующий концу алгоритма.

3. Должен быть ходя бы один путь их начала блок-схемы любому элементу.

4. Должен быть хотя бы один путь от каждого элемента блок-схемы в конец

блок-схемы.
Практическое занятие № 2
Условный оператор if

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

if <условие> then <оператор1> else <оператор2>;
Под оператором понимается либо одиночный оператор (например, присваивания, вызова процедуры), либо так называемый составной оператор, состоящий из нескольких простых операторов, помещенных между словами begin и end. Важно заметить, что перед else не ставится точка с запятой.

1   2   3   4   5   6   7   8   9   10   11

Похожие:

«программирование» icon12 Достижения компьютерной техники 15 Программирование
Программирование 3
«программирование» iconПрограмма по формированию навыков безопасного поведения на дорогах...
Понятно, что программирование стержень профильного курса информатики. Но какова его роль и есть ли необходимость изучать программирование...
«программирование» iconРабочая программа дисциплины оп. 08 Теория алгоритмов (с дополнениями...
Специальность 09. 02. 03 «Программирование компьютерных систем» (базовая подготовка)
«программирование» iconОсновная образовательная программа среднего профессионального образования...
Нормативные документы для разработки ооп спо по специальности 230115 Программирование в компьютерных системах
«программирование» icon«Динамическое Web-Программирование»
Целью курса "Динамическое Web-Программирование" является изучение принципов разработки приложений, работающих в среде Интернет и...
«программирование» iconРабочая программа по дисциплине “алгоритмизация и программирование”...
Алгоритмизация и программирование” составлена в соответствии с требованиями Государственного общеобразовательного стандарта высшего...
«программирование» iconПрограмма учебной дисциплины технические средства информатизации...
Рабочая программа учебной дисциплины разработана на основе Федерального государственного образовательного стандарта (далее – фгос)...
«программирование» iconСамостоятельная работа Методические указания к выполнению самостоятельной...
Методические указания выполнению самостоятельной работы по курсу «Информатика» и «Информатика и программирование»: Авт сост Н. В....
«программирование» iconОбзор цифровых образовательных ресурсов, рекомендованных Министерством...
Программа предназначена для проведения квалификационных испытаний в рамках процедуры аттестации педагогических работников по должности...
«программирование» iconРеферат по дисциплине «Информатика и программирование»

«программирование» iconРазработка урока по информатике с применением икт на тему «Программирование...
...
«программирование» iconПрограммирование в среде логомиры
«Убегающая кнопка» развивает у учеников первоначальные навыки работы с мышью
«программирование» iconАннотация рабочих программ учебных дисциплин (модулей) специальности...

«программирование» icon«икт в образовании»
Рабочая программа дисциплины «Программирование» /сост. Хатаева Р. С.– Грозный: чгпи, 2012г
«программирование» iconУчебно-методический комплекс дисциплины «Информатика и программирование»
Государственного образовательного учреждения высшего профессионального образования
«программирование» iconКурсовая работа по дисциплине «Информатика и программирование»
Кафедра «Программное обеспечение вычислительной техники и автоматизированных систем»


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск