Исполнение фрагментов программ
Алгоритм – это строгая и четкая последовательность действий, выполнение которых приводит к определенному результату.
Требования к алгоритмам
1) Ориентированность на конкретного исполнителя.
2) Понятность для исполнителя (алгоритм составляется в соответствии с системой команд исполнителя).
3) Точность (каждая команда должна определять однозначное действие исполнителя).
4) Конечность (наличие конца алгоритма через конечное число шагов).
5) Результативность (получение нужного результата по окончанию алгоритма).
6) Массовость (применимость для широкого класса задач).
7) Формальность исполнения (во время исполнения алгоритма исполнитель не должен задумываться над сутью выполняемых действий).
Способы записи алгоритмов
1) Словесный (описание алгоритма с помощью слов русского языка).
Пример. Алгоритм включения компьютера.
Подойти к компьютеру.
Включить системный блок.
2) Запись на алгоритмическом языке
Пример. Алгоритм нахождения минимального из двух введенных чисел.
3) Блок-схема (Графическое представление алгоритма)
(будет рассмотрен ниже)
4) Программа (запись алгоритма на языке программирования)
Пример. Определение четности введенного числа.
| BASIC | Pascal |
| INPUT “Введите целое число”; XA$=”четное”IF X MOD 20 THEN A$=”не”+A$PRINT “Введенное число ”, A$ | Var x: Integer;Str: String;BeginWrite(‘Введите целое число’);ReadLn(x);If x Mod 20Then Str:=’не’+Str;WriteLn(‘Введенное число ‘, Str);End. |
Блок-схемы являются одним из графических способов представления алгоритмов. Блок-схема состоит из блоков, соединенных линиями. Чаще всего используются блоки следующих типов:
— выбор направления выполнения алгоритма в зависимости от выполнения условия;
— начало и конец алгоритма.
2. Алгоритмические конструкции
Группа шагов алгоритма, выполняемых последовательно друг за другом без каких-либо условий, называется линейной последовательностью. На рис.1. изображена линейная последовательность, состоящая из двух шагов.
Ветвление представляет собой алгоритмическую конструкцию, в которой выполнение того или иного шага зависит от истинности условия. Говорят, что конструкция «ветвление» записана в полной форме, если в ней присутствуют команды как для случая истинного условия, так и для его ложности. На рис.2 приведена блок-схема ветвления в полной форме.
Конструкция ветвления в полной форме реализуется следующим образом. Если условие истинно, то выполняется действие 1, если условие ложно, то выполняется действие 2.
Если в ветвлении присутствуют действия только для истинности или только для случая ложности условия, то говорят, что она записана в неполной (в сокращенной) форме. На рис. 3 приведены две блок-схемы ветвления в сокращенной форме.
Конструкция ветвления в сокращенной форме реализуется следующим образом. Если выбрано направление, в котором отсутствует действие, то конструкция ветвления не выполняется и управление получает конструкция, следующая за ветвлением.
Цикл представляет собой алгоритмическую конструкцию, в которой многократно выполняется одна и та же последовательность шагов, называемая телом цикла. Каждое однократное исполнение цикла называется итерацией. Если тело цикла будет выполнено N раз, говорят, что произведено N итераций.
Различают два вида циклов: циклы с заранее известным числом повторений и циклы с заранее неизвестным числом повторений. Цикл с заранее известным числом повторений называют циклом с параметром. Блок-схема цикла с параметром помещена на рис.4.
В циклах с заранее неизвестным числом повторений для того, чтобы определить момент прекращения выполнения тела цикла, используется условие цикла. Если при истинности условия цикл продолжается, то такое условие называется условием продолжения цикла.
Если при истинности условия цикл завершается, то такое условие называется условием завершения цикла. В этом случае цикл продолжается до тех пор, пока условие не станет истинным.
Различают циклы с проверкой условия перед выполнением очередной итерации и циклы с проверкой условия после выполнения очередной итерации. Первые называются циклами с предусловием (рис. 5), вторые – с постусловием (рис. 6).
Алгоритмическая конструкция называется вложенной, если она содержится внутри другой алгоритмической конструкции. На рис. 7 команда ветвления вложена в цикл.
Задание 1. (Задание А8 демоверсии 2004 г.)
Алгоритмическая конструкция какого типа изображена на фрагменте блок-схемы (см. рис. 8):
Решение. На рис. 8 изображен ромб, внутри которого записано условие, и две исходящие из него стрелки. Фрагмент условия представляет собой блок ветвления в полной форме.
Задание 2. (Задание А6 демоверсии 2005 г.)
Фрагмент блок-схемы (см. рис. 9) представляет алгоритм, который содержит команды ветвления:
1) команду ветвления в сокращенной форме, в которую вложена команда ветвления в полной форме;
2) две команды ветвления в полной форме, одна из которых вложена в другую;
3) две команды ветвления в сокращенной форме, одна из которых вложена в другую;
4) команду ветвления в полной форме, в которую вложена команда ветвления в сокращенной форме.
Решение. Обе команды ветвления, входящие в блок-схему на рис. 9, — полные, при чем одна из них вложена в другую. Поэтому верным будет вариант ответа №2.
Задание 3. (Задания А29 демоверсии 2005 г., А6 демоверсии 2006 г.)
Определите значение целочисленной переменной х после выполнения следующего фрагмента блок-схемы (см. рис.10)
Решение. В блок-схеме присутствует повторяющаяся последовательность действий (цикл). Для того, чтобы не ошибиться при выполнении блок-схемы, составим таблицу (см. Таблицу 1), в которую будем заносить значения переменных и результаты проверки условий на каждом шаге.
| № итерации | Значение х | Значение у | xy | xy |
| 5575 – даВыполняем тело цикла | 5575 – нет,y:=y-x=75-55=20 | |||
| 5520 – даВыполняем тело цикла | 5520 – даx:=x-y=55-20=35 | |||
| 3520 – даВыполняем тело цикла | 3520 – даx:=x-y=35-20=15 | |||
| 1520 – даВыполняем тело цикла | 1520 – нет,y:=y-x=20-15=5 | |||
| 155 – даВыполняем тело цикла | 155 – даx:=x-y=15-5=10 | |||
| 105 – даВыполняем тело цикла | 105 – даx:=x-y=10-5=5 | |||
| 55 – нетВыход их цикла; завершение алгоритма |
Таким образом, переменная х после выполнения данного фрагмента программы приняла значение 5, что соответствует ответу под номером 2.
Исполнение фрагментов программ
В условии задачи приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, который наиболее вам близок. На остальные два фрагмента обращать внимание не следует, чтобы не терять время.
Задание 4. (Задание А9 демоверсии 2004 г.)
Определите значение целочисленных переменных x, y и t после выполнения фрагмента программы (ниже представлена одна и та же программа, представленная на разных языках программирования):
| Бейсик | Паскаль | Алгоритмический |
| x=5y=7t=xx=y MOD xy=t | x:=5;y:=7;t:=x;x:=y Mod x;y:=t; | x:=5y:=7t:=xx:=mod (x,y)y:=t |
Решение. Для решения этого задания удобно составить таблицу:
| Шаг | Значение хпосле шага | Значение yпосле шага | Значение tпосле шага |
| x=5 | Не определено | Не определено | |
| y=7 | Не определено | ||
| t=x | |||
| x=y MOD x | |||
| y=t |
Таким образом, верным является вариант ответа №1.
Задание 5. (Задание А7 демоверсии 2006 г.)
Определите значение целочисленных переменных a и b после выполнения фрагмента программы (ниже представлена одна и та же программа, представленная на разных языках программирования):
| Бейсик | Паскаль | Алгоритмический |
| a=42b=14a=a\bb=a*ba=b\a | a:=42;b:=14;a:=a Div bb:=a*ba:=b Div a | a:=42b:=14a:=Div (a,b)b:=a*ba:=Div (b,a) |
Решение. Для решения этого задания удобно составить таблицу:
| Шаг | Значение aпосле шага | Значение bпосле шага |
| a=42 | Не определено | |
| b=14 | ||
| a=a\b | ||
| b=a*b | ||
| a=b\a |
Таким образом, верным является вариант ответа №4.
Статьи к прочтению:
Любовьисполнение закона (фрагмент программы)
Похожие статьи:
ОПЕРАЦИОНАЛЬНЫЙ ПОДХОД В настоящее время создание алгоритмов — написание программ для электронных вычислительных машин — стало видом человеческой…
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» УТВЕРЖДАЮ Директор ИК _____________ М.К.Сонькин «____»_____________2011 г Т.Е….
Решение задач программирования на условном языке или с помощью блок-схем.
Для понимания общих основ программирования, а также в учебных целях очень часто используются различные элементы программирования в виде небольших программ или части программ, выполненных на условном языке программирования, или в виде блок-схемы. Для решения таких задач не обязательно владеть каким-либо языком программирования и писать на нём программы. Достаточно понимать суть (смысл) выполняемых действий, понимать логику последовательности выполнения действий, и понимать обозначения элементов такой программы.
Рассмотрим несколько примеров:
Задан одномерный массив X1, X2, ,XN . Что определяет фрагмент алгоритма?

