Напишите программу, которая моделирует работу процессора - 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.

Объяснение кода листинга программы

  1. Создаются переменные s, a, b и r, которые представляют собой строку, целые числа и массив целых чисел соответственно.
  2. В цикле for считывается ввод пользователя и сохраняется в переменной s.
  3. Проверяется, равен ли введенный код '000'. Если да, то программа завершается и выходит из цикла.
  4. Если введенный код не равен '000', то считывается следующий символ и проверяется, является ли он цифрой от 1 до 4.
  5. Если введенный код соответствует формату, то выполняются следующие действия:
    • Проверяется, является ли первый символ кода цифрой от 1 до 4.
    • Проверяется, является ли второй символ кода цифрой от 0 до 3.
    • Проверяется, является ли третий символ кода цифрой от 0 до 3.
    • Если все проверки пройдены успешно, то значения первого, второго и третьего символов кода сохраняются в соответствующие элементы массива r.
  6. После завершения цикла while, происходит вывод значений массива r с помощью цикла for.
  7. Программа завершается, когда введенный код равен '000'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы