- •Системы счисления
- •Эквивалентны ли два фрагмента программ с условным оператором? в каких переменных записывается результат максимального значения переменной? Изобразите алгоритмы приведенных фрагментов программ.
- •Нарисуйте алгоритм, соответствующий программе в задаче №2
- •Что делает приведенная программа? Найдите и исправьте ошибки в программе.
- •Заполнение и вывод двумерного массива
- •21. Что делает программа? Приведите блок-схему программы.
Заполнение и вывод двумерного массива
Напишите программы заполнения массива с помощью операторов WHILE и REPEAT... UNTIL. Приведите алгоритмы решения данной задачи с помощью обоих операторов цикла.
-
Program MASS-DV; var mas:array[1..5,1..5] of integer;
i ,j:integer; begin for i:=1 to 5 do for j:=1 to 5 do readln(mas[i,j]);
for i:=1 to 5 do begin for j:=1 to 5 do write(' ',mas[i,j]); writeln; end; end.
WHILE
REPEAT... UNTIL
8. Корни квадратного уравнения.
Классическая программа вычисления корней квадратного уравнения с контролем дискриминанта.
Program Sq1; Var A, B, C, D, X1, X2 : Real; Begin Writeln ('Введите коэффициенты квадратного уравнения'); Readln (A,B,C); D:=B*B-4*A*C; If D<0 Then Writeln ('Корней нет! ') Else Begin X1:=(-B+SQRT(D))/2/A; X2:=(-B-SQRT(D))/2/A; Writeln ('X1=', X1:8:3, ' X2=',X2:8:3) End; End. |
В программе проанализированы ситуации, когда какой либо из коэффищиентов равен 0.
Program Sq2; Var A, B, C, D, X, X1, X2 : Real; Begin Writeln ('Введите коэффициенты уравнения (A, B, C) '); If A=0 Then If B=0 Then If C=0 Then Writeln('X - любое число') Else Writeln('Корней нет! ') Else Begin X:=-C/B; Writeln('X=',X:8:3) End Else Begin End; End. |
Program Sq3;
Написать программу поиска корней, в которой случай равенства нулю какого либо из коэффициентов (Program Sq2) описан отдельной процедурой, входящей в программу Sq1 |
Напишите программу определения четности или нечетности целого числа, задаваемого в диапазоне 0..100 с помощью оператора CASE. Выход из программы осуществить набором любого отрицательного целого числа.
Пример немного похожей задачи приводится ниже.
Program Vibor; var i:integer; begin write('Введите целое число: '); readln(i); case i of 0,2,4,6,8 : writeln('Четная цифра'); 1,3,5,7,9 : writeln('Нечетная цифра'); 10...100 : writeln('Число от 10 до 100); else writeln('Число либо отрицательное, либо > 100'); end; readln; end.
Догнал ли Ахилл черепаху? Реализация греческого философского опуса о том догонит ли Ахилл черепаху, если находится она от него в 100 шагах, а скорость Ахилла в 10 раз больше. Программа решения этой задачи приведена ниже. Решив эту задачу, вы получите одно из замечательных чисел (я не проверял, поверил авторам задачи на слово -ВШ). Но сначала найдите ошибку и нарисуйте алгоритм решения задачи.
Program AHILL; CONST Vch=100/3600; {Скорость черепахи} Va=1000/3600; {Скорость Ахилла} VAR Sa, Sch : Real; Begin Sa:=0; Sch:=100; repeat Sch:=Sch+Vch*1; Sa:=Sa+Va*1; Until Sa < Sch; Writeln('Ахилл догнал черепаху на расстоянии =', Sch:8:7, ' - шагов.'); Readln; end.
Для фрагмента схемы алгоритма напишите соответствующий ему фрагмент программы с вложенными в каждой ветви условными операторами.
12. Для фрагмента схемы алгоритма напишите соответствующий ему фрагмент программы с вложенным условным оператором и с помощью булевых операций.
13.Напишите фрагменты программ для каждого из фрагментов схем алгоритмов с использованием составного оператора
14. Напишите программу, соответствующую алгоритму, с использованием процедуры - функции. Принять, что F(x)=x3/4
15. Создать программу на Паскале, выводящую на экран таблицу умножения в системе счисления с основанием m= 5.
16.
program IntTypes; var NumByte: byte; NumShort: shortint; Numlnt: integer; NumWord: word; NumLong: longint; begin NumLong:= 100000; NumWord:= NumLong div 3; Numlnt := = $FF + 1; NumShort:= NumLong mod 3; NumByte : = Numlnt; writeln('NumLong =’,NumLong); writeln('NumWord =’,NumWord); writeln('Numlnt = ', Numlnt); writeln('NumShort = ', NumShort) writeln('NumByte = ', NumByte); end.
|
На экране появятся следующие сообщения,
NumLong = 100000 NumWord = 33333 Numlnt = 256 NumShort = 1 NumByte = 0
Почему NumByte = 0?
|
16.Что делает программа? В каком варианте может произойти зацикливание? Ответ объясните.
-
program WhileEx;
var
CharCode: integer;
begin
CharCode := 0;
while CharCode <= 255 do
begin
if Chr(CharCode) in ['0'..'9'] then
Writeln('Kofl символа '", Chr(CharCode), '" - *,CharCode)
Inc(CharCode);
end;
end.
program WhileEx;
var
CharCode: byte;
begin
CharCode := 0;
while CharCode <= 255 do
begin
if Chr(CharCode) in ['0'..'9'] then
Writeln('Kofl символа '", Chr(CharCode), '" - *,CharCode)
Inc(CharCode);
end;
end.
17.Что будет выведено на экран при выполнении следующей программы?
program ProcEx;
procedure SortABC(AscOrder: boolean);
var
c: char;
begin
if AscOrder
then for с:='A' to ' Z' do Write(c)
else for с:=' Z' downto 'A' do Write(c)
Writeln(‘ ' )
end;
begin
SortABC(True);
SortABC(False)
end.
18. Для приведенных фрагментов программ определите значения величин В и С для случаев А>B (A=250, B=150) и А<B (A=75, B=275)
-
if A > В then
begin
А := В;
С := 100;
end;
В := 200;
if A > В then
begin
А := В;
С := 100;
end else
begin
А := С;
С := 200;
end;
В := 200;
if A > В then
begin
if В > С then A := В;
end else A := С;
19. Пусть заголовок процедуры выглядит как
procedure Proc(a, b: integer; с: char);, где a, b,с- формальные параметры.
Какие из приведенных вызовов этой процедуры
Proc(Numl, Num2, Ch) ;
Proc(12, Numl + Num2, 'D');
Proc(Numl, Num2);
Proc(Ch, Numl, Num2);
Proc(12.3, Num2, Ch);
Proc(0, Ord('A'), Chr(Numl));
будут правильные, и какие неправильные, если принять, что в вызывающей программе переменные, используемые при обращении к процедуре как фактические параметры равны Numl := 1; Num2 := 2; Ch := 'А';
Ответы объясните.
20.Нарисовать блок-схему программы с циклом FOR и вычисления суммы ряда: 1/22 + 1/42 + ... + 1/(20*n+2) в цикле, организованном с помощью оператора FOR. Натуральное число n вводится с клавиатуры.