Фрагмент алгоритма программы будет выполняться последовательно в следующем порядке:
1. R=1 – операция присваивания, заносит в переменную R число 1.
2. i=2 — операция присваивания, заносит в переменную i число 2.
4.
Следующим действием фрагмента алгоритма будет проверка значения элемента массива X2 на условие [<0]. Далее программа разветвляется на два различных варианта дальнейшей работы в зависимости от результата проверки этого условия. Если этот элемент будет меньше 0, т.е. отрицательным (условие верно), то в этом случае начнёт выполняться пункт 6, а если положительным (условие не верно), то будет выполняться пункт 7.
5. R =R* X2 — в этом действии исходное значение R=1 будет умножено на значение элемента X2 и записано в переменную R.
6. i=i+2 -следующим действием будет изменение индекса массива на [+2], т.е. i=4. После переходим (возвращаемся на пункт 3) на проверку условия проверки индекса массива на наличие такого номера элемента в массиве. Если такой номер элемента есть, программа будет выполняться по кругу (в цикле) пункты 4, 5, 6, 7, пока не закончатся чётные элементы массива. Как только чётные элементы массива закончатся работа программы прекратиться.
В результате работы этого фрагмента алгоритма получим произведение чётных элементов массива X(i)c отрицательными значениями
Задан двумерный массив А 
После выполнения фрагмента алгоритма переменная В примет значение?
нц для I от 1 до 2
нц для J от 1 до 2
Всё
· нц для I от 1 до 2 –это организация цикла (т.е. повторения части программы от слова нц (начало цикла) до слова кц— конец цикла) связанного с именно с этим началом цикла. Как правило, они выделяются по уровням отступа от левой границы абзаца, или же нужно просто искать по логике открытие и закрытие циклов; кц всегда закрывает ближайшее к нему нц, стоящее выше.
· переменная I и J – это переменные, управляющие циклом, в которые, в нашем случае, при первом выполнении цикла заносится значение 1 (I от 1 до 2), а при каждом новом проходе цикла значение переменной увеличивается на 1 (если не задано другое условие), и так до тех пор, пока значение переменной не примет конечное значение – в нашем случае – 2. Т.о. в данной записи цикл по переменной I выполнится 2 раза: при первом проходе I=1 и при втором I=2. После этого цикл закончиться, и программа будет выполняться дальше.
Иначе
Всё
элемент программы – условие состоит из нескольких элементов:
̶ собственно условие если, в котором записывается логическое выражение, т.е. проверяется какое-либо равенство или неравенство.
̶ следующий элемент условия то – действие, которое будет выполнено, если записанное выше условие верно (выполняется)
̶ следующий элемент условия иначе – действие, которое будет выполнено, если условие ложно (не выполняется). В некоторых языках программирования вариантов иначе может быть несколько.
̶ элемент всё – завершение условия.
Теперь рассмотрим, как будет работать (выполняться) фрагмент приведённой выше программы:
1. нц для I от 1 до 2 – этой записью (строкой) организован цикл по переменной I, которая при первом проходе (выполнении) цикла принимает значение 1, цикл будет работать 2 раза, так как окончанием цикла является 2, или I=2
2. нц для J от 1 до 2 — этой записью организован ещё один, аналогичный предыдущему, цикл по переменной J, принимающей такие же значения (1 и 2). Циклы вложенные, это значит, что внутри первого цикла будет выполняться второй цикл. Аналогично, при первом проходе (выполнении) второго цикла J=1, а при втором J=2.
3. Третьей строкой фрагмента программы проверяется условие если А(I,J)<B, т.е. проверяется значение элемента массива АI,J, т.е. А1,1 (так как I=1 и J=1). Значение элемента массива А1,1=6 , а В=10, т.е. условие будет истинным (т.е. выполняется, ведь 6<10).
4. Следующей строкой фрагмента программы выполняется действие то В= А(I,J) (или операция присваивания), но только в том случае, если условие, записанное в предыдущей строке, будет истинным, в противном случае эта строка выполняться не будет (игнорируется), а программа сразу переходит (перескакивает) на следующую строку. Так как в нашем случае условие выполняется, то и данная строка выполниться, т.е. в переменную В будет записано значение элемента массива А1,1 =6, таким образом В тоже будет равно 6 (В=6).
5. Следующей строкой программы записано окончание условия всё.
6. Следующей строкой программы записано окончание второго цикла по J — кц .
7. Следующей строкой программы записано окончание первого цикла по I — кц .
Теперь рассмотрим работу всего фрагмента программы полностью, и определим значения, которые примут переменные, описанные в этом фрагменте.
На этом работа программы будет закончена. Значение переменной В=6, т.е. будет найден самый маленький элемент массива.
В результате выполнения фрагмента блок-схемы алгоритма значения переменных X и Y примут значения?

