ЛЕКЦИЯ 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллельный ввод-вывод в MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллельный ввод-вывод в MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
1. ЗЛАТОУСТОВСКАЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА
І-ІІІ СТУПЕНЕЙ
Учитель информатики
Лесконог Елена Викторовна
Алгоритмы с повторениями.
Операторы цикла на языке
программирования.
Вложенные циклы.
2. При составлении программ часто возникают ситуации, когда
1. Заранее не известно количество повторений цикла;
2. Переменная – счетчик цикла должна изменяться с шагом
≠ 1.
В таких случаях используют логические циклы.
Логические циклы - это циклическое повторение блока
команд, пока выполняется (или не выполняется) некоторое
условие.
Логические циклы
4. Цикл с предусловием / ПОКА /
While условие do
<оператор>;
Цикл с постусловием / ДО /
Repeat
<операторы>
Until условие;
Логические циклы
5. Сравнение циклов While и Repeat
В цикле While проверка условия выполнения цикла находится
в начале цикла, а в Repeat – в конце.
Цикл Repeat всегда выполняется хотя бы один раз, а цикл While
может не выполнятся ни разу.
В цикле While выход из цикла осуществляется, если условие
ложно, а в Repeat – если условие истинно.
Между словами Repeat и Until можно размещать несколько
операторов без Begin и End, а цикл While…do может содержать
только один оператор тела цикла; поэтому нужно использовать
Begin и End.
7. Program z_1;
Uses Crt;
Var k: integer;
Begin
Clrscr;
k:=14;
Результат программы
While k<=99 do
Begin
Writeln(k);
k:=k+7;
end;
readln;
end.
8. Пояснение
While k<=99 do
Begin
Writeln(k);
k:=k+7;
end;
readln;
end.
При использовании логических циклов
необходимо всегда заботиться о том,
чтобы переменная, использующаяся в
условии завершения цикла, каким-то
образом обязательно изменялась в теле
цикла. Это может быть команда
присваивания (как в данной программе)
или команда ввода.
9. Дополнение
При подключении Uses Crt необходимо использовать
функцию Clrscr.
Clrscr - очищает активное окно и устанавливает курсор в левый
верхний угол окна.
10. Program PRIM_2;
uses CRT;
Begin
WriteLn('1 строка');
WriteLn('2 строка');
WriteLn('3 строка');
ClrScr;
WriteLn('А куда они делись?=)');
End.
Пример использования ClrScr
Program PRIM_1;
Begin
WriteLn('1 строка');
WriteLn('2 строка');
WriteLn('3 строка');
End.
11. Вложенные циклы
Цикл называется вложенным, если он находится в теле
другого цикла. for i:=0 to n do
begin
for j:=0 to m do
begin
for k:=0 to w do
begin
end;
end;
end;
Внутренний цикл должен полностью находиться в теле внешнего цикла.
Цикл j
Цикл k
Цикл i
12. Пример
Сколько можно купить быков, коров и телят, если бык стоит
10 рублей, корова -5 рублей, теленок – 0,5 рубля и на 100
рублей надо купить 100 животных.
Решение
B – количество быков
K - количество коров
T- количество телят.
После этого можно записать
два уравнения:
10b+5k+0,5t=100 b+k+t=100,
Преобразуем их:
20b+10k+t=200 b+k+t=100
На 100 рублей можно купить:
•Не больше 10 быков, 0≤b≥10
•Не больше 20 коров, 0≤k≥20
•Не больше 200 телят, 0≤t≥200
13. Результат программы
Program z_2;
Uses Crt;
Var b, k, t:integer;
Begin
Clrscr;
for b:=0 to 10 do
for k:=0 to 20 do
for t:=0 to 200 do
if (20*b+10*k+t=200) and (b+k+t=100)
then
writeln(‘Быков ',b,' Коров ',k,' Телят ', t);
readln;
end.
14. Пояснение
Сколько раз будет проверяться условие в данной программе?
Значение b изменяется 11 раз – от 0 до 10;
k - 21, t - 201
Таким образом, условие будет проверяться 11*21*201 = 46431
раз.
15. Результат программы
Program z_3;
Uses Crt;
Var b, k, t:integer;
Begin
Clrscr;
for b:=0 to 10 do
for k:=0 to 20 do
begin
t:=100-(b+k);
if 20*b+10*k+t=200
then
writeln(‘Быков ',b,' Коров ',k,' Телят ', t);
end;
readln;
end.
16. Пояснение
11*21*201 = 46431
Если известно количество быков и коров, то количество телят
можно вычислить по формуле:
t:=100-(b+k);
Цикл по переменной t можно исключить.
Количество повторений проверки условия становиться
11*21=231
17. Задача
В кассе есть монеты по 2, 5 и 10 копеек. Сколькими
способами можно выдать сдачу на некоторую сумму Sum?
18. Результат программы
Program z_3;
Uses Crt;
Var Sum, Xmax, Ymax, Zmax, x, y, z, p:integer;
Begin
Clrscr;
Writeln (‘Введите сумму: '); Readln (Sum); p:=0;
Xmax:=Sum div 2; Ymax:=Sum div 5; Zmax:=Sum div 10;
Writeln (' 2 5 10 Всего монет');
Writeln ('______________________');
19. for x:=0 to Xmax do
for y:=0 to Ymax do
for z:=0 to Zmax do
if 2*x+5*y+10*z=Sum
then
begin
writeln(x:3,y:3,z:3,x+y+z:8);
p:=p+1;
end;
If p=0 then writeln(‘Вариантов нет')
else writeln (‘Всего ', p,' Вариантов');
readln;
end.
Результат программы
24. Решение
Предположим, что пароль – это слово «груша». Программа
запрашивает у пользователя пароль, сравнивает его с нашим
паролем. Если пользователь ввел правильный пароль, то для
него доступ открыт, а если пароль не правильный, то доступ
закрыт.
Решение
25. Результат программы
Program Pr6;
Var parol :string;
Begin
WriteLn (‘Какой пароль?’);
ReadLn (parol);
If parol=‘груша’
then
writeLn (‘Доступ для Вас открыт’)
Else
writeLn (‘Доступ закрыт!!!’);
ReadLn;
End.
28. Домашнее задание
Составить блок-схемы к задачам решенным на уроке.
Написать программу на расчет наименьшего числа:
Ввести три числа и найти наименьшее из них.
Пример:
Введите три числа:
54 89 133
Наименьшее число 54