Как составить трассировочную таблицу паскаль

Создание трассировочной таблицы

Алекс



Ученик

(88),
закрыт



7 лет назад

Помогите пожалуйста разобраться, как составляются трассировочные таблицы при решении задач в Turbo Pascal на циклы (while и for). А то я что-то совсем не понимаю в этом, программки вроде как могу писать, а вот решение студенческих задач не могу делать. . Представьте мне какую-нибудь задачу на циклы, а затем внизу напишите трассировочную таблицу, как вы это делали. Очень нужна ваша помощь. Заранее за помощь.

Дополнен 12 лет назад

P.S. У меня даны задачи, которые нужно найти (например, в таком духе: чему равна переменная s или сколько раз выполниться цикл) . Компьютером пользоваться нельзя. Т. е вариант один – эта трассировочная таблица, которую нужно составлять для помощи самому себе. Может кто может помочь?

Алексей Арыков

Мудрец

(13103)


12 лет назад

трассировочная таблица – это вывод значений цикла на каждом шаге.. .

for i := 1 to 100 do
begin

writeln(i,’ ‘,res1[ i ],’ ‘,res2[ i ],’ ‘, sum);
end;

n/е. на каждом шаге выводишь текущий значения переменных, которые используешь, например “текущая сумма”, “текущий элемент массива” и т. д.

ЕВА ЕВА

Знаток

(339)


6 лет назад

помогите пожалуйста закончить программу к заданию
А вот и программа
var
S,i, N: integer;
begin
read(N);
s:=1;
for i := 2 to n do
s:=s+i;
writeln(S);
end.

§ 7. Запись алгоритмов на языках программирования

Информатика. 11 класса. Босова Л.Л. Оглавление


Язык программирования

Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ.

Компьютерную программу можно считать последовательностью строк символов некоторого алфавита. Современные системы программирования допускают использование визуальных элементов (окон, иконок и др.) для построения программ, в частности для создания интерфейса пользователя. Такое программирование называют визуальным. Тем не менее основная, алгоритмическая часть любой программы строится с использованием символьных средств.

В основной школе вы познакомились со школьным алгоритмическим языком КуМир и языком программирования Pascal (Паскаль). В 11 классе мы продолжим работать с языком Pascal.

Желательно установить среду программирования на ваш домашний компьютер.

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

Запись алгоритмов на языках программирования

7.1. Структурная организация данных

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

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

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

Различают простые и сложные структуры данных.

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

В языках программирования понятие «структуры данных» тесно связано с понятием «типы данных». Любые данные, т. е. константы, переменные, значения функций или выражения, характеризуются своими типами. Информация по каждому типу однозначно определяет:

1) множество допустимых значений, которые может иметь тот или иной объект описываемого типа;
2) множество допустимых операций, которые применимы к объекту описываемого типа;
3) объём выделенной памяти для хранения данных указанного типа.

Некоторые простые типы данных языка Pascal приведены на рис. 2.10.

Запись алгоритмов на языках программирования

Рис. 2.10. Некоторые простые типы данных языка Pascal

7.2. Некоторые сведения о языке программирования Pascal

Основными элементами языка Pascal являются:

• алфавит языка (латинские буквы, арабские цифры, специальные символы);
• служебные слова, значение которых в языке программирования строго определено;
• постоянные и переменные величины;
• знаки операций (табл. 2.2);
• стандартные функции;
• выражения;
• операторы (языковые конструкции, с помощью которых в программах записываются действия, выполняемые над данными в процессе решения задачи).

Все величины имеют имена (идентификаторы), формируемые по определённым правилам:

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

Таблица 2.2

Операции в языке Pascal

Запись алгоритмов на языках программирования

Выражение — это формула, по которой вычисляется значение. Выражение может состоять из операндов (констант, переменных, стандартных функций), знаков операций и круглых скобок. Выражения записываются в строку; знаки операций не пропускаются. Порядок выполнения операций определяется скобками и приоритетом операций (табл. 2.3). Операции одинакового приоритета выполняются слева направо, если порядок выполнения не задан явно круглыми скобками. Вычисление выражения с вложенными скобками начинается с внутренних скобок.

Таблица 2.3

Приоритет операций в языке Pascal

Запись алгоритмов на языках программирования

Программа на языке Pascal имеет следующую структуру:

Запись алгоритмов на языках программирования

Обязательными в ней являются два раздела: описания данных и описания действий, которые над этими данными необходимо выполнить.

Данные, обрабатываемые компьютером, хранятся в памяти. С точки зрения языка Pascal она разделена на секции, называемые переменными. Каждая переменная имеет имя, тип и значение; значения переменных могут меняться в ходе выполнения программы.

Блок описания действий начинается со слова begin, а заканчивается словом end и знаком точки. Действия представляются операторами (табл. 2.4). Операторы языка Pascal разделяются точкой с запятой. Операторы бывают простые и составные (заключённые в операторные скобки begin … end).

Таблица 2.4

Основные операторы языка Pascal

Запись алгоритмов на языках программирования

Пример 1. В начале этой главы мы обсуждали алгоритмы нахождения простых чисел. Напишем программу, проверяющую, является ли заданное натуральное число п простым.

Самый простой путь решения этой задачи — проверить, имеет ли данное число n (n >= 2) делители в интервале [2; n — 1].

Если делители есть, число n — составное, если — нет, то — простое.

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

• если flag = true, то n — простое число;
• если flag = false, то n — составное число (если у числа n есть делители, то «флаг выключаем» с помощью оператора присваивания flag := false).

Запись алгоритмов на языках программирования

В этой программе мы проверяли, нет ли у числа n делителей из интервала [2; n — 1]. Но если п = а • Ь, то меньшее из чисел а, b не больше

Запись алгоритмов на языках программирования

 (в противном случае оба числа были бы больше

Запись алгоритмов на языках программирования

, а следовательно, их произведение было бы больше n). Кроме того, из делимости числа n на а автоматически следует, что n делится и на n/а.

Усовершенствуйте приведённую выше программу с учётом этих соображений.

Проверку, является ли заданное натуральное число n >= 2 простым, мы осуществили методом перебора всех возможных его делителей. Метод перебора используется для решения достаточно широкого круга задач.

Пример 2. Применим метод перебора для поиска наибольшего общего делителя (НОД) двух натуральных чисел а и b.

Начнём перебор с d — наименьшего из чисел а и Ь. Это первый, очевидный кандидат на роль их наибольшего общего делителя. И далее, пока не найдём d, на которое оба числа делятся нацело, будем уменьшать его на единицу. Как только такое деление произойдёт, останавливаем уменьшение d. Полученное значение d и будет наибольшим общим делителем чисел а и Ь.

Запись алгоритмов на языках программирования

7.3. Анализ программ с помощью трассировочных таблиц.

Пример 3

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

Используются трассировочные таблицы двух видов:

1) таблицы, каждая строка которых отражает результат одного действия;
2) таблицы, каждая строка которых отражает результат выполнения группы действий.

Пример 3. Определим значения переменных а и b, полученные в результате выполнения следующей программы:

Запись алгоритмов на языках программирования

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

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

Запись алгоритмов на языках программирования

Из таблицы видно, что в результате работы переменные приняли значения: а = 2 и b = 4.

Пример 4. Определим значение переменной s, полученное в результате выполнения следующей программы:

Запись алгоритмов на языках программирования

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

Будем считать, что контрольная точка (КТ) поставлена на строке s := s + d.

Запись алгоритмов на языках программирования

Итак, в результате работы программы переменная приняла значение s = 60.

Каким должно быть значение d, чтобы в результате работы программы переменная приняла значение s = 186? Существует ли такое значение d, что в результате работы программы переменная примет значение s = 212?

Пример 5. Определим значение переменной s, полученное в результате выполнения следующей программы:

Запись алгоритмов на языках программирования

Трассировочная таблица может иметь вид:

Запись алгоритмов на языках программирования

Пример 6. Выясним, для чего предназначена следующая программа:

Запись алгоритмов на языках программирования

Прежде всего, обратим внимание на то, что в ней кроме переменной п целого типа используется строка nd, для которой символ « + » обозначает операцию сцепления строк. Начальное значение n вводится с клавиатуры, поэтому зададим его по своему усмотрению, например n = 12.

Запись алгоритмов на языках программирования

Выполните программу для n = 25. Какую задачу, по вашему мнению, решает эта программа?

Функциональный подход к анализу программ

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

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

При изменении в изучаемой программе каких-либо параметров в связи с происходящим процессом в «черном ящике» меняется ее состояние, в том числе взаимосвязи с внешней средой. Зная принципы происходящих в программе процессов, можно исследовать саму программу и получить новые знания. Например, собрав информацию о сбоях и отказах компьютерной сети предприятия, не вникая в сущность происходящих в ней процессов, можно дать их прогноз.

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

Трассировка алгоритма

Рассмотрим последовательность выполнения четырех команд присваивания, в которых участвуют две переменные а и b. В приведенной ниже таблице против каждой команды указываются значения переменных, которые устанавливаются после ее выполнения. Такая таблица называется трассировочной таблицей, а процесс ее заполнения называется трассировкой алгоритма. Компьютер выполняет команды в порядке их записи в алгоритме.

Запись алгоритмов на языках программирования

Прочерк в таблице обозначает неопределенное значение переменной. Конечные значения, которые получают переменные а и b, соответственно равны 2 и 4.

Этот пример иллюстрирует три основных свойства присваивания. Вот эти свойства:

1) пока переменной не присвоено значения, она остается неопределенной;
2) значение, присвоенное переменной, сохраняется вплоть до выполнения следующего присваивания этой переменной нового значения;
3) новое значение, присвоенное переменной, заменяет ее предыдущее значение.

7.4. Другие приёмы анализа программ.

Пример 7

Трассировочная таблица — наглядный, но не универсальный инструмент анализа программ. Например, её затруднительно строить, если в алгоритме много шагов.

Пример 7. Требуется выяснить, какое число будет напечатано в результате выполнения следующей программы:

Запись алгоритмов на языках программирования

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

1. Выясним, какую функцию выполняет каждая из переменных, задействованных в программе. Начальное значение переменной s = 400. При каждом выполнении тела цикла к значению s прибавляется число 12. Начальное значение переменной n = 0. При каждом выполнении тела цикла значение переменной увеличивается на 2: n — 2, если тело цикла выполнено 1 раз; n = 4 — если 2 раза; n = 6 — если 3 раза и т. д. Таким образом, искомое значение n — это 2 • k, где k — число выполнений тела цикла.

2. Выясним, при каком условии произойдёт выход из цикла. Цикл выполняется, пока s < 2992. Следовательно, цикл завершится при достижении s значения, равного или большего 2992.

3. Выясним, сколько раз выполнится тело цикла, вычислив значение выражения: (2992 — 400)/12 = 216. После того как тело цикла выполнится 216 раз, значение переменной s будет равно 2992, что является условием выхода из цикла. При этом n = 2 • 216 = 432.

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

1) s < 2990;

2) s <= 2992;

3) s <= 300.

Пример 8. Получив на вход некоторое натуральное число х, эта программа выводит два числа — m и n.

Запись алгоритмов на языках программирования

Известно, что при некотором значении х были выведены числа 5 и 25. Выясним, сколько существует разных значений х, при вводе которых может быть получен такой результат.

Выясним, какие именно данные накапливаются в переменных.

Начальное значение переменной х задаётся пользователем. Тип этой переменной integer, следовательно, она не может превышать 32 767. В цикле значение переменной х изменяется по правилу, заданному командой:

х:=х div 10

При таком преобразовании значение переменной х уменьшается в 10 раз и дробная часть результата отбрасывается. Можно сказать, что при каждом выполнении тела цикла от значения переменной х «отсекается» одна цифра справа.

Начальное значение переменной m = 0. При каждом выполнении цикла значение переменной m увеличивается на единицу. Можно сказать, что в m подсчитывается количество цифр, «отсечённых» от х.

Начальное значение переменной n = 1. В цикле значение переменной n изменяется по правилу, заданному командой:

n: =n*(х mod 10)

Здесь х mod 10 — не что иное, как последняя цифра числа х. Таким образом, в переменной n накапливается произведение цифр числа х, взятых справа налево.

Выход из цикла осуществляется при х <= 0, т. е. когда все значащие цифры этого числа будут рассмотрены.

Следовательно, если на экран первой выводится цифра 5, то исходное число пятизначное. Второе число указывает на то, что 25 — это произведение всех цифр исходного числа х.

Рассмотрим варианты пятизначных чисел, произведение цифр которых равно 25. Например, 11551, 51151 и т. д. Очевидно, в записи любого из таких чисел должны быть две пятёрки и три единицы. Применение известной вам формулы из комбинаторики позволяет вычислить количество разных чисел, удовлетворяющих такому условию, — это 10.

О какой формуле идёт речь? Приведите эту формулу и выполните соответствующие вычисления.

Укажите наибольшее и наименьшее числа, удовлетворяющие условию задачи.

Выпишите все числа, удовлетворяющие условию задачи.


САМОЕ ГЛАВНОЕ

Компьютерную программу можно считать последовательностью строк символов некоторого алфавита. Современные системы программирования и языки допускают использование визуальных элементов (окон, иконок и др.) для построения программ, в частности для создания интерфейса пользователя. Тем не менее основная, алгоритмическая, часть любой программы строится с использованием символьных средств.

В основной школе вы познакомились со школьным алгоритмическим языком КуМир и языком программирования Pascal (Паскаль). В 11 классе мы продолжаем работать с языком Pascal.

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

Различают простые и сложные структуры данных. Простые структуры данных не могут быть разделены на составные части больше, чем бит. К ним относятся числовые, символьные, логические и другие данные. Простые структуры данных служат основой для построения сложных структур данных — массивов, списков, графов, деревьев и др.

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

1) таблицы, каждая строка которых отражает результат одного действия;
2) таблицы, каждая строка которых отражает результат выполнения группы действий.


Вопросы и задания

1. Что такое язык программирования? Опишите состав и интерфейс среды разработки программ на используемом вами языке программирования.

2. Приведите примеры структур данных, используемых в языке программирования Pascal.

3. Кратко охарактеризуйте основные элементы языка программирования Pascal.

4. Опишите структуру программы на языке Pascal.

5. Для чего предназначены трассировочные таблицы?

6. Вещественные числа х, у, z являются исходными данными для следующего алгоритма:

7. Определите значение переменной n, которое будет получено в результате выполнения следующей программы:

8. Определите значение переменной s, которое будет получено в результате выполнения следующей программы:

9. Требуется выяснить, какое число будет выведено в результате выполнения следующей программы:

10. Получив на вход число х, приведённая ниже программа выводит два числа — m и n.

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

12. Напишите программу, подсчитывающую сумму квадратов всех чисел от 1 до n.

13. Напишите программу, позволяющую определить, входит ли заданная цифра в некоторое целое неотрицательное число.

14. Разработайте программу перевода десятичного натурального числа n в троичную систему счисления.

15. Разработайте программу, которая выводит сообщение «Да», если точка с координатами (х, у) принадлежит закрашенной области, и «Нет» в противном случае.

16. Шифр кодового замка является двузначным числом. Буратино забыл код, но помнит, что сумма цифр этого числа, сложенная с их произведением, равна самому числу. Напишите все возможные варианты кода, чтобы Буратино смог быстрее открыть замок. Решите задачу методом перебора.


§ 6. Алгоритмические структуры
§ 7. Запись алгоритмов на языках программирования
§ 8. Структурированные типы данных. Массивы


Теория

Второй вид циклов, используемых в Pascal – это цикл с предусловием.

Форма записи:

While условие do оператор;

Пока условие истинно, выполняется оператор (или несколько), как только условие станет ложным, произойдет выход из цикла.

Условие проверяется в начале, перед циклом поэтому, если условие сразу же ложно, то цикл не повторяется ни разу.

После do ставить точку с запятой нельзя!

Если в теле цикла несколько операторов, то необходимо их заключить в операторные скобки begin … end

While условие do begin

оператор 1;

оператор 2;

end;

Переменные, участвующие в записи условия, должны изменяться в теле цикла, иначе может произойти зацикливание!

Задание 1. Какое значение примет переменная x в результате выполнения следующих фрагментов программ?

1) x:=1;

while x<10 do

x:=x+3;

x:=x+1;

В теле цикла только один оператор, так как нет скобок begin end. Построим трассировочную таблицу.

Ответ: x=11

2) x:=1;

while x<10 do begin

x:=x+3;

x:=x+1;

end;

В теле цикла только два оператора, так как есть скобки begin end. Построим трассировочную таблицу.

Ответ: x=13

3) x:=1;

while x<>1 do begin

x:=x+3;

x:=x+1;

end;

Построим трассировочную таблицу.

Ответ: x=1. Цикл не повторится ни разу, так как условие сразу ложно.

4) x:=50;

while x<100 do

begin

x:=x-10;

end;

Построим трассировочную таблицу.

Ответ: Программа зациклится, так как условие никогда не станет ложно.

Задание 2. Составить программу, вычисляющую сумму натурального ряда чисел от 1 до 100

S = 1+2+3+4+…+100

i 1 2 3 4 100

1 способ: с помощью цикла for

s:=0;

for i:=1 to 100 do s:=s+i;

Параметр i увеличивается автоматически на 1 с каждым шагом.

2 способ: с помощью цикла while

Параметр i необходимо увеличивать на 1 в теле цикла. Также необходимо задать начальное значение параметра

i:=1;

S:=0;

while i<=100 do begin

S:=S+i;

i:=i+1;

end;

Сколько раз выполнится цикл? Для чего необходимо S:=0; i:=1? Что будет, если забудем begin end?

Задание 3. Составить программу для решения следующей задачи: Ввести целое число n с клавиатуры. Подсчитать сумму всех целых чисел от 1 до n с шагом 3.

S = 1+4+7+10+…+n

i = 1 4 7 10

read(n)

i:=1;

S:=0;

while i<=n do begin

S:=S+i;

i:=i+3;

end;

writeln(‘S= ’, S);

Задание 4. Составить программу для решения следующей задачи: Найти наибольший общий делитель NOD по алгоритму Евклида.

Например, NOD(20, 25)= NOD(20, 5)= NOD(15, 5)= NOD(10, 5)= NOD(5, 5)

while m<>n do if m>n then m:=m-n

else n:=n-m;

writeln(‘NOD=’,m)

Задание 5. Составить программу для решения следующей задачи: В первый день пловец проплыл 3 км. В каждый последующий день он проплывал на 10% больше, чем предыдущий.

    • В какой по счету день пловец начнет проплывать более 5 км?

    • К какому дню он суммарно проплывет более 30 км?

var n,s:real;

d:integer;

begin

{найдем в какой день пловец начнет проплывать более 5 км}

n:=3; {количество км.}

d:=1; {количество дней}

while n<=5 do

begin

n:=n+0.1*n;

d:=d+1;

end;

writeln(‘дней – ‘, d);

{найдем к какому дню он суммарно проплывет более 30 км?}

n:=3; s:=3;d:=1;

while s<=30 do

begin

n:=n+0.1*n;

s:=s+n;

d:=d+1;

end;

writeln(‘дней – ‘,d);

end.

ЗАПИСЬ АЛГОРИТМОВ НА ЯЗЫКАХ ПРОГРАММИРОВАНИЯ ОСНОВНЫЕ СВЕДЕНИЯ ОБ АЛГОРИТМАХ

ЗАПИСЬ АЛГОРИТМОВ НА ЯЗЫКАХ ПРОГРАММИРОВАНИЯ

ОСНОВНЫЕ СВЕДЕНИЯ ОБ АЛГОРИТМАХ

языки программирования данные структура данных идентификаторы операторы трассировочные таблицы

  • языки программирования
  • данные
  • структура данных
  • идентификаторы
  • операторы
  • трассировочные таблицы

Язык программирования Язык программирования – формальная знаковая система, предназначенная для записи компьютерных программ. Компьютерную программу можно считать последовательностью строк символов некоторого алфавита. Современные системы програм-мирования допускают использование визуальных элементов (окон, иконок и др.) для построения программ, в частности, для создания интерфейса пользователя. Такое программирование называют визуальным . Тем не менее, основная, алгоритмическая часть любой программы строится с использованием символьных средств. PascalABC.NET КуМир

Язык программирования

Язык программирования – формальная знаковая система, предназначенная для записи компьютерных программ.

Компьютерную программу можно считать последовательностью строк символов некоторого алфавита. Современные системы програм-мирования допускают использование визуальных элементов (окон, иконок и др.) для построения программ, в частности, для создания интерфейса пользователя. Такое программирование называют визуальным . Тем не менее, основная, алгоритмическая часть любой программы строится с использованием символьных средств.

PascalABC.NET

КуМир

 Структурная организация данных Информация, представленная в виде, пригодном для автоматизирован-ной обработки, называется данными . Компьютер оперирует только одним видом данных – отдельными битами, или двоичными цифрами. Под структурой данных в общем случае понимают множество эле­ментов данных и множество связей между ними. ! Различают простые и сложные структуры данных. На основе простых структур строятся сложные структуры данных : массивы, списки, графы, деревья и др. Простые структуры данных не могут быть разделены на составные части больше, чем бит. К ним относятся: числовые, символьные, логические и др.

 Структурная организация данных

Информация, представленная в виде, пригодном для автоматизирован-ной обработки, называется данными .

Компьютер оперирует только одним видом данных – отдельными битами, или двоичными цифрами.

Под структурой данных в общем случае понимают множество эле­ментов данных и множество связей между ними.

!

Различают простые и сложные структуры данных.

На основе простых структур строятся сложные структуры данных :

  • массивы,
  • списки,
  • графы,
  • деревья и др.

Простые структуры данных не могут быть разделены на составные части больше, чем бит.

К ним относятся:

  • числовые,
  • символьные,
  • логические и др.

Некоторые простые типы данных Некоторые простые типы данных логический числовые Boolean (1 байт) символьный Char (1 байт) целые Integer вещественные Real (8 байт) Информация по каждому типу однозначно определяет: множество допустимых значений, которые может иметь тот или иной объект описываемого типа; множество допустимых операций, которые применимы к объекту описываемого типа; объём выделенной памяти для хранения данных указанного типа Комментарии Типы данных и, отводимое под них место, могут различаться в разных версиях Паскаля

Некоторые простые типы данных

Некоторые простые типы данных

логический

числовые

Boolean (1 байт)

символьный

Char (1 байт)

целые

Integer

вещественные

Real (8 байт)

Информация по каждому типу однозначно определяет:

  • множество допустимых значений, которые может иметь тот или иной объект описываемого типа;
  • множество допустимых операций, которые применимы к объекту описываемого типа;
  • объём выделенной памяти для хранения данных указанного типа

Комментарии

Типы данных и, отводимое под них место, могут различаться в разных версиях Паскаля

Основные элементы языка Pascal алфавит языка: латинские буквы; арабские цифры; специальные символы; латинские буквы; арабские цифры; специальные символы; служебные слова, значение которых в языке программирования строго определено; постоянные и переменные величины; знаки операций; стандартные функции; выражения; операторы (языковые конструкции, с помощью которых в программах записываются действия, выполняемые над данными в процессе решения задачи)

Основные элементы языка Pascal

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

Идентификаторы Все величины имеют имена ( идентификаторы ), формируемые по определённым правилам: имя может состоять из буквы или последовательности букв латин­ского алфавита, цифр и символа подчёркивания, но начинаться такая последовательность должна с буквы или символа подчёр­кивания; желательно, чтобы имя отражало смысл величины; имя не должно совпадать ни с одним из зарезервированных слов. ! 12N N12 Summa X Summa_X Факториал Factorial Program MyProgram

Идентификаторы

Все величины имеют имена ( идентификаторы ), формируемые по определённым правилам:

  • имя может состоять из буквы или последовательности букв латин­ского алфавита, цифр и символа подчёркивания, но начинаться такая последовательность должна с буквы или символа подчёр­кивания;
  • желательно, чтобы имя отражало смысл величины;
  • имя не должно совпадать ни с одним из зарезервированных слов.

!

12N

N12

Summa X

Summa_X

Факториал

Factorial

Program

MyProgram

меньше умножение div деление больше целочисленное деление = меньше или равно mod остаток от целочисленного деления больше или равно Логические операции Приоритет операций 1 not 2 and not логическое отрицание *, /, div, mod, and 3 or логическое И 4 xor логическое ИЛИ +, –, or, xor =, , , =, исключающее ИЛИ ” width=”640″

Операции в языке Pascal

Операции отношений

Арифметические операции

=

+

равно

сложение

вычитание

не равно

*

/

меньше

умножение

div

деление

больше

целочисленное деление

=

меньше или равно

mod

остаток от целочисленного деления

больше или равно

Логические операции

Приоритет операций

1

not

2

and

not

логическое отрицание

*, /, div, mod, and

3

or

логическое И

4

xor

логическое ИЛИ

+, –, or, xor

=, , , =,

исключающее ИЛИ

; begin ; end. Заголовок программы Блок описания данных Блок описания действий (программный блок) Данные, обрабатываемые компьютером, хранятся в памяти. С точки зрения языка Pascal она разделена на секции, называемые переменными . Каждая переменная имеет имя, тип и значение; значения переменных могут меняться в ходе выполнения программы. Блок описания действий начинается со слова begin , а заканчивается словом end и знаком точки. Действия представляются операторами . Операторы разделяются точкой с запятой. Комментарии Текст появляется ” width=”640″

Структура программы

program ;

var ;

const ;

begin

;

end.

Заголовок программы

Блок описания данных

Блок описания действий (программный блок)

Данные, обрабатываемые компьютером, хранятся в памяти. С точки зрения языка Pascal она разделена на секции, называемые переменными . Каждая переменная имеет имя, тип и значение; значения переменных могут меняться в ходе выполнения программы.

Блок описания действий начинается со слова begin , а заканчивается словом end и знаком точки. Действия представляются операторами . Операторы разделяются точкой с запятой.

Комментарии

Текст появляется

Основные операторы языка Pascal Название Общий вид Присваивание Имя переменной :=  Значение Ввод с клавиатуры readln ( список ввода ) Вывод на экран writeln ( список вывода ) Условный If  Условие  then  Оператор1 Цикл с предусловием Цикл с постусловием  else  Оператор2 while Условие  do Тело цикла repeat Цикл с параметром  с шагом +1  Тело цикла for  Переменная  :=  Нач_знач   to  Кон_знач  do  Тело цикла Цикл с параметром  с шагом –1 until  Условие for  Переменная  :=  Нач_знач  downto  Кон_знач  do  Тело цикла

Основные операторы языка Pascal

Название

Общий вид

Присваивание

Имя переменной := Значение

Ввод с клавиатуры

readln ( список ввода )

Вывод на экран

writeln ( список вывода )

Условный

If Условие then Оператор1

Цикл с предусловием

Цикл с постусловием

else Оператор2

while Условие do Тело цикла

repeat

Цикл с параметром с шагом +1

Тело цикла

for Переменная := Нач_знач to Кон_знач do Тело цикла

Цикл с параметром с шагом –1

until Условие

for Переменная := Нач_знач downto Кон_знач do Тело цикла

Анализ программ. Трассировочные таблицы Для анализа свойств алгоритма и проверки его соответствия решаемой задаче используются трассировочные таблицы . В них фиксируется пошаговое исполнение алгоритма (программы), что позволяет наглядно представлять значения переменных, изменяющиеся при его выполнении. Поэтому трассировочные таблицы иначе называют таблицами значений . Используются трассировочные таблицы двух видов: 2 1  таблицы, каждая строка которых отражает результат выполнения группы действий таблицы, каждая строка которых отражает результат одного  действия Комментарии Кнопки «Далее» - переходы на два скрытых слайда с примерами трассировочных таблиц (выбирается на усмотрение учителя) Пробел / щелчок на поле – переход на 14-й слайд

Анализ программ. Трассировочные таблицы

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

Используются трассировочные таблицы двух видов:

2

1

таблицы, каждая строка которых отражает результат выполнения группы действий

таблицы, каждая строка которых отражает результат одного действия

Комментарии

Кнопки «Далее» – переходы на два скрытых слайда с примерами трассировочных таблиц (выбирается на усмотрение учителя)

Пробел / щелчок на поле – переход на 14-й слайд

0 do begin Y := Y * 10 + X mod 10; Команда или условие X := X div 10 Y X № end ; writeln (Y) end. Составить трассировочную таблицу при Х = 356 . 356 356 readln (X) 1 0 2 Y := 0 0 В заголовке таблицы поместим имена всех переменных, используемых в программе. В отдельном столбце будем записывать команды и условия, имеющиеся в программе. Каждая строка таблицы соответствует одному шагу алгоритма. да X 0 3 program Number; var X, Y: longint; begin readln(X); Y := 0; while X 0 do begin Y := Y * 10 + X mod 10; X := X div 10 end ; writeln (Y) end. 6 4 6 Y := Y*10 + X mod 10 35 35 X := X div 10 5 да 6 X 0 65 7 65 Y := Y*10 + X mod 10 3 8 X := X div 10 3 да 9 X 0 653 653 10 Y := Y*10 + X mod 10 0 0 11 X := X div 10 нет X 0 12 13 writeln (Y) ” width=”640″

Трассировочная таблица первого вида

Пример 1. Дана программа:

Значение выражения

program Number;

var X, Y: longint;

begin

readln(X);

Y := 0;

while X 0 do

begin

Y := Y * 10 + X mod 10;

Команда или условие

X := X div 10

Y

X

end ;

writeln (Y)

end.

Составить трассировочную таблицу при Х = 356 .

356

356

readln (X)

1

0

2

Y := 0

0

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

да

X 0

3

program Number;

var X, Y: longint;

begin

readln(X);

Y := 0;

while X 0 do

begin

Y := Y * 10 + X mod 10;

X := X div 10

end ;

writeln (Y)

end.

6

4

6

Y := Y*10 + X mod 10

35

35

X := X div 10

5

да

6

X 0

65

7

65

Y := Y*10 + X mod 10

3

8

X := X div 10

3

да

9

X 0

653

653

10

Y := Y*10 + X mod 10

0

0

11

X := X div 10

нет

X 0

12

13

writeln (Y)

Трассировочная таблица второго вида Пример 2. Дана программа: program Summa;  var k, x, S: integer; begin  S := 0;  for k := 0 to 4 do  begin  x := k * 3 + 2;  S := S + x  end ;  writeln (S) end.  Определите, что будет напечатано в результате выполнения программы. Результат в КТ x k S – 0 – Начальные значения 0 2 2 1 Построим трассировочную таблицу второго вида, отражая в каждой строке результат группы действий. Группу действий ограничим контрольной точкой ( КТ ): выполнение алгоритма продолжается до контрольной точки и приостанавливается после выполнения отмеченной ею строки. Будем считать, что контрольная точка поставлена на заголовке цикла. 1 2 5 7 program Summa;  var k, x, S: integer; begin  S := 0;  for k := 0 to 4 do  begin  x := k * 3 + 2;  S := S + x  end ;  writeln (S) end. 2 3 8 15 3 26 4 11 4 5 14 40 Ответ: S = 40

Трассировочная таблица второго вида

Пример 2. Дана программа:

program Summa;

var k, x, S: integer;

begin

S := 0;

for k := 0 to 4 do

begin

x := k * 3 + 2;

S := S + x

end ;

writeln (S)

end.

Определите, что будет напечатано в результате выполнения программы.

Результат в КТ

x

k

S

0

Начальные значения

0

2

2

1

Построим трассировочную таблицу второго вида, отражая в каждой строке результат группы действий. Группу действий ограничим контрольной точкой ( КТ ): выполнение алгоритма продолжается до контрольной точки и приостанавливается после выполнения отмеченной ею строки.

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

1

2

5

7

program Summa;

var k, x, S: integer;

begin

S := 0;

for k := 0 to 4 do

begin

x := k * 3 + 2;

S := S + x

end ;

writeln (S)

end.

2

3

8

15

3

26

4

11

4

5

14

40

Ответ: S = 40

Другие приёмы анализа программ Решение: Пример 3. Определите, какое число будет напечатано в результате выполнения программы. Выясним, какую функцию выполняет каждая из переменных, задействованных в программе. Начальное значение переменной S = 0 . При каждом выполнении тела цикла S увеличивается на 30 . Таким образом, искомое значение S = 30 ∙ k , где k — число выполнений тела цикла. Начальное значение переменной n = 1 . При каж-дом выполнении тела цикла значение n увеличивается в 5 раз, т.е. n = 5, 25, 125 …, 5 k . var n, s: integer;  begin   n := 1;  s := 0;   while n do  begin   s := s + 30;  n := n * 5   end ;  write(s)  end . var n, S: integer;  begin   n := 1;  S := 0;   while n do  begin   S := S + 30;  n := n * 5   end ;  write(s)  end . Выясним, при каком условии произойдёт выход из цикла. Цикл выполняется, пока n ≤ 625 . Следовательно, цикл завершится при достижении S значения, большего 625 = 5 4 , т.е. при n = 5 5 . Таким образом цикл выполнится 5 раз. Следовательно, S = 30 ∙ 5 =150 . Ответ: S = 150 13

Другие приёмы анализа программ

Решение:

Пример 3. Определите, какое число будет напечатано в результате выполнения программы.

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

Начальное значение переменной S = 0 . При каждом выполнении тела цикла S увеличивается на 30 . Таким образом, искомое значение S = 30k , где k — число выполнений тела цикла.

Начальное значение переменной n = 1 . При каж-дом выполнении тела цикла значение n увеличивается в 5 раз, т.е. n = 5, 25, 125 …, 5 k .

var n, s: integer; begin n := 1; s := 0; while n do begin s := s + 30; n := n * 5 end ; write(s) end .

var n, S: integer; begin n := 1; S := 0; while n do begin S := S + 30; n := n * 5 end ; write(s) end .

Выясним, при каком условии произойдёт выход из цикла. Цикл выполняется, пока n ≤ 625 . Следовательно, цикл завершится при достижении S значения, большего 625 = 5 4 , т.е. при n = 5 5 .

Таким образом цикл выполнится 5 раз. Следовательно, S = 30 ∙ 5 =150 .

Ответ: S = 150

13

Компьютерную программу можно считать последовательностью строк символов некоторого алфавита. Современные системы програм-мирования и языки допускают использование визуальных элементов (окон, иконок и др.) для построения программ и создания интерфейса пользователя. Тем не менее, основная, алгоритмическая часть любой программы строится с использованием символьных средств. Компьютер оперирует только одним видом данных – отдельными битами, или двоичными цифрами. Задачи, решаемые с помощью компьютера, оперируют данными, имеющими форму чисел, символов, текстов и более сложных структур. Алгоритмы для обработки этих данных создаются с учётом их структуры – множества элементов данных и множества связей между ними.

Компьютерную программу можно считать последовательностью строк символов некоторого алфавита. Современные системы програм-мирования и языки допускают использование визуальных элементов (окон, иконок и др.) для построения программ и создания интерфейса пользователя. Тем не менее, основная, алгоритмическая часть любой программы строится с использованием символьных средств.

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

Различают простые и сложные структуры данных. Простые структуры данных не могут быть разделены на составные части больше, чем бит. К ним относятся числовые, символьные, логические и другие данные. Простые структуры данных служат основой для построения сложных структур данных – массивов, списков, графов, деревьев и др. Для анализа свойств алгоритма и проверки его соответствия решаемой задаче используются трассировочные таблицы. В них фиксируется пошаговое исполнение алгоритма (программы), что позволяет наглядно представлять значения переменных, изменяющиеся при его выполнении. Используются трассировочные таблицы двух видов: таблицы, каждая строка которых отражает результат одного действия; таблицы, каждая строка которых отражает результат выполнения группы действий.

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

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

  • таблицы, каждая строка которых отражает результат одного действия;
  • таблицы, каждая строка которых отражает результат выполнения группы действий.

0 do begin d := x mod 10; R := 10*R + d; x := x div 10 end ; writeln(R) end . var x, d, R: longint; begin readln(x); R := 0; while x 0 do begin d := x mod 10; R := 10*R + d; x := x div 10 end ; writeln(R) end . Решение: Сложность этого задания состоит в том, чтобы разобраться, что делает программа. Нетрудно заметить, что данная программа «переворачивает» исходное число х . Таким образом, надо найти двузначное число, сумма цифр которого равна 16 : 16 = 7 + 9 16 = 8 + 8 16 = 9 + 7 Наименьшее число: 79 Ответ: 79 Комментарии Задание 20 из Демоверсии ЕГЭ-2017 Ответ 13 ” width=”640″

Вопросы и задания

Задание 1. Ниже дана программа. Получив на вход натуральное число x , программа печатает число R . Укажи-те такое число x , при вводе которого будет напечатано двузначное число, сумма цифр которого равна 16 . Если таких чисел несколько, укажите наименьшее из них.

var x, d, R: longint; begin readln(x); R := 0; while x 0 do begin d := x mod 10; R := 10*R + d; x := x div 10 end ; writeln(R) end .

var x, d, R: longint; begin readln(x); R := 0; while x 0 do begin d := x mod 10; R := 10*R + d; x := x div 10 end ; writeln(R) end .

Решение:

Сложность этого задания состоит в том, чтобы разобраться, что делает программа.

Нетрудно заметить, что данная программа «переворачивает» исходное число х . Таким образом, надо найти двузначное число, сумма цифр которого равна 16 :

16 = 7 + 9

16 = 8 + 8

16 = 9 + 7

Наименьшее число: 79

Ответ: 79

Комментарии

Задание 20 из Демоверсии ЕГЭ-2017

Ответ

13

100 ), программа печатает число M . Укажите наименьшее значение переменой x , при вводе которого алгоритм печатает 26 . var x, L, M: integer; begin readln(x); L := x; M := 52; while L M do if L M then L := L – M else M := M – L; writeln(M) end . var x, L, M: integer; begin readln(x); L := x; M := 52; while L M do if L M then L := L – M else M := M – L; writeln(M) end . Решение: Данная программа реализует алгоритм Евклида для вычисления наибольшего общего делителя двух чисел – НОД ( M , L ). Тогда, по условию задачи НОД ( 52 , х ) = 26 . Отсюда, х = 104, 130, 156 … Наименьшее х = 104, но НОД ( 52 , 104 ) = 52. Следовательно, х = 130 . Ответ: 130 Комментарии Задание 20 из ЕГЭ-2017 Ответ 13 ” width=”640″

Вопросы и задания

Задание 2. Получив на вход натуральное число x ( x 100 ), программа печатает число M . Укажите наименьшее значение переменой x , при вводе которого алгоритм печатает 26 .

var x, L, M: integer; begin readln(x); L := x; M := 52; while L M do if L M then L := L – M else M := M – L; writeln(M) end .

var x, L, M: integer; begin readln(x); L := x; M := 52; while L M do if L M then L := L – M else M := M – L; writeln(M) end .

Решение:

Данная программа реализует алгоритм Евклида для вычисления наибольшего общего делителя двух чисел – НОД ( M , L ).

Тогда, по условию задачи НОД ( 52 , х ) = 26 .

Отсюда, х = 104, 130, 156

Наименьшее х = 104, но НОД ( 52 , 104 ) = 52.

Следовательно, х = 130 .

Ответ: 130

Комментарии

Задание 20 из ЕГЭ-2017

Ответ

13

Вопросы и задания Задание 3. Дана программа. Что будет напечатано после выполнения программы? var k, S: integer;  begin   k := 10;  S := 0;   while k do  begin   S := S + k;  k := k + 5   end ;  write (s)  end .   Решение: Данная программа находит сумму арифметической прогрессии: S = 10 + 15 + 20 + … + 115 . Формула для вычисления суммы первых n членов арифметической прогрессии: В нашем случае: n = ( 115 –10 ) : 5 + 1 = 22 . Тогда: S = ( 10 + 115 ) ∙ 22 / 2 = 1375 . Ответ: 1375 var k, S: integer;  begin   k := 10;  S := 0;   while k do  begin   S := S + k;  k := k + 5   end ;  write (s)  end . Комментарии Задание 8 из ЕГЭ-2017 Ответ 13

Вопросы и задания

Задание 3. Дана программа. Что будет напечатано после выполнения программы?

var k, S: integer; begin k := 10; S := 0; while k do begin S := S + k; k := k + 5 end ; write (s) end .

Решение:

Данная программа находит сумму арифметической прогрессии:

S = 10 + 15 + 20 + … + 115 .

Формула для вычисления суммы первых n членов арифметической прогрессии:

В нашем случае:

n = ( 115 –10 ) : 5 + 1 = 22 .

Тогда:

S = ( 10 + 115 ) ∙ 22 / 2 = 1375 .

Ответ: 1375

var k, S: integer; begin k := 10; S := 0; while k do begin S := S + k; k := k + 5 end ; write (s) end .

Комментарии

Задание 8 из ЕГЭ-2017

Ответ

13

Видеоурок:
Запись алгоритмов на языках программирования.

Язык программирования

Язык программирования – формальная знаковая система, предназначенная для записи компьютерных программ.

Компьютерную программу можно считать последовательностью строк символов некоторого алфавита.
Современные системы программирования допускают использование визуальных элементов (окон, иконок и др.) для построения программ, в частности, для создания интерфейса пользователя. Такое
программирование называют визуальным. Тем не менее, основная, алгоритмическая часть любой программы строится с использованием символьных средств.

Структурная организация данных

Информация, представленная в виде, пригодном для автоматизированной обработки, называется
данными.

Компьютер оперирует только одним видом данных – отдельными битами, или двоичными
цифрами.

Под структурой данных в общем случае понимают множество эле­ментов данных и множество связей
между ними.

Различают простые и сложные структуры данных.

Простые структуры данных не могут быть разделены на составные части больше, чем бит.

К ним относятся:

 числовые,

 символьные,

 логические и др.

На основе простых структур строятся сложные структуры  данных:

 массивы,

 списки,

 графы,

 деревья и др.

Информация по каждому типу однозначно определяет:

  множество допустимых значений, которые может иметь тот или иной объект описываемого типа;

 множество допустимых операций, которые применимы к объекту описываемого типа;

  объём выделенной памяти для хранения данных указанного типа

Основные элементы языка Pascal

  алфавит языка:

ü  латинские буквы;

ü  арабские цифры;

ü  специальные символы;

 служебные слова, значение которых в языке программирования строго определено;

   постоянные и переменные величины;

   знаки операций;

   стандартные функции;

   выражения;

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

Идентификаторы

Все величины имеют имена (идентификаторы), формируемые по определённым правилам:

 имя может состоять из буквы или последовательности букв латинского алфавита, цифр и символа подчёркивания,
но начинаться такая последовательность должна с буквы или символа подчёркивания;

   желательно, чтобы имя отражало смысл величины;

   имя не должно совпадать ни с одним из зарезервированных слов.

Операции в языке
Pascal

Структура программы

Данные, обрабатываемые компьютером, хранятся в памяти. С точки зрения языка Pascal она разделена на секции, называемые
переменными. Каждая переменная имеет имя, тип и значение; значения переменных могут меняться в ходе выполнения программы.

Блок описания действий начинается со слова begin, а заканчивается словом end и знаком точки. Действия
представляются операторами. Операторы разделяются точкой с запятой.

Основные операторы языка Pascal

Анализ программ. Трассировочные таблицы

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

Используются трассировочные таблицы двух видов:

1) Таблицы, каждая строка которых отражает результат одного действия.

2)  Таблицы, каждая строка которых отражает результат выполнения группы действий.

Трассировочная таблица первого вида

Пример 1. Дана программа:

program Number;

   var X, Y: longint;

begin

   readln(X);

   Y := 0;

   while X > 0 do

   begin

       Y
:= Y * 10 + X mod 10;

       X
:= X div 10

   end;

   writeln (Y)

end.

Составить трассировочную таблицу при Х = 356

Решение:

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

Трассировочная таблица второго вида

Пример 2. Дана программа:

program Summa;

   var k, x, S: integer;

begin

   S := 0;

   for k :=  0 to 4 do

   begin

       x := k * 3 + 2;

       S := S + x

   end;

   writeln (S)

end.

Определите, что будет напечатано в результате выполнения программы. 

Решение:

Построим трассировочную таблицу второго вида, отражая в каждой строке результат группы действий. Группу действий ограничим
контрольной точкой (КТ): выполнение алгоритма продолжается до контрольной точки и приостанавливается после выполнения отмеченной ею строки.

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

Ответ: S =
40

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

В качестве примера рассмотрим следующий метод:

Анализ программ методом рассуждений

Пример 3. Определите, какое число
будет напечатано в результате выполнения программы.

var n, s: integer;
begin
  
n := 1;
   s := 0;
   while n <= 625 do
   begin
       
s := s + 30;
        n := n * 5
   end;
   write(s)
end.

Решение:

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

Начальное значение переменной S = 0. При каждом выполнении тела цикла S увеличивается на 30. Таким образом, искомое значение S =
30
* k, где k — число выполнений тела цикла.

Начальное значение переменной n = 1. При каждом выполнении тела цикла значение n увеличивается в 5 раз, т.е. n = 5, 25, 125 …, 5k.

Выясним, при каком условии произойдёт выход из цикла. Цикл выполняется, пока n
625
. Следовательно, цикл завершится при достижении S значения, большего 625 = 54, т.е. при n =
 55.

Таким образом, цикл выполнится 5 раз. Следовательно, S = 30 * 5 =150.

Добавить комментарий