nextupprevious

Next:4.2 Независимая обработка элементов
Up:4.1 Средства для организации циклических вычислений
Previous:4.1.5 Пошаговая разработка программ


4.1.6 Упражнения

1. Укажите, какие из следующих операторов не содержат ошибок:

(1) while read(X) do end;
(2) while true do read(X) end;
(3) while Z do Z := X $>$ 0; X := X+1 end;
(4) while$<$ 1 while Z # 0 do read(X,Z) end end;
(5) repeat until false;
(6) while false do end;
(7) repeat Z := X = Y; X := X + 1 until Z;
(8) repeat read(X); write(X) until Eof;
(9) for I := 0 to 2 do X := Sqr(X) end;
(10) for I := 10 toby 1 do X := Sqr(X) end;
(11) for X := 'A' to 'Z' do write(X) end;
(12) for X := 1.0 to 10 do write(X) end.

2. Укажите, какие из следующих программ не содержат ошибок:

module A; var X,Y : real; begin for X := 1 to 10 do read(Y); write(Y) end end;

module B; var I,J : integer; begin I := 1 ; while$<$ 10 do J := 1; while$<$ 10 do write(I,J); J := J+1; I := I+1 end;

module C; var I,J : integer; begin for I := 9 to 1 by -1 do for J := 1 to 9 do writeln(I:2, '$*$': 2, J:2, '=':2,I $*$ J:2) end end;

module D; var X : char; I : integer;
begin while false do end; repeat until true; for X := 1 to 3 do for I := 10 to 1 by -1 do end end end.

3. Пусть A и B$В$ -- произвольные значения целого типа. Укажите, какие из приведенных ниже высказываний истинны:

(1) for I := 1 to 10 do write(I) end{ I = 10 },
(2) for I := 10 downto 1 do write(I) end { I = 0 },
(3) for I := 1 to 10 do write(I) end { I = 11 },
(4) { X = A } while true do write(X) end { X = A },
(5) { X = A } while true do write(X) end { X = B },
(6) repeat X := X+1 until X = 0 {X = 0 },
(7) {X = A} while Y = B do read(Y); write(X,Y)end {X=A, Y=B}
(8) {X=A} while Y = B do read(Y); write(X,Y) end {X=A, Y $\ne$ B}.

4. Сформулируйте правило вывода свойств для оператора цикла с условием на окончание.

5. Проанализируйте завершаемость следующих циклов:

(1) while$>$ 0 do X := X-1end;
(2) repeat X := X-1 until X = 0;
(3) while$>$ 0 do X := X+1end;
(4) repeat Z := X; X := Y; Y := Z+2 until$\leq$ Y;
(5) while N$>$1 do if ~ odd(N) then N:=N div 2 + 1 else N:=N+1end end;

6. Докажите завершаемость следующих операторов цикла:

(1) while N$>$1 do if odd(N) then N:=N+1 else N:=N div 2end end;
(2) { N$>$0, M$>$0 } while  N # 0 do K:=M; M:=N; N:=K mod N end;
(3) { N$>$0, M$>$0 } while M # N do if M$>$N then M:=M-N else N:=N-M end end;
(4) while N$>$0 do if odd(N) then  Z:=Z$*$X; N:=N-1 else X:=Sqr(X); N:=N div 2 end end;
(5) while ~ Eof do Read(X) end;

7. Для программы

module Цикл;
    var N, I : integer; A, X, S, B : real;
begin Read(N,A,X); S := 0; B := 1;
    for I := 1 to N do B := B$*$N; S := S+B end;
    write ('Ответ = ', A $*$ S)
end Цикл.

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

(1) 3 0.1 0.3 ,
(2) 3 2.5 0.8 ,
(3) 4 5.0 0.5 ,
(4) 3 1.0 0.01 ,
(5) 0 1.2 0.4 ,
(6) 2 3.4 0.2 .
 

Next:4.2 Независимая обработка элементов
Up:4.1 Средства для организации циклических вычислений
Previous:4.1.5 Пошаговая разработка программ



© В.Н. Касьянов, Е.В.Касьянова, 2004