Как составить таблицу трассировки программы

Слайд 1

Линейные вычислительные алгоритмы. Операция п рисваивание. Трассировочная таблица.

Слайд 2

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

Слайд 3

х:= 2 у:=х*х у:=у*у х:=у*х s:= x+y Шаг алгоритма Переменные x y s 1 2 3 4 5 2 2 4 2 32 32 16 16 48 16 – – – – – Вычисления по алгоритму Алгоритм Ответ : s = 48 Прочерк в таблице означает неопределенное значение переменной. Конечные значения, которые получают переменные а и b , соответственно равны 2 и 4 .

Слайд 4

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

Слайд 5

Обмен значениями двух переменных Рассмотрим еще один очень полезный алгоритм, с которым при программировании часто приходится встречаться. Даны две переменные величины: X и Y . Требуется произвести между ними обмен значениями. Например, если первоначально было: X = 1; Y = 2 , то после обмена должно стать: X = 2, Y = 1 . Хорошим аналогом для решения такой задачи является следующая: даны два стакана, в первом — молоко, во втором — вода; требуется произвести обмен их содержимым. Всякому ясно, что в этом случае нужен дополнительный, третий, пустой стакан.

Слайд 6

Последовательность действий будет следующей: 1) перелить из 1-го стакана в 3-й; 2) перелить из 2-го стакана в 1-й; 3) перелить из 3-го стакана во 2-й. Цель достигнута! По аналогии для обмена значениями двух переменных нужна третья дополнительная переменная. Назовем ее Z. Тогда задача решается последовательным выполнением трех операторов присваивания (пусть начальные значения 1 и 2 для переменных X и Y задаются вводом):

Слайд 7

В трассировочной таблице выводимые значения выделены жирным шрифтом. Аналогия со стаканами не совсем точна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания ( Х:=Y ) переменная, стоящая справа ( Y ), сохраняет свое значение. Действительно, в итоге переменные X и Y поменялись значениями. На экран будут выведены значения X и Y: 2,1 .

Слайд 8

Описание линейного вычислительного алгоритма Алгоритмы, результатами выполнения которых являются числовые величины, будем называть вычислительными алгоритмами. Рассмотрим пример решения следующей математической задачи: даны две простые дроби; получить дробь, являющуюся результатом деления одной на другую. В школьном учебнике математики правила деления обыкновенных дробей описаны так: 1. Числитель первой дроби умножить на знаменатель второй. 2. Знаменатель первой дроби умножить на числитель второй. 3. Записать дробь, числителем которой является результат выполнения пункта 1, а знаменателем — результат выполнения пункта 2.

Слайд 9

В алгебраической форме это выглядит следующим образом: Теперь построим алгоритм деления дробей для компьютера. В этом алгоритме сохраним те же обозначения для переменных, которые использованы в записанной выше формуле. Исходными данными являются целочисленные переменные а, b , с, d . Результатом — также целые величины m и n . Ниже алгоритм представлен в двух формах: в виде блок-схемы и на Алгоритмическом языке (АЯ).

Слайд 10

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

Слайд 11

В алгоритме на АЯ строка, стоящая после заголовка алгоритма, называется описанием переменных . Служебное слово цел означает целый тип. Величины этого типа могут иметь только целочисленные значения. Описание переменных имеет вид: <тип переменных> <список переменных> Список переменных включает все переменные величины данного типа, обрабатываемые в алгоритме. В блок-схемах типы переменных не указываются, но подразумеваются. Запись алгоритма на АЯ ближе по форме к языкам программирования, чем блок-схемы.

Слайд 12

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

Слайд 13

Обмен значениями двух переменных можно производить через третью дополнительную переменную . Трассировочная таблица используется для «ручного» исполнения алгоритма с целью его проверки . В алгоритмах на АЯ указываются типы всех переменных . Такое указание называется описанием переменных . Числовые величины, принимающие только целочисленные значения, описываются с помощью служебного слова цел (целый).

Слайд 14

1) A : =1 B: =2 A: =A+B B: =2*A Задание. Постройте трассировочные таблицы для следующих алгоритмов: 2) A : =1 B: =2 C: =A A: =B B: =C 3) A: =1 B: =2 A: =A+B B: =A-B A: =A-B

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

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

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

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

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

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

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

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

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

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

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

 числовые,

 символьные,

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

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

 массивы,

 списки,

 графы,

 деревья и др.

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

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

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

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

Основные элементы языка 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.

§ 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. Структурированные типы данных. Массивы


Презентация на тему: ” 1 Правила заполнения трассировочной таблици. 2 1. Записать алгоритм в левой части. A:=2 B:=3 A:=A*A B:=3*B A:=B+10 B:=A-B.” — Транскрипт:



1


1 Правила заполнения трассировочной таблицы


2


2 1. Записать алгоритм в левой части. A:=2 B:=3 A:=A*A B:=3*B A:=B+10 B:=A-B


3


3 2. Построить таблицу для трассировки. AB A:=2 B:=3 A:=A*A B:=3*B A:=B+10 B:=A-B Количество столбцов в таблице равно количеству переменных используемых в программе в данном примере переменных 2 A и B


4


4 3. Последовательно заполнить трассировочную таблицу. AB A:=2 B:=3 A:=A*A B:=3*B A:=B+10 B:=A-B В каждой строчке выполняется действие указанное в алгоритме. В данном алгоритме присваивание значения переменной.


5


5 3. Последовательно заполнить трассировочную таблицу. AB A:=22- B:=3 A:=A*A B:=3*B A:=B+10 B:=A-B В каждой строчке выполняется действие указанное в алгоритме. В данном алгоритме присваивание значения переменной.


6


6 3. Последовательно заполнить трассировочную таблицу. AB A:=22- B:=323 A:=A*A B:=3*B A:=B+10 B:=A-B В каждой строчке выполняется действие указанное в алгоритме. В данном алгоритме присваивание значения переменной.


7


7 3. Последовательно заполнить трассировочную таблицу. AB A:=22- B:=323 A:=A*A43 B:=3*B A:=B+10 B:=A-B В каждой строчке выполняется действие указанное в алгоритме. В данном алгоритме присваивание значения переменной.


8


8 3. Последовательно заполнить трассировочную таблицу. AB A:=22- B:=323 A:=A*A43 B:=3*B49 A:=B+10 B:=A-B В каждой строчке выполняется действие указанное в алгоритме. В данном алгоритме присваивание значения переменной.


9


9 3. Последовательно заполнить трассировочную таблицу. AB A:=22- B:=323 A:=A*A43 B:=3*B49 A:=B B:=A-B В каждой строчке выполняется действие указанное в алгоритме. В данном алгоритме присваивание значения переменной.


10


10 3. Последовательно заполнить трассировочную таблицу. AB A:=22- B:=323 A:=A*A43 B:=3*B49 A:=B B:=A-B1910 В каждой строчке выполняется действие указанное в алгоритме. В данном алгоритме присваивание значения переменной.


11


11 4. Результат выполнения данного алгоритма. AB A:=22- B:=323 A:=A*A43 B:=3*B49 A:=B B:=A-B1910 В результате выполнения данного алгоритма переменная A = 19, B = 10.


Лабораторная
работа по базовой ЭВМ №8

Студентов
группы №151

7ххх

МК: 1000

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

Адрес: В0

00
– ОМК0

01
– А на левый вход АЛУ

00

00
– 0 на правый вход АЛУ

00
– обратный код не вычислять

00
– А+0

00
– не сдвигать

00
– нет обмена

МК: 4002

0

1

0

0

0

0

0

0

0

0

0

0

0

0

1

0

Адрес:
В1

01
– ОМК1

00

00
– обмена с ВУ нет

00
— ———-||———-00
– C не
менять

00
– N,
Z
не менять

00
– ЭВМ не
останавливать

10
– БР è РД

МК: 0002

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

Адрес:
В2

00
– ОМК0

00
– 0 на левый вход АЛУ

00

00
– 0 на правый вход АЛУ

00
– обратный код не вычислять

00
– 0+0

00
– не сдвигать

10
– Запись в память

МК: 0020

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

Адрес:
В3

00
– ОМК0

00
– 0 на левый вход АЛУ

00

00
– 0 на правый вход АЛУ

00
– обратный код не вычислять

10
– 0&0

00
– не сдвигать

00
– нет обмена

МК: 4035

0

1

0

0

0

0

0

0

0

0

1

1

0

1

0

1

Адрес:
B4

01
– ОМК1

00

00
– Обмен с ВУ не осуществлять

00
– —————-||——————-00
– С не менять

11
– Записать результат в N,
Z

01
– ЭВМ не останавливать

01
– Результат в А

МК:838F

1

0

0

0

0

0

1

1

1

0

0

0

1

1

1

1

АДРЕС:B5

10
– УМК. В однобитовом поле сравнения 0.

00 – Выбранное
поле проверки РС

00
– Выбранный бит проверки (3)h

11
— ——————-||———————10-
Адрес перехода (8F)h

00 —
——————-||———————11 —
——————-||———————11 —
——————-||———————

Тестовая
программа

Адрес

Код команды

Мнемоника

Комментарии

001

Ячейка для сохранения А для
команды 7ххх

005

Ячейка с пересылаемым числом

009

F200

CLA

Очистка Аккумулятора

00A

4005

ADD 05

A + (05) è
A

00B

7001

Новая команда

A è
(01);    0 è A

00C

F000

HLT

Стоп

Трассировочная таблица
(теоретическая)

СчМК
до
выборки

МК

Содержимое регистров
после выборки и исполнения МК

РМК

СК

РА

РК

РД

А

С

БР

N

Z

СчМК

Команда F200 расположенная по адресу 009

00

————-

009

009

F200

F200

0000

0000

1

———

Команда ADD 05 расположенная по адресу 00A

89

————-

00A

005

4005

000A

000А

000А

———-

Команда 7ххх расположенная по адресу 00В

01

0300

00B

005

4005

000A

000A

000B

02

02

4001

00B

00B

4005

000A

000A

000B

03

03

0311

00B

00B

4005

7001

000A

000C

04

04

4004

00C

00B

4005

7001

000A

000C

05

05

0100

00C

00B

4005

7001

000A

7001

06

06

4003

00C

00B

7001

7001

000A

7001

07

07

AFOC

00C

00B

7001

7001

000A

7001

0C

0C

AB1D

00C

00B

7001

7001

000A

7001

1D

1D

EF2D

00C

00B

7001

7001

000A

7001

1E

1E

0100

00C

00B

7001

7001

000A

7001

1F

1F

4001

00C

001

7001

7001

000A

7001

20

20

EE27

00C

001

7001

7001

000A

7001

27

27

0001

00C

001

7001

000A

000A

7001

28

28

AD2B

00C

001

7001

000A

000A

7001

29

29

AC43

00C

001

7001

000A

000A

7001

2A

2A

83B0

00C

001

7001

000A

000A

7001

B0

B0

1000

00C

001

7001

000A

000A

000A

B1

B1

4002

00C

001

7001

000A

000A

000A

B2

B2

0002

00C

001

7001

000A

000A

000A

B3

B3

0020

00C

001

7001

000A

000A

0000

B4

B4

4035

00C

001

7001

000A

0000

0000

1

B5

B5

838F

00C

001

7001

000A

0000

7001

1

8F

8F

8788

00C

001

7001

000A

0000

7001

1

88

88

4008

00C

001

7001

000A

0000

7001

1

89

89

8301

00C

001

7001

000A

0000

7001

1

01

Команда F000 расположенная по адресу 00С

89

————-

00D

00C

F000

F000

0000

F000

1

————

Трассировочная
таблица (экспериментальная)

СчМК
до
выборки

МК

Содержимое регистров
после выборки и исполнения МК

РМК

СК

РА

РК

РД

А

С

БР

N

Z

СчМК

Команда F200 расположенная по адресу 009

00

————-

009

009

F200

F200

0000

0002

1

———

Команда ADD 05 расположенная по адресу 00A

89

————-

00A

005

4005

000A

000А

0000

———-

01

0300

00B

005

4005

000A

000A

0000

02

02

4001

00B

00B

4005

000A

000A

000B

03

03

0311

00B

00B

4005

7001

000A

000C

04

04

4004

00C

00B

4005

7001

000A

000C

05

05

0100

00C

00B

4005

7001

000A

000С

06

06

4003

00C

00B

7001

7001

000A

7001

07

07

AFOC

00C

00B

7001

7001

000A

7001

0C

0C

AB1D

00C

00B

7001

7001

000A

7001

1D

1D

EF2D

00C

00B

7001

7001

000A

7001

1E

1E

0100

00C

00B

7001

7001

000A

7001

1F

1F

4001

00C

001

7001

7001

000A

7001

20

20

EE27

00C

001

7001

7001

000A

7001

27

27

0001

00C

001

7001

000A

000A

0000

28

28

AD2B

00C

001

7001

000A

000A

7001

29

29

AC43

00C

001

7001

000A

000A

7001

2A

2A

83B0

00C

001

7001

000A

000A

7001

B0

B0

1000

00C

001

7001

000A

000A

0800

B1

B1

4002

00C

001

7001

000A

000A

000A

B2

B2

0002

00C

001

7001

000A

000A

0000

B3

B3

0020

00C

001

7001

000A

000A

0000

B4

B4

4035

00C

001

7001

000A

0000

0000

1

B5

B5

838F

00C

001

7001

000A

0000

7001

1

8F

8F

8788

00C

001

7001

000A

0000

0002

1

88

88

4008

00C

001

7001

000A

0000

0002

1

89

89

8301

00C

001

7001

000A

0000

0002

1

01

Команда HLT расположенная по адресу 00С

89

————-

00D

00C

F000

F000

0000

F000

————

Анализ
расхождений таблиц

1.  Теоретически
после выполнения команды F200
в
БР должен был остаться 0, а оказалось 0002.

2.  Теоретически
по команде 0100 содержимое регистра данных должно посылаться в БР, на правый
вход АЛУ. (Команда №05); Но это
не подтверждается  экспериментально.

3.  Теоретически
команда 0001 (чтение из памяти) не должно влиять на содержимое БР). (Команда
№27); Но это
не подтверждается  экспериментально.

4.  Микро
Команда 1000 (№В0) теоретически должна помещать содержимое А т.е. 000А, а на
практике туда было помещено 0800 и нужное значение оказалось там при следующем
шаге.

5.  При
выполнении МК 0002 (РД è
ОП(РА))
БР был обнулён.

6.  При
выполнении МК проверки РС 8788 в БР было записано число 0020.

Программа
и микро программа отладки не потребовали.

Dxxx

МК: B18F

1

0

1

1

0

0

0

1

0

0

0

1

1

1

1

1

Адрес:
D0

10
– УМК.
Поле сравнения = 0.

11
– Проверяемый регистр А.

00
— ————-||————01
– Проверяемый бит №1.

10
– Адрес перехода (8F)h

00
— ————-||————11
— ————-||————11
— ————-||————-

МК: 0100

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

Адрес:
D1

00
– ОМК0

00
– На левый вход АЛУ 0

00

01
— На левый вход АЛУ РД

00
– Обратный код не вычислять.

00
– Операция 0+РД

00
– не сдвигать

00
– Обмен с памятью не осуществлять

МК: 4004

0

1

0

0

0

0

0

0

0

0

0

0

0

1

0

0

Адрес:
D2

01
– ОМК1

00

00
– Обмен
с ВУ не осуществлять

00
— ———————||—————00
– С не менять

00
– N,Z
не
менять

00
– ЭВМ не останавливать

00
– Переслать в СК

МК:838F

1

0

0

0

0

0

1

1

1

0

0

0

1

1

1

1

АДРЕС:B5

10
– УМК. В однобитовом поле сравнения 0.

00 – Выбранное
поле проверки РС

00
– Выбранный бит проверки (3)h

11
— ——————-||———————10-
Адрес перехода (8F)h

00 —
——————-||———————11 —
——————-||———————11 —
——————-||———————

Тестовая
программа

Адрес

Код команды

Мнемоника

Комментарии

001

Ячейка для сохранения А для
команды Dххх

005

Ячейка с пересылаемым числом

009

F200

CLA

Очистка Аккумулятора

00A

4005

ADD 05

A + (05) è
A

00B

700D

Новая команда

If A=(2n+1) then go to (OD)

00C

C00E

BR 0E

Переход к завершению программы

00D

3001

MOV 01

A è
(01)

00E

F000

HLT

Стоп

Трассировочная таблица
(теоретическая)

СчМК
до
выборки

МК

Содержимое регистров
после выборки и исполнения МК

РМК

СК

РА

РК

РД

А

С

БР

N

Z

СчМК

Команда F200 расположенная по адресу 009

00

————-

009

009

F200

F200

0000

0000

1

———

Команда ADD 05 расположенная по адресу 00A

89

————-

00A

005

4005

000A

0007

0007

———-

Команда Dххх расположенная по адресу 00В

01

0300

00B

005

4005

0007

0007

000B

02

02

4001

00B

00B

4005

0007

0007

000B

03

03

0311

00B

00B

4005

D00D

0007

000C

04

04

4004

00C

00B

4005

D00D

0007

000C

05

05

0100

00C

00B

4005

D00D

0007

D00D

06

06

4003

00C

00B

D00D

D00D

0007

D00D

07

07

AFOC

00C

00B

D00D

D00D

0007

D00D

0C

08

AE0C

00C

00B

D00D

D00D

0007

D00D

0C

09

AD0C

00C

00B

D00D

D00D

0007

D00D

0A

0C

AB1D

00C

00B

D00D

D00D

0007

D00D

1D

1D

EF2D

00C

00B

D00D

D00D

0007

D00D

1E

2D

AE30

00C

00B

D00D

D00D

0007

D00D

2E

2E

AC47

00C

00B

D00D

D00D

0007

D00D

2F

2F

83D0

00C

00B

D00D

D00D

0007

D00D

D0

D0

B18F

00C

00B

D00D

D00D

0007

D00D

D1

D1

0100

00C

00B

D00D

D00D

0007

D00D

D2

D2

4004

00D

00B

D00D

D00D

0007

D00D

D3

D3

838F

00D

00B

D00D

D00D

0007

D00D

8F

8F

8788

00D

00B

D00D

D00D

0007

D00D

1

88

88

4008

00D

00B

D00D

D00D

0007

D00D

1

89

89

8301

00D

00B

D00D

D00D

0007

D00D

1

01

Команда BR 0E расположенная по адресу 00C

00

————-

00C

00C

C00E

C00E

0007

0000

1

———

Команда MOV 01 расположенная по адресу 00D

00

————-

00D

001

3001

0007

0007

0007

1

———

Команда HLT расположенная по адресу 00E

89

————-

00F

00F

F000

F000

0007

F000

1

————

Трассировочная таблица
(экспериментальная)

СчМК
до
выборки

МК

Содержимое регистров
после выборки и исполнения МК

РМК

СК

РА

РК

РД

А

С

БР

N

Z

СчМК

Команда F200 расположенная по адресу 009

00

————-

009

009

F200

F200

0000

0000

1

———

Команда ADD 05 расположенная по адресу 00A

89

————-

00A

005

4005

000A

0007

0000

———-

Команда Dххх расположенная по адресу 00В

01

0300

00B

005

4005

0007

0007

0000

02

02

4001

00B

00B

4005

0007

0007

000B

03

03

0311

00B

00B

4005

D00D

0007

000C

04

04

4004

00C

00B

4005

D00D

0007

000C

05

05

0100

00C

00B

4005

D00D

0007

000С

06

06

4003

00C

00B

D00D

D00D

0007

D00D

07

07

AFOC

00C

00B

D00D

D00D

0007

D00D

08

08

AE0C

00C

00B

D00D

D00D

0007

D00D

09

09

AD0C

00C

00B

D00D

D00D

0007

D00D

0C

0C

AB1D

00C

00B

D00D

D00D

0007

D00D

1D

1D

EF2D

00C

00B

D00D

D00D

0007

D00D

1E

2D

AE30

00C

00B

D00D

D00D

0007

D00D

2E

2E

AC47

00C

00B

D00D

D00D

0007

D00D

2F

2F

83D0

00C

00B

D00D

D00D

0007

D00D

D0

D0

B18F

00C

00B

D00D

D00D

0007

0800

D1

D1

0100

00C

00B

D00D

D00D

0007

0007

D2

D2

4004

00D

00B

D00D

D00D

0007

D00D

D3

D3

838F

00D

00B

D00D

D00D

0007

D00D

8F

8F

8788

00D

00B

D00D

D00D

0007

0000

88

88

4008

00D

00B

D00D

D00D

0007

0000

89

89

8301

00D

00B

D00D

D00D

0007

0000

01

Команда BR 0E расположенная по адресу 00C

00

————-

00C

00E

C00E

C00E

0007

0000

1

———

Команда MOV 01 расположенная по адресу 00D

00

————-

00D

001

3001

0007

0007

0000

1

———

Команда HLT расположенная по адресу 00E

89

————-

00F

00F

F000

F000

0007

F000

1

————

Анализ
расхождений:

1.  При
исполнении команды ADD
05
БР обнуляется, чего быть не должно.

2.  При
исполнении команды MOV
01
БР обнуляется, чего быть не должно.

3.  При
исполнении команды 83D0
(№2F)  при
следующем шаге содержимое БР меняется на 0800, что было замечено при выполнении
предыдущей программы.

4.  При исполнении
команды 838F
(№D3)  при
следующем шаге БР обнуляется.


предыдущей работе аналогичные ячейки содержали 0002).

Программа
и микро программа отладки не потребовали.

FD00

МК:
E98F

1

1

1

0

1

0

0

1

1

0

0

0

1

1

1

1

Адрес:E0

11
– УМК.
Однобитовое поле сравнения 1.

10
– Проверяемый регистр РК.

10
– Проверяемый бит № 8.

01
— ——————||——————-10-
Адрес перехода (8F)h

00 —
——————-||———————11 —
——————-||———————11 — ——————-||———————МК:
A88F

1

0

1

0

1

0

0

0

1

0

0

0

1

1

1

1

Адрес: E1

10
– УМК.
Однобитовое поле сравнения 0

10
– Проверяемый регистр РК.

10
– Проверяемый бит №8.

00

——————||———————10-
Адрес перехода (8F)h

00 —
——————-||———————11 —
——————-||———————11 —
——————-||———————МК:
0004

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

Адрес: E2

00-  ОМК0..

00
– 0 на левый вход АЛУ.

00

00
— 0 на правый вход АЛУ.

00
– обратный код не вычислять

01
– Сдвиг вправо

00
– Нет обмена с памятью.

МК:
4075

0

1

0

0

0

0

0

0

0

1

1

1

0

1

0

1

Адрес: E3

01-  ОМК1.

00

00
– Обмена с ВУ не осуществлять.

00
— ——————||——————01
– Перенос.

11
– Записать результат в N,
Z

01
– ЭВМ
не останавливать.

01
– Переслать в А.

МК:
0004

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

Адрес: E2

02-  ОМК0..

00
– 0 на левый вход АЛУ.

00

00
— 0 на правый вход АЛУ.

00
– обратный код не вычислять

01
– Сдвиг вправо

00
– Нет обмена с памятью.

МК:
4075

0

1

0

0

0

0

0

0

0

1

1

1

0

1

0

1

Адрес: E3

03-  ОМК1.

00

00
– Обмена с ВУ не осуществлять.

00
— ——————||——————01
– Перенос.

11
– Записать результат в N,
Z

01
– ЭВМ
не останавливать.

01
– Переслать в А.

МК:838F

1

0

0

0

0

0

1

1

1

0

0

0

1

1

1

1

АДРЕС:B5

10
– УМК. В однобитовом поле сравнения 0.

00 – Выбранное
поле проверки РС

00
– Выбранный бит проверки (3)h

11
— ——————-||———————10-
Адрес перехода (8F)h

00 —
——————-||———————11 —
——————-||———————11 —
——————-||———————

Тестовая
программа

Адрес

Код команды

Мнемоника

Комментарии

001

Ячейка для сохранения А для
команды FD00

005

Ячейка со сдвигаемым числом

009

F200

CLA

Очистка Аккумулятора

00A

4005

ADD 05

A + (05) è
A

00B

FD00

Новая команда

Циклический сдвиг на 2 разряда
вправо

00С

3001

MOV 01

A è
(01)

00D

F000

HLT

Стоп

Трассировочная таблица
(теоретическая)

СчМК
до
выборки

МК

Содержимое регистров
после выборки и исполнения МК

РМК

СК

РА

РК

РД

А

С

БР

N

Z

СчМК

Команда F200 расположенная по адресу 009

00

————-

009

009

F200

F200

0000

0000

1

———

Команда ADD 05 расположенная по адресу 00A

89

————-

00A

005

4005

000A

000F

000F

———-

Команда FD00 расположенная по адресу 00В

01

0300

00B

005

4005

000F

000F

000B

02

02

4001

00B

00B

4005

000F

000F