1. Первым действием фрагмента алгоритма будет операция присваивания Х=0, т.е. в переменную с именем Х будет записано значение 0.
2. Вторым действием фрагмента алгоритма будет также операция присваивания Y=0, т.е. в переменную с именем Y будет записано значение 0.
3. Третьим действием фрагмента алгоритма будет проверка условия X>=Y. Если условие будет выполнено, т.е. значение, записанное в переменной Х, будет больше или равно значению, записанному в переменной Y, то в этом случае произойдёт переход к следующему действию. Если условие не выполниться, то будут выведены значения, записанные в переменных X и Y, и работа программы будет завершена.
4. Четвёртым действием будет проверка ещё одного условия Х<=4. Если условие будет выполнено, т.е. значение, записанное в переменной Х, будет меньше или рано 4, то в этом случае произойдёт переход к следующему действию, если условие не выполниться, то будут выведены значения, записанные в переменных X и Y, и работа программы будет завершена.
5. Пятым действием будет выполнено сложение значения записанного в переменной Х и 1 и результат будет записан в переменную Х (Х=Х+1). Т.о. значение переменной Х будет увеличено на 1.
6. Шестым действием будет расчёт значения Y = X*X/2, т.е. в переменную Y будет записано значение Х, умноженное на это же значение и делёное на 2.
7. Последним действием будет переход (возврат) программы с новыми (рассчитанными в пунктах 5 и 6) значениями Х и Y к третьему действию (пункту) фрагмента алгоритма. Т.е. будет выполнен фрагмент алгоритма с пункта 3 повторно. И так будет происходить до тех пор, пока условия в пункте 3 и 4 будут выполняться (истинными). Как только условие в пункте 3 или 4 станет ложным, то будут выведены значения, записанные в переменных X и Y, и работа программы будет завершена.
Теперь, зная схему решения алгоритма, решим его с имеющимися у нас исходными значениями Х=0 и Y=0.
При первом проходе:
3. X>=Y или 0=0 → условие выполняется;
4. Х<=4 или 0<4 → условие выполняется;
5. Х=Х+1 или X=0+1=1, т.е. Х=1;
6. Y=X*X/2 или Y=1*1/2, т.е. У=0,5
7. Возврат к пункту 3
3. X>=Y или 1>0,5 → условие выполняется;
4. Х<=4 или 1<4 → условие выполняется;
5. Х=Х+1 или X=1+1=2, т.е. Х=2;
6. Y=X*X/2 – Y=2*2/2, т.е. У=2
7. Возврат к пункту 3
3. X>=Y или 2=2 → условие выполняется;
4. Х<=4 или 2<4 → условие выполняется;
5. Х=Х+1 или X=2+1=3, т.е. Х=3;
6. Y=X*X/2 или Y=3*3/2, т.е. У=4,5
7. Возврат к пункту 3
3. X>=Y или 3<4,5 → условие не выполняется;
4. Вывод значений Х=3 и Y=4,5 и завершение программы
Если элементы массива D[1…5] равны соответственно 4,1,5,3,2, то значение выражения D[D[4]]-D[D[5]] равно :
1. В квадратных скобках записывается индекс (номер) элемента массива, под каждым номером элемента массива записываются различные значения. Таким образом, получаем:
2. Подставим найденные значения D[4] и D[5] в формулу:
3. Теперь подставим в формулу D[3]-D[2] значения элементов массива 5-1=4
Примеры для повторения №5:
5.1. Укажите пропущенный фрагмент в алгоритме, определяющем количество чётных элементов в массиве А[1:N]. Операторы: DIV – деление нацело, MOD – остаток от деления.
нц дляJот 1 доN
если __________
Всё
5.2. Дан фрагмент алгоритма, в котором обрабатывается массив А:(2,12,0,-3,0). Укажите значение переменной Y после окончания работы фрагмента алгоритма.
нцдля Кот 1 до 5
Всё
Укажите значение Y:
5.3. В результате выполнения фрагмента алгоритма значение переменной b будет равно?

5.4. Дана блок-схема алгоритма

Определить результат выполнения алгоритма при определённых значениях исходных данных: A=7; B=8; C=9
Что определяет фрагмент программы
Real (занимает 6 байт, диапазон от 2.9E-39 до 1.7E+38 по модулю, точность 11-12 значащих цифр) основной тип
Как видите, один оператор Write может выводить сразу несколько элементов. Элементы нужно отделять друг от друга запятыми. В этом примере — три элемента:
1)текст ‘Это’
2)выражение 4+4
3)текст ‘кошек’ .
Все элементы выводятся в одну строку вплотную друг к другу. Если вся информация, выводимая оператором Write, не умещается в одну строку, то не уместившаяся часть автоматически выводится с начала следующей строки.
Самое трудное для новичка — не путать запятые и кавычки, находить элементы и отличать текстовые элементы от чисел и выражений. Совет : сначала найдите внутри скобок запятые. Теперь, чтобы отличить текстовые элементы от прочих, обратим внимание, что они заключены в кавычки.
Как видите, результат не зависит от количества пробелов (пропусков, пустых мест) снаружи от текстовых элементов, взятых в кавычки. Но пробелы, встретившиеся внутри кавычек, отображаются на экране: