Напишите программу, которая моделирует работу процессора - Pascal ABC
Формулировка задачи:
1. Напишите программу, которая моделирует работу процессора. Процессор имеет 4 регист-ра, они обозначаются R0, R1, R2 и R3. Все команды состоят из трех десятичных цифр: код операции, номер первого регистра и номер второго регистра (или число от 0 до 9). Коды команд и примеры их использования приведены в таблице:
Обратите внимание, что результат записывается во второй регистр. Команды вводятся последовательно как символьные строки. После ввода каждой строки программа показывает значения всех регистров.
Код операции | Описание | Пример | Псевдокод |
1 | запись константы | 128 | R2 := 8 |
2 | копирование значения | 203 | R3 := R0 |
3 | сложение | 331 | R1 := R1 + R3 |
4 | вычитание | 431 | R1 := R1 – R3 |
Решение задачи: «Напишите программу, которая моделирует работу процессора»
textual
Листинг программы
var s:string; a,b:integer; r:array[0..3] of integer; i:byte; begin for i:=0 to 3 do r[i]:=0; writeln('Вводите коды команд, окончание вввода 000'); repeat repeat readln(s); if s='000' then begin writeln('Программа завершена'); exit; end; val(s,a,b); if(b<>0)or not(s[1] in ['1'..'4']) or not(s[2] in ['0'..'3']) or((s[1] in ['2'..'4'])and not(s[3]in ['0'..'3'])) then writeln('Код введен неверно, повторите'); until (b=0)and(s[1] in ['1'..'4'])and(s[2] in ['0'..'3']) or((s[1] in ['2'..'4'])and (s[3]in ['0'..'3'])); case s[1] of '1':r[strtoint(s[2])]:=strtoint(s[3]); '2':r[strtoint(s[3])]:=r[strtoint(s[2])]; '3':r[strtoint(s[3])]:=r[strtoint(s[3])]+r[strtoint(s[2])]; '4':r[strtoint(s[3])]:=r[strtoint(s[3])]-r[strtoint(s[2])]; end; for i:=0 to 3 do write('R',i,'=',r[i],' '); writeln; until s='000'; end.
Объяснение кода листинга программы
- Создаются переменные s, a, b и r, которые представляют собой строку, целые числа и массив целых чисел соответственно.
- В цикле for считывается ввод пользователя и сохраняется в переменной s.
- Проверяется, равен ли введенный код '000'. Если да, то программа завершается и выходит из цикла.
- Если введенный код не равен '000', то считывается следующий символ и проверяется, является ли он цифрой от 1 до 4.
- Если введенный код соответствует формату, то выполняются следующие действия:
- Проверяется, является ли первый символ кода цифрой от 1 до 4.
- Проверяется, является ли второй символ кода цифрой от 0 до 3.
- Проверяется, является ли третий символ кода цифрой от 0 до 3.
- Если все проверки пройдены успешно, то значения первого, второго и третьего символов кода сохраняются в соответствующие элементы массива r.
- После завершения цикла while, происходит вывод значений массива r с помощью цикла for.
- Программа завершается, когда введенный код равен '000'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д