000B

03

03

0311

00B

00B

4005

FD00

000F

000C

04

04

4004

00C

00B

4005

FD00

000F

000C

05

05

0100

00C

00B

4005

FD00

000F

FD00

06

06

4003

00C

00B

FD00

FD00

000F

FD00

07

07

AFOC

00C

00B

FD00

FD00

000F

FD00

08

08

AE0C

00C

00B

FD00

FD00

000F

FD00

09

09

AD0C

00C

00B

FD00

FD00

000F

FD00

0A

0A

83BE

00C

00B

FD00

FD00

000F

FD00

5E

5E

AB61

00C

00B

FD00

FD00

000F

FD00

5F

5F

AA6C

00C

00B

FD00

FD00

000F

FD00

E0

E0

E98F

00C

00B

FD00

FD00

000F

FD00

E1

E1

A88F

00C

00B

FD00

FD00

000F

FD00

E2

E2

0004

00C

00B

FD00

FD00

000F

0007

E3

E3

4075

00C

00B

FD00

FD00

0007

0007

E4

E4

0004

00C

00B

FD00

FD00

0007

0003

E5

E5

4075

00C

00B

FD00

FD00

0003

0003

E6

E3

838F

00C

00B

FD00

FD00

0003

0003

8F

8F

8788

00C

00B

FD00

FD00

0003

0003

88

88

4008

00C

00B

FD00

FD00

0003

0003

89

89

8301

00C

00B

FD00

FD00

0003

0003

01

Команда MOV 01 расположенная по адресу 00C

00

————-

00D

001

3001

0003

0003

0003

———

Команда HLT расположенная по адресу 00D

89

————-

00E

00E

F000

F000

0003

F000

————

Трассировочная таблица
(экспериментальная)

СчМК
до
выборки

МК

Содержимое регистров
после выборки и исполнения МК

РМК

СК

РА

РК

РД

А

С

БР

N

Z

СчМК

Команда F200 расположенная по адресу 009

00

————-

009

009

F200

F200

0000

0000

1

———

Команда ADD 05 расположенная по адресу 00A

89

————-

00A

005

4005

000A

000F

0007

———-

Команда FD00 расположенная по адресу 00В

01

0300

00B

005

4005

000F

000F

0000

02

02

4001

00B

00B

4005

000F

000F

000B

03

03

0311

00B

00B

4005

FD00

000F

000C

04

04

4004

00C

00B

4005

FD00

000F

000C

05

05

0100

00C

00B

4005

FD00

000F

000C

06

06

4003

00C

00B

FD00

FD00

000F

FD00

07

07

AFOC

00C

00B

FD00

FD00

000F

FD00

08

08

AE0C

00C

00B

FD00

FD00

000F

FD00

09

09

AD0C

00C

00B

FD00

FD00

000F

FD00

0A

0A

83BE

00C

00B

FD00

FD00

000F

FD00

5E

5E

AB61

00C

00B

FD00

FD00

000F

FD00

5F

5F

AA6C

00C

00B

FD00

FD00

000F

FD00

E0

E0

E98F

00C

00B

FD00

FD00

000F

0080

E1

E1

A88F

00C

00B

FD00

FD00

000F

FD00

E2

E2

0004

00C

00B

FD00

FD00

000F

FD00

E3

E3

4075

00C

00B

FD00

FD00

0007

0007

E4

E4

0004

00C

00B

FD00

FD00

0007

0007

E5

E5

4075

00C

00B

FD00

FD00

0003

0003

E6

E3

838F

00C

00B

FD00

FD00

0003

0003

8F

8F

8788

00C

00B

FD00

FD00

0003

0003

88

88

4008

00C

00B

FD00

FD00

0003

0003

89

89

8301

00C

00B

FD00

FD00

0003

0003

01

Команда MOV 01 расположенная по адресу 00C

00

————-

00D

001

3001

0003

0003

0003

———

Команда HLT расположенная по адресу 00D

89

————-

00E

00E

F000

F000

0003

F000

————

Анализ
расхождений таблиц:

1.  При
исполнении команды ADD
05
БР обнуляется, чего быть не должно.

2.  При
исполнении команды MOV
01
БР обнуляется, чего быть не должно.

3.  При
выполнении условного перехода AA6C (№5F) при последующем
шаге

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