Принцип работы цикла for_to (for_downto)

На первом шаге цикла счетчику присаивается значение выражения нач_знач. Затем производится проверка выражения параметр <= кон_знач (параметр >= кон_знач) и, если оно истинно выполняется тело цикла, в противном случае происходит выход из цикла. После выполнения тела цикла происходит изменение параметра на следующее большее (меньшее) значение в зависимости от формы оператора for, т.е. неявно происходит выполнение одного из двух операторов:

параметр := Succ(параметр);

параметр := Pred(параметр);

Затем снова идет проверка выражения параметр <= кон_знач (параметр >= кон_знач) и опять, если оно истинно выполняется тело цикла. Цикл выполняется до тех пор, пока счетчик не станет большим (меньшим) выражения кон_знач.

Примеры

For i:=1 to 10 do writeln('a');

For month:=12 downto 1 do S:=S+1;

For k:=1 downto 5 do p:=p*2;

В первом случае тело цикла выполнится 10 раз и будет выведено на экран 10 букв "а".

В втором случае тело цикла выполнится 12 раз.

В третьем случае тело цикла не выполнится ни разу, т.к. сразу 1>5.

Типовые задачи

1. Даны 10 вещественных чисел. Подсчитать среди них количество положительных.

Слово "даны" означает, что программа должна получить их от пользователя. Идея: мы должны иметь переменную счетчик, которую должны наращивать, когда введенное число окажется положительным. Нам не нужно заводить 10 переменных, достаточно одной. Алгоритм получается примерно такой:

Ввод очередного числа

Проверка

Ввод очередного числа

Проверка

И так еще 8 раз.

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

Повторять 10 раз

Ввод очередного числа

Проверка

Конец цикла

На языке Паскаль это будет выглядеть так:

for i:=1 to 10 do

Begin

write('Введите ',i,'-ое число: ');

readln(x);

if x>0 then kol:=kol+1 {увеличиваем количество на 1}

end;

Полный текст программы:

program chisla;

uses crt;

var i, kol:byte;

x:real;

Begin

clrscr;

kol:=0;

for i:=1 to 10 do

Begin

write('Введите ',i,'-ое число: ');

readln(x);

if x>0 then kol:=kol+1 {увеличиваем количество на 1}

end;

writeln('Вы ввели ',kol,' положительных чисел.');

Readln

end.

2. Напечатать буквы латинского алфавита в обратном порядке от 'Z' до 'A'.

program alphabet;

var c:char;

Begin

for c:='Z' downto 'A' do write(c);

Readln

End

3: Вычислить N-е число Фиббоначчи. Числа Фиббоначчи строятся следующим образом: F(0)=F(1)=1; F(i+1)=F(i)+F(i-1); для i>=1. Это пример вычислений по рекуррентным формулам.

program Fib;

var a,b,c:word; i,n:byte;

Begin

write('введите номер числа Фиббоначчи ');

readln(N);

a:=1; {a=F(0), a соответствует F(i-2)}

b:=1; {b=F(1), b соответствует F(i-1)}

for i:=2 to N do

Begin

c:=a+b; {c соответствует F(i)}

a:=b; b:=c; {в качестве a и b берется следующая пара чисел}

end;

writeln(N,'-е число Фиббоначчи =',b); {для N>=2 b=c}

Readln

end.

ЦИКЛЫ С УСЛОВИЕМ.

Если заранее неизвестно число повторений цикла, то используются циклы с условием. В паскале имеется два типа таких циклов. Циклы While называют циклами с пред-условием. Они имеют вид

WHILE <логич.выражение> DO <оператор>;

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

Другой вариант циклов с условием - это циклы Repeat. Их называют циклами с пост-условием. Они имеют вид

REPEAT

<оператор 1> ... <оператор N>

UNTIL <логич.выражение>

Оператор Repeat организует повторяющееся выполнение нескольких операторов до тех пор пока не станет истинным условие, стоящее в Until-части. Тело цикла обязательно выполняется хотя бы один раз. Таким образом, в этом цикле логическое выражение - это условие выхода из цикла.

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

РЕКОМЕНДАЦИИ: Для того, чтобы избежать зацикливания программы необходимо обеспечить изменение на каждом шаге цикла значения хотя бы одной переменной, входящей в условие цикла. После выхода из цикла со сложным условием (с использованием операций and, or, xor) как правило необходима проверка того, по какому условию цикл завершен.

ПРИМЕР: Пары неотрицательных вещественных чисел вводятся с клавиатуры. Посчитать произведение для каждой пары и сумму всех чисел.

program cycle_while;

var x,y,sum:real; otv:char;

Begin

sum:=0;

otv='Д';

while (otv='Д') or (otv='д') do

Begin

write('Введите числа x,y > 0 ');

readln(x,y);

writeln('Их произведение = ',x*y:8:3);

sum:=sum+x+y;

write('Завершить программу (Д/Н)? ');

readln(otv);

end;

writeln('Общая сумма = ',sum:8:3);

Readln

End.

ПРИМЕР: В той же задаче можно использовать другой цикл с условием:

program cycle_repeat;

var x,y,sum:real; otv:char;

Begin

sum:=0;

Repeat

write('Введите числа x,y > 0 ');

readln(x,y);

writeln('Их произведение = ',x*y:8:3);

sum:=sum+x+y;

write('Завершить программу (Д/Н)? ');

readln(otv);

until (otv='Д') or (otv='д');

writeln('Общая сумма = ',sum:8:3);

Readln

end.

ПРИМЕР: Нахождение наибольшего общего делителя двух целых чисел с помощью Алгоритма Эвклида.

program Evklid;

var a,b,c:integer;

Begin

write('введите два целых числа : ');

readln(a,b);

while b<>0 do

Begin

c:=a mod b;

a:=b;

b:=c;

end;

writeln('наибольший общий делитель = ',a);

Readln

end.

[kgl]

[gl]ЛЕКЦИИ 12-14. КОМПЬЮТЕРНЫЕ СЕТИ И СЕТЕВЫЕ ТЕХНОЛОГИИ[:]

Компьютерная сеть (англ. Computer NetWork, от net — сеть и work— работа) — совокупность компьютеров, соединенных с помощью каналов связи и средств коммутации в единую систему для обмена сообщениями и доступа пользователей к программным, техническим, информационным и организационным ресурсам сети.

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

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

Принцип централизованной обработки данных (когда к центральной ЭВМ подключалось несколько терминалов – ввод/вывод) не отвечал высоким требованиям к надежности процесса обработки. Вследствие чего возникло обоснованное требование перехода от использования отдельных ЭВМ в системах централизованной обработки данных к распределенной обработке данных.

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

Для реализации распределенной обработки данных были созданы компьютерные (вычислительные) сети.

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

Абоненты сети– объекты, генерирующие или потребляющую информацию в сети.

Абонентами могут быть отдельные ЭВМ, комплексы ЭВМ, терминалы, промышленные роботы, станки с ЧПУ (числовым программным управлением) и т.д. Любой абонент сети подключается к станции.

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

Физическая передающая среда – линии связи или пространство, в котором распространяются электрические сигналы, и аппаратура передачи данных.

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

Основное назначение компьютерной сети – предоставление информационных и вычислительных ресурсов подключенным к ней пользователям.

Наши рекомендации