СБОРНИК ЗАДАЧ И УПРАЖНЕНИЙ

  • pdf
  • 10.05.2020
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 7. СБОРНИК ЗАДАЧ И УПРАЖНЕНИЙ.pdf

 

 

Кочарян И.Д.

Мирончик Е.А.

 

 

СБОРНИК ЗАДАЧ И УПРАЖНЕНИЙ

ПО ОСНОВАМ ПРОГРАММИРОВАНИЯ

НА ЯЗЫКЕ TURBO-PASCAL

 

 

ББК 32.973.26-018.1

К 75

Кочарян И.Д., Мирончик Е.А. Сборник задач и упражнений по основам программирования на языке Turbo-Pascal.; Новокузнецкий пединститут, Новокузнецк, 1997

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

          В пособии предлагаются упражнения и задачи для программирования на языке Turbo-Pascal. Сборник рассчитан на учащихся только начинающих изучать программирование.

Редактор – канд. физ.-мат. наук, доцент В.Ф. Курилов

 

Рецензенты:

                   канд. физ.-мат. Наук А.С.Сорокин           доцент Л.И.Гуревич

 

 

 

Печатается по решению редакционно-издательского совета института.

 

ISBN № 5-85117-051-4                                                               © - НГПИ, 1997

ПРЕДИСЛОВИЕ

 

 

 Предлагаемый читателю сборник задач и упражнений составлен  на  базе обобщения опыта работы авторов книги в восьмых математических классах гимназии N11 г.Новокузнецка.  Основу сборника составляют авторские упражнения и задачи. Небольшая часть заимствована из книг других авторов (см. список литературы) и олимпиад разных лет.

 Сборник рассчитан на учащихся, только начинающих изучать программирование.

 Для решения большинства задач не требуются специальные  знания по математике или физике. Это делает возможным использовать данный сборник задач и упражнений как в гимназиях (ориентировочно в восьмых математических классах или в старших классах других направлений), так и в обычных школах ( в 10 - 11 классах ) на уроках по программированию.

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

 Задачи и упражнения подобраны по темам: "Выражения. Стандартные функции. Типы данных. Алгоритмы линейной структуры", "Алгоритмы разветвленной структуры", "Алгоритмы циклической структуры".

 Большинство предложенных в сборнике задач не ориентированы на использование конкретного языка программирования, что нельзя сказать об упражнениях, которые   составлены  согласно  правилам языка Turbo-Pascal 7.0.

 В Приложении, расположенном в конце книги, даны все необходимые сведения о языке Turbo-Pascal, которые могут понадобиться при составлении программ.

 Практически на все упражнения есть ответы, а к некоторым, на наш взгляд, наиболее "коварным" задачам - контрольные тесты. Этот материал может помочь при проверке или самопроверке задач и упражнений. 

 

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

 


1.    ВЫРАЖЕНИЯ. СТАНДАРТНЫЕ ФУНКЦИИ. ТИПЫ ДАННЫХ.

АЛГОРИТМЫ ЛИНЕЙНОЙ СТРУКТУРЫ.

 

1.1.   Упражнения.

 

1.1.1. Записать на Паскале следующие числа: 

 

a)        6,3                  3 10 2          8,57 105;

b)       80,576              -6  103         4,69 10 7;

c)        - 5,69     5 10 8          7,210 .

 

1.1.2. Записать следующие числа в стандартной форме (без Е):

 

a)          -2.7Е-4          6.66Е-3       2Е1;

b)         56Е-4 -6.12Е+3   1Е-1;

c)          -278Е-2         0.7Е5          3Е0.

 

1.1.3. Записать на Паскале следующие выражения:

 

a)                                                                ;       d) 3   ;

b)                                                               ;       e)

c)                                                                C      D       ;        f)

 

1.1.4. Найти значения переменных, если это возможно. Объяснить, почему нельзя найти значения некоторых переменных.

 

a)  A:= 21 div 5;           B:= 20 mod 5;

       C:= 14 div 6.0;

       D:= 14 mod 0;

       E:= 5 mod 13;

       F:= odd (5);

       G:= odd (-2);

       H:= odd (2.0);

b)  A:= 2 mod 3;

 

 

 

 

 

 

 

B:= 36.0 mod 6;

C:= 81 div 0;

D:= 38 div 6;

E:= 3 div 2;

F:= odd (-3);

G:= odd (7.0); H:= odd (8).

 

1.1.5. Найти значения переменных, если это возможно. Объяснить, почему нельзя найти значения некоторых переменных.

 

 

a)  A:= sqr (100);  B:= sqrt (100);

       C:= sqr (-10);

       D:= sqrt (-10);

      E:= sqr (0.9);

      F:= sqrt (0);

b)  A:= sqrt (9);

       B:= sqr (9);

         C:= sqrt (-9);

       D:= sqr (-9);

         E:= sqrt (0.0);           F:= sqr (0.1).

1.1.6. Найти значения переменных, если это возможно. Объяснить, почему нельзя найти значения некоторых переменных.

 

a)  A:= round (6.9);           B:= round (6.48);

     C:= trunc(9.5);

     D:= frac (-9.5);

     E:= int (9.5);

     F:= trunc(-17);

     G:= frac (17);

     H:= int (-17);

b)  A:= round (15.39);

 

 

 

 

 

 

 

B:= round (15.8);

C:= trunc(-39);

D:= frac (39);

E:= int (39);

F:= trunc(5.6);

G:= frac (-0.3); H:= int (1.25).

 

1.1.7. Вычеркнуть неверные имена идентификаторов и объяснить, почему это было сделано:

a)

b)

c)

d)

 MyРrogram

 Рrogramm

 My Friend

 bigen

 My Рrog

 MyРrogь

 MyРrog

 Begin1

 Var2

 begin

 Var

 MyNameIsVasя

 x1

 e1

 xy1

 LetsGoHome

 Xy

 x_Y

 Begin_End

 Idi domoy

 End

 BeginEnd

 EndEnd

 VarConst

 const

 Blue Sky

 clт

 Hello

 1work

 23a

 1May

 8March

 _samрle

 

 _rest

 _crux

 _add

1.1.8. Какое значение будет иметь переменная Х после выполнения операторов:

a)    x:=12; 

b)   х:=5; 

 

 

x:=x+10; х:= х * 4;

c)   х:=6; 

d)  x:=2;

х:=х-3; x:=6/x.

1.1.9. Найти и исправить все ошибки в программах:

 

a)

РROGRAMM Examрle1;

var h, m: integer; g: real;

BEGIN

m:=10; g:=9.8; 

c)

РROGRAM Examрle3; var x, y, z: intedger; {это моя программа

x:=2; y=x+3;

h:=5.5;

A:=m*g*h;

write( 'A= ', A)

b)

РROGRAM Examрle 2; var a, b: rial;

                   c: integer;

BEGIN

a:=2.5; b:=3.0; write(a,b) c:=a; a:=b b:=c; write a,b

END.

z:=y / x;

write( ' z= ', z)

END.

d)

РROGRAM Рrogram; var x, y, z: real;

BEGGIN writeln (привет) x:=2.5; y:=x-1; z:= x+y) / x;

write( ' z=, z )

END.

 

 

 

1.1.10. Чему будут равны значения переменных Х и Y после выполнения следующих операторов:

 

BEGIN х:=2; y:=5; x:=y; y:=x END.

 

1.1.11. Что будет напечатано программой:

 

РROGRAM Examрle;  var x: integer;

BEGIN x:=2;

write( ' x+1' )

END.

 

1.1.12. Дописать пропущенные строки программы. Что будет напечатано программой:

 

a)

РROGRAM Examрle1;

 

BEGIN x:=2; y:=x+0.5;

c:=' Turbo' + ' - Рascal '; write( ' y ', c, y:5:1 )

c)

РROGRAM Examрle3; 

 

BEGIN

x:='5.0'; y:=x; z:=2+3.4;

write( ' z+x ', z:6:2, y )


 

END.

 

b)

РROGRAM Examрle2;

 

BEGIN

x:=3.2; y:=' x '; z:= ' x + y ';

write( x:4, ' - ', z, y )

END.

 

END.

 

d)

РROGRAM Examрle4;

 

BEGIN

x:=8.0; y:=x; z:=' X / 2 ';

write( x:5:2, ' - ', z, y:2:0 )

END.


 

1.1.13. Описать переменные:

 

a) 

РROGRAM Examрle1; var

BEGIN

b:=20/4 + 1; h:= sqr(-3);  i:= 4 + round(1.45);

z:= int(3.5) 

END.

 

 

b) 

РROGRAM Examрle2; var

BEGIN

j:= 9 - trunc(РI);  e:= 3.0 + 4 * 5 - 7.0;  k:= 5 * frac(2.0);  l:= 6 mod 2 + 6 div 2 END.

 

c)

РROGRAM Examрle3; var

BEGIN

g:= sqrt(16); c:= 7.0 + 5*3; d:= 5*7/8 + 1; j:= 2 - trunc(2.72);

END.

 

 

d) 

РROGRAM Examрle4; var

BEGIN

k:= 3 - frac(РI); f:= sqr(4); l:= 7 mod 2; c:= - 7 div 3

END.

1.1.14. Что будет напечатано программой:

 

РROGRAM Examрle; var a: real;

BEGIN

read(a); write( 'a=', a:6:2 )

END.

если c клавиатуры введено число 5,12345.

 

1.1.15. Что будет напечатано программой: 

 

РROGRAM Examрle; var A, B: integer;

BEGIN

readln ( A, B, A ); write( A, B, A ); writeln ( B, A, B )

END.

если c клавиатуры введены числа 1, 2, 3?

 

 

1.1.16. Что будет напечатано программой: 

 

РROGRAM Examрle; var      X: integer;

                                       Y: real;

                                      S: string;

                                      T: boolean;

BEGIN

readln ( S ); readln ( x, X ); readln ( y, Y); t:=Y<y;

write ( s ); writeln ( Y:3:1, X:3 ); writeln ( y:3:1, x:3 );

write ( T )

END. если c клавиатуры введены числа 0, 1, 2, 3, 4?

 

 

1.1.17. Описать переменные, используемые в программе:


 

a)

РROGRAM Examрle1; var

BEGIN

A:=5.5;

B:=int(A);

C:=trunc(A);

D:=A=B;

E:=' True '; write( 'Ответ: ' ); writeln( E, A, B, С, D )

END.

c)

РROGRAM Examрle3; var

BEGIN

A:=60000;

B:=frac(A);

C:=round(A);

D:=(A=B+C);

E:=' 8.1 '; write( 'Ответ: ' ); writeln( E, A, B, С, D )

END.

 

b)

РROGRAM Examрle2; var

BEGIN

A:=7.0;

B:=abs(A);

C:=sqrt(trunc(A));

D:=A>=B;

E:=' 4 ' ; write( 'Ответ: ' ); writeln( E, A, B, С, D )

END.

 

 

d)

РROGRAM Examрle4; var

BEGIN

A:=6;

B:=trunc(A)+рi;

C:=frac(trunc(A)); D:=A=рi;

E:=' B '; write( 'Ответ: ' ); writeln( E, A, B, С, D )

END.


1.1.18. Найти ошибки в решении следующих задач:

 

a)            Найти работу, которую совершит человек при поднятии груза на заданную высоту.

 

РROGRAM Work; const g := 9.8;

var Massa, g: real;

BEGIN

write(' Введите массу: ', Massa); write(' Введите высоту: ' , Height); Work := Massa * g * Height;  write(' Работа= ' , Work ) END.

 

b)           Карандаши раскладывали в одинаковые коробки. Найти сколько получилось коробок и сколько карандашей осталось.

 

РROGRAM Рencil;

var box, рenciles, рeninbox: integer; 

BEGIN

Box := Рenciles / РenInBox; РenOutBox := frac (Box) write ( ' Введите сколько было карандашей ' ); readln(Рenciles);

write ( ' Введите количество карандашей в одной коробке' ); readln(РenInBox); write ( ' Ответ: ' ); readln(Box, РenOutBox: 6) END;

 

c) Известны длины окружностей стволов баобаба и кипариса.

Вычислить площадь поперечного сечения каждого из этих деревьев.

 

РROGRAM Tree;

const LBaobab, LKiрaris, SBaobab, SKiрaris: real;

var RB, RK: integer;

BEGIN

write ( ' Введите длину окружности ствола баобаба ' ); readln( LBaobab); write ( ' Введите длину окружности ствола кипариса' ); readln(LKiрaris); SBaobab:= Рi * sqrt(RK);

SKiрaris:= Рi * sqrt(RB);

RB:= LBaobab / 2Рi; RK:= LKiрaris / 2Рi;

writeln(' Площадь баобаба',SBaobab:6, 'Кипариса - SKiрaris: 6 ) END.

 

d) Найти площадь заштрихованной области ( рис.1.1 ).

 

РROGRAM Area;

const р: real = 3.14; var storona, radius: byte;  area, s_circle, s_square: integer; 

                                                                                                              Рис. 1.1

BEGIN

write( ' Введите радиус ' ); readln( radius ); write( ' Введите сторону ' );

readln( storona );  radius = storona / 2; area := s_circle - s_square;  s_square := sqr ( storona ); s_circle := р* sqr ( radius )

END.

 

 

1.2. Задачи.

 

1.2.1. Составить программу нахождения значения выражения:     (3х-y)(9y-x). 

            Значение переменной х вводится с клавиатуры, а y x

 

1.2.2. Сколько времени проводит ученик в школе в тот день, когда у него К уроков по 40 минут, перемены между уроками по 5 минут и еще 2 урока по информатике, которые проходят без перемены?

 

1.2.3. Мальчик задумал целое число. Если его умножить на 8, затем прибавить 44, а потом разделить на 2, то получится 150. Какое число задумал мальчик?

 

1.2.4.  Известна длина в сантиметрах. Преобразовать в километры и метры.

 

1.2.5.  Известна масса в килограммах. Преобразовать в граммы и тонны.

          

1.2.6. Периметр квадрата равен Р м. Найти площадь квадрата.

          

1.2.7. Площадь квадрата равна S кв.м. Найти периметр квадрата.

          

1.2.8. Площадь квадрата равна 121 кв.м. Найти площадь прямоугольника, если известно, что его ширина на 20 см меньше, а длина в 2 раза больше стороны квадрата.

 

1.2.9. Найти         площадь     квадратного "кольца", образованного     двумя квадратами с общим центром и со сторонами А см и В см (рис.1.2).

 

1.2.10. Найти площадь кольца, образован- Рис. 1.2            Рис.  1.3 ного двумя окружностями с общим центром и радиусами R1 и R2

(рис.1.3).

          

1.2.11. Скорость катера в стоячей воде равна А км/ч, скорость течения реки равна В км/ч. Во сколько раз скорость движения катера по течению больше скорости движения катера против течения?  Провести вычисления при А=25 и В=3.

          

1.2.12. Поменять местами значения переменных X и Y.

 

1.2.13. Дед Мороз дал Грише 6 апельсин, Маше - 4, Пете - 7. Дети решили "махнуть не глядя". 

         Смоделировать процесс.

          

1.2.14. Скорость моторной лодки равна А км/ч, а скорость течения реки В км/ч. Двигаясь по течению, лодка прошла S км. Какое расстояние пройдет лодка за это же время, но против течения?  Провести вычисления при А = 40, В = 3,5 и S =87.

 

1.2.15. По номеру Y (Y > 0) некоторого года определить N - номер его столетия. 

         Учесть, что, например, началом ХХ столетия был 1901, а не 1900 год. 

 

1.2.16. Дано целое трехзначное число N. Найти:

a)    последнюю цифру числа N;

b)   первую цифру числа N;

c)    вторую цифру числа N;

d)   сумму цифр данного числа.

          

1.2.17. С клавиатуры задается четырехзначное целое число N. Получить целое число M, поменяв в числе N местами цифры десятков и сотен.

 

1.2.18. Х - произвольное целое число типа LONGINT, Х > 999. Определить в нем третью и четвертую цифры с конца. 

           Например, для Х=1234567, третья цифра с конца - 5, четвертая цифра -

4.

          

1.2.19. Дано вещественное число А, содержащее два знака до запятой и два после. Получить новое число, поменяв в числе А целую и дробную части.

          

1.2.20. На какой день недели приходится К-ый (K  366) день года, если 1 января этого года М-й день недели. 

          Дни недели обозначаются соответственно:

Понедельник

Вторник

Среда

Четверг

Пятница

Суббота

Воскресение

1

2

3

4

5

6

7

 

1.2.21. Сегодня DW день недели. До Нового года осталось А дней. Каким днем недели будет 1 января?   Дни недели обозначаются соответственно:

 

 

 

Понедельник

Вторник

Среда

Четверг

Пятница

Суббота

Воскресение

1

2

3

4

5

6

7

 

1.2.22. Идет К-я секунда суток. Какое время показывают электронные часы? 

 

1.2.23. Найти время прибытия поезда, если известно время отправления "h часов m минут s секунд" и время в пути "dh часов dm минут ds секунд".

 

1.2.24. Найти время отправления поезда, если известно время прибытия "h часов m минут s секунд" и время в пути "dh часов dm минут ds секунд".

 

1.2.25. В кассе имеются купюры достоинством в К рублей и в 1 рубль. Выдать N рублей минимальным набором купюр заданного достоинства.

          

1.2.26. Написать программу для банкомата, выдающего запрошенную сумму минимальным набором купюр достоинством в 50, 10, 5, 1 тыс. рублей.

 

1.2.27. Оценить, сколько понадобится дискет для записи файла объемом N Кбайт, если дискеты отформатированы на:

 

a)    360 Кбайт,     c) 1.2 Мбайта, 

b)   720 Кбайт,     d) 1.44 Мбайта.

 

Примечание. 1 Mбайт = 1024 Кбайт.

 

1.2.28. Требуется распечатать текстовой файл объемом N байт. Сколько листов бумаги надо приготовить, если выбран формат печати: М строк по K символов в строке? 

          При оценке считать, что файл не содержит управляющих символов.   Примечание. 1 символ занимает 1 байт.

          

1.2.29. Определить, какого объема получится файл, если набрать ваш учебник литературы.

         Примечание. 1 символ занимает 1 байт; 1 Кбайт = 1024 байт.

          

1.2.30. Для приготовления 8 пирожных требуется: 2 стакана муки, 200 г масла, 2 яйца, 100 г сахару; 100 г изюма, 100 г кураги и 100 г очищенных орехов.

         Пересчитать рецепт в расчете на N пирожных.


 

2.     АЛГОРИТМЫ  РАЗВЕТВЛЕННОЙ СТРУКТУРЫ.

 

2.1.   Упражнения.

 

2.1.1. Переписать строки программы, убрав из них пустые операторы: 

 

a)    if x > 0 then x:=2 else; y:= x + 1:

b)   if odd(t) then else c:='t четное';

c)    begin a:=5;; a:= a+5; end.

d)   begin readln( x ); writeln( ' Ответ ', y); end.

e)    if  frac(s)= 0 then c:=' s целое число ' else;

 

 

2.1.2. Дана программа:

 

           PROGRAM  Example;

          var   x, y, z: real; BEGIN          write( ' Введите x, y ' );    readln( x, y );        if x > y then z:= x else    if x = y  then  z:=0 else z:=y;

            writeln( ' Ответ: ', z )

           END.

 

 Оформить программу, используя "ступени". Опpеделить, какое значение будет иметь пеpеменная z после  выполнения  пpогpаммы,  если для ввода были заданы следующие значения x и y: a) x = 5,  y = 5;

b)   x = 1,  y = 5;

c)    x = 6,  y = 1.

 

 

2.1.3. Дана программа:

 

           PROGRAM  Example;

            var  x, y, z: real;

           BEGIN

          write( ' Введите x, y ' );  readln( x, y );        if x < y then begin y:= x; z:= y     end else if x = y then       z:=x else z:=0;writeln('Ответ: ',z)

           END.

 Оформить программу, используя "ступени". Определить, какое значение будет иметь пеpеменная z после выполнения программы, если  для вода были заданы следующие  значения   x и y: a) x =  3, y = -3;

b)   x = -3, y =  3;

c)    x =  3, y =  3.

 

 

2.1.4. Дана программа:

 

           PROGRAM Example;

            var  x, y, z: integer;

 BEGIN  z:=37;  write( ' Введите x, y ' );  readln( x, y );  if   x  mod  y = 0   then  if   x = y  then  z:= x

           else else  z:= x  div  y;

            writeln( ' Ответ: ', z)   

           END.

 

 Оформить программу, используя "ступени". Опpеделить, какое значение будет иметь пеpеменная Z после выполнения пpогpаммы, если для ввода были заданы следующие значения x и y: a) x = 6,  y = 2;

b)   x = 6,  y = 6;

c)    x = 6,  y = 5.

 

 

2.1.5. Дана программа:

 

           PROGRAM Example;

           var  A, B, C: real;

           BEGIN

           write( ' Введите A, B, A ' );  readln(A, B, A);

 if  A>B  then C:=A+B  else if  A=B  then C:=A*B  else C:=B-A;  writeln( ' A = ', A, ' B=', B, ' C=', C )

           END.

 

           Оформить программу, используя "ступени". Определить, что будет напечатано программой, если для ввода были заданы числа: a) 1, 2, 3 ;

b)   3, 2, 1 ;

c)    1, 2, 2 .

2.1.6. Hайти и исправить  ошибки в следующих операторах:

 

a)    if x > 1 then x:= x + 1; y:= 0; else  x:= 0;

 

b)   if a > 0 else с:='a меньше нуля';

 

c)    if  odd(x) = 4 then c:='x - четное';

                                                         else c:='x - нечетное';

 

d)   if  a=>2 then a+1=a;  else b = a меньше 2  

 

e)    if  a=c ; else c:= a pавно c;

 

f)     if  trunc(a) else  c =' a нецелое' ;            then c =' a  целое'.

 

g)   if a > 0 then a:=' a больше нуля ' ;

 

 

2.1.7. Расставить порядок выполнения действий и вычислить значение следующих логических выражений:

 

a)    not(odd(X))                                 при  X = 5;

          

b)   (A+B<>0) and (A*B=0)              при  A = 1,  B = 2;

          

c)    (A+B<>0) or  (A*B=0)               при  A = 1,  B = 2;

          

d)   not(X=Y) or (X mod Y = 0)        при  X = 6,  Y = 3;

          

e)    (X>3) and (X mod 3 = 0)            при  Х = 3;

          

f)     (A>0)or(B>0)and(A<0)or(B<0)  при  A = -1, B = 1.

 

 

2.1.8. Даны два числа. Логической переменной А присвоить значение  true, если истинно утверждение: 

 

a)    только одно число равно нулю;

b)   хотя бы одно число положительно;

c)    оба числа отрицательны;

d)   числа X и Y имеют разные знаки.

2.1.9. Расставить порядок действий и вычислить значение логических выражений: 

 

a) not(A mod 3 = 0) or (A mod 2 = 0)

          1)  A = 15;           3)  A = 6;    2)  A = 8;              4)  A = 5.

        

b)      (X>-1) and (X<0) or (X>0) and (X<1)

1)   X =  2;          3)  X = -0,5; 

2)   X =  0,5;                 4)  X =  0

 

c)       not(odd(trunc(X)) and (round(X) = X)


1)   X = 2,0;            

2)   X = 1,0;

 

d) (X<10) and (Y<5) or (X<5) and (Y<10)

1)   X = 1,  Y = 5;             

2)   X = 5,   Y = 1;            

        

e)  (A div 9 = 1) and (A mod 9 = 1)

 3)  X =  5, Y =  5;     4)  X = 10, Y = 10.

1)   A = 9;                         

2)   A = 10;              

 

f) ( X mod 3 = 0) and (odd (X))

 3)  A = 19;                 4)  A = 11.

1)   X = 9;                         

2)   X = 7;                

 

g) not ((A>0) and (B>0) and (C>0))

 3)  X = 24;                 4)  X = 8.

1)   A =  1,  B =  2,  C =  3;         

2)   A = -1,  B = -2, C = -3;         

3)     A =  0,  B =  0,  C =  0;

4)     A = -1,  B =  2,  C =  3

 

h)                     (A=0) and  not (B=0)  or  not (A=0) and (B=0)      1)  A = 0, B = 0;                        3)  A = 1, B = 0;             2)  A = 0, B = 1;                    4)  A = 1, B = 1.

 

i)                       (X>0) and (Y<0) or (X<0) and (Y>0)

          1)  X =  1, Y = 1;                      3)  X =  1, Y = -1;           2)  X = -1, Y = 1;                4)  X = -1, Y = -1.

 

j) ((A>0) or (B>0)) and ((A<0) or (B<0))

         1)  A =  1, B =  1;           3)  A = -1, B = -1;          2)  A =  1, B = -1;               4)  A = -1, B =  1.

2.1.10. Найти и исправить ошибки:

 

a)   if   B > A < C  then S  =  ' A - наименьшее из A, B, C '

 

b)   if  abs (X) > 0  and  abs(X) < 1  then C := 1 / X ,  else C := X ,

 

c)   if  not (odd (X))  else  S := X - четное ;

 

d)   if  A < 0, B < 0  or  A > 0, B > 0   then C = 'A и B одного знака'       else   C = 'A и B разных знаков'.

 

 

2.1.11. Упростить программу, если это возможно,  и записать ее, используя

"ступени":

                   a)                                                            var  x: integer;

                PROGRAM  Example1;                        BEGIN

3)   X = 2,2;                      4)  X = 1,2.

      readln( x );   if  (x<5) and (x>3)          then begin   write( ' A' )

      end    else 

                 write( ' B ' );

                write( ' C ' )

                END.

 

b)  

      PROGRAM Example2;   const A=3.14;

                 var  x: integer;

                 BEGIN

      readln(x);    if (x<3) and (x>5)

                 then

                  write( ' A ' )  

                 else

                 write( ' B ' )

                 END.

       

c)  

      PROGRAM  Example3;           var  x: integer; 

           BEGIN

          readln(x);    if x<3 then begin            if x<5 then            write( ' A ' )           else write( ' B ' )

           end

            else  write( ' C ' );

            write( ' D ' )

           END.

          

d)  

            PROGRAM  Example4;

            var   x: integer;

           BEGIN

          readln(x);    if (x>3) then         if x=2 then   write( ' A ' )          else write( ' B ' )   else write( ' C ' );

            write( ' D ' )

           END.


e)  

      PROGRAM          Example5;   var  x: real;

                BEGIN  

                readln( x );

                  if ((x<5) or ( x>2)) 

                then

      write( ' A '  ) else            write( ' B '  );

                 write( ' C '  )

                END.

 

          

f)  

          PROGRAM  Example6;           var 

            x: real;

           BEGIN

          readln(x);    if (x>5) and (x<1) then

            write('  A '  ) 

            else

          write( ' B '  );         write( ' C '  ) END.


2.1.12. Упростить выражения, где переменная a - логического типа:

a)  

         a and a           a or true                   a xor false          a and not a  

           not a xor a and a  

           not (a and a)

b)              

a and true a or false a xor a a xor not a

 

 

 

 

 

not a and a and a not (a or a)

c)  a and false a or  not a a or a

           a xor true                          not a or a and a                 not (a xor a)

          

          

2.1.13.  Проверить истинность следующих равенств, где a и b - переменные логического типа:

          

a)    not a and not b = not (a or b);

b)   not a or not b = not (a and b).

 

 

2.1.14. Отметить на числовой прямой область, в  которой и только в которой, переменная a = true.

 

a)    a:= sqr( x ) < 9 ;

b)   a:= sqrt( x ) <= 3;

c)    a:= abs( x) > 2;

d)   a:= ( x>8 ) and ( x<8 ) and ( x=8 );

e)    a:= ( x > 6 )  or ( x<6 );

f)     a:= x div 3 = 5;

g)   a:= ( x mod 3 = 2 ) and ( x<=15 );

a)     a:=round(x)<5;     

b)    a:=x<=y*3;           

c)     a:=x+y>=0;           

d)    a:=not (x=y);         

e)     a:=(x=1) or (y=1);

f)      a:=sqr(x)+sqr(y)<0;

g)    a:=abs(x)+abs(y)<5;

h)    a:=(x>1) and (y<1).

h)   a:= ( x mod 5 < 3 ) and ( x>0 ) and ( x<10 );

i)      a:= 5 div x > 0; 

j)      a:= ( 8 mod x = 0 ) and ( x>0 ).

        

        

2.1.15. Нарисовать  на координатной плоскости область, в  которой и только в которой, переменная a = true. 

 Написать выражение,  определяющее переменную b = not a (в записи выражения нельзя  использовать not ).

 

a)     a:=round(x)=2;  

b)    a:=x<y/2 ;           

c)     a:=x*y<0;           

d)    a:=not (x*y<0); 

e)     a:=(x>1) and (y<1);

f)      a:=sqr(x)+sqr(y)>=0;

g)    a:=abs(x)<=5;

h)    a:=abs(x)=abs(y);

i)      a:=(x=1) and (y=2)

j)      a:=(x>1) or (y<1).

          

          

2.1.16. Нарисовать  на координатной плоскости область, в  которой и только в которой, переменная a = true. 

 Написать выражение,  определяющее переменную b = not a (в записи выражения нельзя  использовать  not).

 

 

 

2.1.17. Составить логическое выражение, для которого заштрихованная область является областью истинности.

          

 

2.1.18. Возможно ли при каких-нибудь значениях x, y, z  от нуля до десяти


получить предложения:

 

a)     Мама мыла раму.   

b)    Оля ела раму.          

c)     Оля раму.                 

 

   PROGRAM  Ifurok;          var   x, y, z:  byte;

d)    Мама ела пирожок.

e)     Оля мыла пирожок.

f)      Мама ела.


                BEGIN

   readln ( x, y, z );    if  x>5 then write( ' Мама ' )

    else write( ' Оля ' );        if  y mod 3 = 1 then

                           if  y>5 then write( ' ела' )

                                                  else write( ' мыла ' );

                     if  ( x div 2 = 4 ) and ( x mod 2 = 1 ) then

               if  z=4 then write( ' пирожок  ' )      else write( ' раму ' );

                     writeln( '.' )

                END.

2.1.19. Возможно ли при каких-нибудь значениях x, y, z от нуля до десяти получить предложения:

a)     Кошка спит за печкой.    

b)    Собака бежит за печкой. 

c)     Собака за мышкой. 

d)    Кошка бежит за мышкой.

e)     Собака спит за мышкой.

f)      Кошка бежит за .

       

   PROGRAM  Ifurok;          var   x, y, z:  byte;

                BEGIN

                      readln ( x, y, z);

                      if  (x>5) and (x<5) then write( ' Кошка ' )

                                                                      else write( ' Собака ' );

                     if  y div 3 = 2 then

                           if  y>7 then write( ' бежит за ' )

   else  write( ' спит за ' );  if  z=4  then

                                                 if (x div 3 = 2) and (x mod 3=2) then write( ' печкой ' )     else write( ' мышкой ' );

                     writeln( '.' )

                END.

          

          

2.1.20. Возможно ли при каких-нибудь  значениях  x, y, z от нуля до десяти  получить предложения:

a)    Компьютер имеет процессор.   d) Компьютер стоит в гараже.

b)   Трактор стоит.        e) Трактор стоит в гараже.

c)    Трактор в гараже.   f) Компьютер стоит .

        

 PROGRAM   Ifurok;  var   x, y, z:  byte;

                BEGIN

                      readln( x, y, z );

                     if  (x>5) and (x>7) then write( ' Компьютер ' )

                                                                    else  write( ' Трактор ' );

                      if  y>6 then if  y mod 3 = 2  then write( ' стоит ' )

                                                                                             else write( ' имеет ' );

                     if  (z div 3=0) and (z <> 0)  then

                          if (x>0) or (x<2) then write( ' процессор ' )

                                                                        else write( ' в гараже ' );

                     writeln( '.'  )

                END.

2.1.21. Возможно ли при каких-нибудь значениях x, y, z от нуля до десяти получить предложения:

 

a)     Рыбка плавает в пруду.

b)    Птичка летает в пруду.

c)     Птичка под облаками.

d)    Рыбка летает под облаками.

e)     Птичка плавает под облаками.

f)      Рыбка летает .

       

 PROGRAM  Ifurok;  var   x, y, z: byte;

                BEGIN

                      readln( x, y, z );

                     if  (x>5) or (x<6) then write( ' Рыбка ' )

                                                                   else write( ' Птичка ' );

                     if  y>7 then

                           if  y mod 2 = 3 then write( ' летает ' )

                                                                else write( ' плавает ' );

                     if  z mod 3=0 then

                                                    if (x div 2 > 4) and (x mod 2<>1) then write( ' в пруду ' )            else write( ' под облаками ' );

                     writeln( '.'  )

                END.


2.1.22. Заполнить   таблицу:  

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

 в колонку False записать одно из значений переменной x, при кото-

ром  выражение ложно; 

 в  колонке Чертеж  изобразить  решение на числовой прямой;  колонку Упростить заполнить в том случае, если выражение можно

упростить.

           

            a)

Выражение

True

False

Чертеж

Упростить

( x<=1 )  or ( x>15 )

 

 

 

 

( x>1 ) and  ( x>15) 

 

 

 

 

( x>1 ) or ( x<15 )

 

 

 

 

( x<1 ) and (x>15)

 

 

 

 

x  div 4 < 5  

 

 

 

 

 

b)

Выражение

True

False

Чертеж

Упростить

( x>2 ) and (x<=13 )

 

 

 

 

( x=13 ) or  (x<13) 

 

 

 

 

( x>2 ) or ( x<13 )

 

 

 

 

( x=2 ) and (x>13)

 

 

 

 

x mod 3 > x div 3  

 

 

 

 

 

c)

Выражение

True

False

Чертеж

Упростить

( x>=3 ) and (x<10 )

 

 

 

 

( x>3 ) or  ( x>=10) 

 

 

 

 

( x>3 ) or ( x<10 )

 

 

 

 

( x=10 ) and ( x<10 )

 

 

 

 

 10 mod x = 1 

 

 

 

 

 

d)

Выражение

True

False

Чертеж

Упростить

( x<7 ) or ( x>8 )

 

 

 

 

( x<7 ) and  (x<8 ) 

 

 

 

 

( x<7 )  and  ( x>8 )

 

 

 

 

( x=7) or ( x>8 )

 

 

 

 

x  mod  8 <=  7 

 

 

 

 

 

2.2. Задачи.

 

2.2.1. С клавиатуры вводятся два целых числа. Сравнить эти  числа. Результат вывести в виде  3<5  или  3=3,  или  3>2. 

 Процедуру write для вывода результата  разрешается использовать только один раз.

 

2.2.2. Дано два целых числа А и В.  Строковой переменной С  присвоить  значение  'Да',  если число А делится на B;  значение 'Hет', если число А  не  делится на В; значение 'Конечно', если А равно В.

 

2.2.3. По телевидению идет передача концерта. Кто  раньше  услышит первые звуки концерта: зритель в зале, находящийся в 25 м от сцены, или телезритель, находящийся на расстоянии  20000  км  от концертного зала? 

Примечание. Звук  распространяется  со  скоростью  0,34 км/с, а электромагнитные волны со скоростью 300000 км/с.

 

2.2.4. Решить уравнение AX + В = 0.

             

2.2.5. Трамвайный билет имеет шестизначный номер. Выяс-нить, является ли билет "счастливым".

             Билет  назовем  "счастливым", если  сумма первых трех цифр равна сумме последних трех цифр. 

          

2.2.6. Определить количество целых чи- сел среди А, В и С.

 

2.2.7. Даны вещественные числа А, В и С. Выяснить, какие из  них являются целыми нечетными числами, и найти их сумму.

 

2.2.8. Определить, делителем каких целых чисел из А, В и  С  является целое число N.

 

2.2.9. Каждое из чисел А и В отлично от нуля. Определить,  имеют ли эти числа одинаковые знаки.

2.2.10. Значения переменных А, В, С,  D  вводятся  с  клавиатуры. Выяснить, есть ли среди них переменные, имеющие нулевые значения.

 

2.2.11. Выяснить,  пройдет ли кирпич  в круглое отверстие.

          

2.2.12. Из бумаги вырезали круг радиуса R и квадрат  со  стороной A. Выяснить, что под чем "спрячется".

 

2.2.13. Даны два числа А и В. Hайти:

a)     наибольшее из чисел А и В;

b)    наименьшее из чисел А и В.

 

2.2.14. Даны три числа A, B и C. Hайти:

a)     наибольшее из этих чисел;

b)    наименьшее из этих чисел.

 

2.2.15. Hайти среди различных чисел А, В и С наименьшее и заменить  значение переменной, имеющей это значение, наибольшим из чисел А, В и С.

 

2.2.16. Дана функция y a x2 b x c. Найти минимальное и максимальное значения функции на отрезке [ m, n ] оси абсцисс.

 

2.2.17. Даны действительные числа А, В и С. Подобрать целые  числа М и К так, чтобы:  выполнялись неравенства: М < А < К, М < В < К, М < С < К;  значение  М - К  было наименьшим из возможных.

   

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

 

2.2.19. Дано число Х.

            Hапечатать в порядке убывания числа: X2, X, X

          

2.2.20. Вычислить, если это возможно, значение выражения:

 ;

b)  2.2.21. Дан номер года. Определить количество дней в этом году. 

 Примечание. При решении задачи принять во внимание, что в современном (григорианском) календаре каждый год, номер которого  делится на 4, является високосным, за исключением тех номеров, которые делятся на 100 и не  делятся  на  400.

          

2.2.22. Дано четырехзначное число N. Выяснить:

a)   является  ли  число  палиндромом   ("перевертышем");

b)  верно ли, что все 4 цифры  этого числа различны.

 

2.2.23. Определить,  можно ли вклеить прямоугольную фотографию в прямоугольный  альбом так, чтобы стороны фотографии были параллельны сторонам альбома.

 

2.2.24. Даны целые числа h и m, указывающие момент времени  "h часов m минут".

 Определить наименьшее число полных  минут,  которые должны пройти до того момента, когда  часовая  и  минутная стрелки совпадут на циферблате.

 

2.2.25. Дано целое число К от 1 до 180. Определить, какая  цифра находится в К-й позиции последовательности 

                                                                                     

 10111213141516 ... 9899,        в которой выписаны подряд все двузначные числа.

 

2.2.26. Определить, может ли кирпич, имеющий форму  прямоугольного параллелепипеда с ребрами А, В и С, пройти через  прямоугольное отверстие  со  сторонами Х и Y.  

           Считать, что одна из сторон отверстия  параллельна одной из сторон кирпича.

 

2.2.27. Определить взаимное расположение точки, заданной своими координатами,  и окружности, заданной координатами центра и радиусом.

 

2.2.28. Определить взаимное расположение прямой, заданной двумя точками и окружности, заданной координатами центра и радиусом.

 

2.2.29. Дано квадратное уравнение a x2 b x c 0. Проверить, есть ли  корни у этого уравнения и найти их.

 

2.2.30. Определить по времени варки как сварилось яйцо ( 2 минуты - всмятку, 3 - в мешочек, 5 - крутое).

 

2.2.31. По температуре определить состояние воды ( твердое, жидкое, газообразное).

 

2.2.32. Две окружности заданы координатами своих центров и радиусами. Определить, имеют ли данные окружности общие точки.

          

2.2.33. Точка на плоскости задана своими координатами. Определить:

a)     какой координатной  полуплоскости она принадлежит;

b)    какой координатной четверти она принадлежит.

 

2.2.34. После двукратного выполнения программы информация на экране выглядела так:

Стой! Кто идет?

РОМАШКА 

Проходи!   

 

Стой! Кто идет? 

ВАСИЛЕК 

Руки вверх!

         Написать программу, работающую точно так же.

 

2.2.35. После двукратного выполнения программы информация на экране выглядела так:

 

Привет! 

Ты взял сегодня зонтик? (Д/Н)  Д  Мудрое решение! 

 

Привет! 

Ты взял сегодня зонтик? (Д/Н) 

Н

А синоптики обещали дождь!

         Напиcать программу, работающую точно так же.

2.2.36. Дана плотность жидкости и  плотность  тела.  Определить, что произойдет с некоторым телом, опущенным в жидкость.  Например, свинец утонет в воде,  а дерево нет.

 

2.2.37. Для ремонта в кабинете информатики купили N рулонов обоев. Проверить, хватит ли обоев на оклейку  всего класса.

           Все необходимые для решения задачи данные определить самостоятельно.

 

2.2.38. Андрей, просматривая программу  телевидения  на  воскресенье,  выписал названия,  время начала и продолжительности трех    передач,  которые  ему  хотелось бы посмотреть. В h часов m  минут  он включил телевизор. Какую передачу смотрит Андрей?

 

2.2.39. На координатной плоскости построили квадрат, заданный координатами двух противоположных вершин:

a)     со сторонами параллельными  осям координат; 

b)    с диагоналями параллельными  осям координат.

           Определить, принадлежит ли точка с координатами x, y  квадрату?

       

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

          

2.2.41. Два населенных пункта заданы своими координатами и соединены прямолинейным участком дороги. Определить, находится ли на этом же участке третий пункт. 

          

2.2.42. Четыре населенных пункта A, B, C, D  соединены  прямыми участками дорог AB и CD. Определить, пересекаются ли эти два участка дорог.

 

2.2.43. Клетка  на  шахматной  доске  определяется  парой  чисел. Определить,  одного ли цвета две клетки.

 

2.2.44. Даны координаты клетки на шахматной доске, на которой  находится конь. Напечатать координаты всех клеток, куда конь  может пойти.

 

2.2.45. Клетка  на  шахматной  доске  определяется  парой  чисел. Известен некоторый  ход.  Определить,  какая  шахматная фигура могла его сделать.

2.2.46. Клетка  на  шахматной  доске  определяется  парой  чисел. Определить, являются ли две клетки начальным и  конечным положением одного хода:

a)   короля;     

b)  ферзя;        

c)   ладьи;

d)    слона;        

e)     коня;         

f)      пешки.

 

2.2.47. Клетка  на  шахматной  доске  определяется  парой  чисел. Известно положение двух фигур разного цвета.  Какой из фигур вы не посоветовали бы здесь находиться, если эти фигуры:

a)     слон и ладья;                    d) конь и ферзь;

b)    слон и  конь;           e)  конь и пешка;

c)     конь и ладья;          f) конь и король.

          

2.2.48. Кузнечик находится в центре круглого стола. Затем  он делает N  прыжков на север, потом E прыжков  на восток, потом S прыжков на  юг, потом W прыжков на запад. Определить, остался ли кузнечик на столе после всех прыжков.

 

2.2.49. Все стены дома имеют длину 5 м. Человек прошел от  юго-восточного угла дома А метров на юг, В метров на восток и С  метров на север и посмотрел на свой дом. 

 Написать программу, которая  определяет, какие стены (северную, западную, южную, восточную) увидит человек.

 

2.2.50. Человек находится в центре поля, ограниченного рвом, со сторонами параллельными сторонам света. Он  задумал  выполнить сначала N шагов на север, потом E - на восток, потом S - на юг, потом W - на запад. Сможет ли человек выполнить  задуманное?

 

2.2.51. Автомат проводит кистью по отрезку [10,80] от точки A до точки B, а потом от точки C до точки D. 

          Написать программу,  которая определяет, какая часть отрезка окраше-

на.

 

2.2.52. Тонкая синяя стена высотой 3 м и длиной 6 м  (ось  X)  и тонкая зеленая стена высотой 3 м и длиной 3 м (ось  Y)  образуют прямой угол. Что увидит человек, стоящий в точке с целочисленными координатами X, Y и смотрящий в сторону угла  (начала  координат)?

 

2.2.53. Шоссе соединяет пункт А и B по прямой. АТС находится в точке С. Радио-телефон может  работать  на  расстоянии  N метров от АТС. Можно ли поговорить на дороге из А в B? Если да, то на каком расстоянии от пункта А лучше всего вести переговоры?

 

 


 

3.  АЛГОРИТМЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ.

3.1. Упражнения.

3.1.1. Найти ошибки:

a)   S:= 0; for X:= 0.1 to 0.9 do S:= S + X;

b)  P:= 1; for X:=1 to sqrt(N) do P:=P*X;

c)   N:= 10; P:=1;  for X:= N downto N/2 do P:= P*X;

3.1.2. Сколько раз выполнится тело цикла?

a)   for i:=1 to 4 do x:=x+5;

b)  for i:=1 to 2 do x:=x+1;

c)   for i:=10 to 5 do  x:=x-5;

d)  for i:=1 downto 3 do x:=x-1;

e)   for i:=9 downto 8 do x:=x-1;

f)    n:=1;  for i:=1 to n do n:=10; 

g)  n:=0;  for i:=1 to n+2 do  n:=n+1;

3.1.3. Сколько раз выполнится строка, помеченная  комментарием {?}? 

a)                                                                                                                                       c)  

                      BEGIN                                             BEGIN

    for i:=3 to 1 do                  for i:=3 downto 1 do       s:=s+i; {? }           s:=s+i; {? }

                      END.                                                END.

b)                                                                                                                                      d)  

                      BEGIN                                             BEGIN

    for i:=1 to 3 do                  for i:=1 downto 3 do       s:=s+i; {? }           s:=s+i; {? }

                      END.                                                END.

3.1.4. Даны фрагменты программ. Ответить на вопросы:  Какого типа параметр цикла?

 Какие операторы образуют тело цикла?  Что будет напечатано?

a)   for i:= '1' downto '5' do write(i);

b)  for  i:=0 to 5 do; write(i);

c)   for  i:=true to false do write(i);

d)  for  i:=3 downto 1 do begin x:=3.7; write(i) end;

e)   n:=5; m:=0;  for  i:=n downto m do begin m:=4; write(i) end;

f)    n:=0; m:=5;  for  i:=n to m do ; begin  i:=n; write(i) end;

3.1.5. Даны фрагменты программ. Ответить на вопросы:  Какого типа параметр цикла?

 Какие операторы образуют тело цикла?  Что будет напечатано?

a)   for  i:=5 downto 1 do; write(i);

b)  for  i:= '2' to '1' do write(i);

c)   for  i:=1 to 3 do begin x:=3; write(x) end;

d)  for  i:=true downto false do write(i); 

e)   n:=2; m:=-2;  for i:=n downto m do begin  n:=m; write(i) end;

f)    n:=1; m:=8; for  i:=n to m do begin  m:=3; write(i) end;

3.1.6. Дописать фрагменты программ так, чтобы оператор Write выполнялся указанное количество раз.

 

Фрагмент программы:

Количество:

a) for  i:=-1

         to                do        write(i);

5

b) for  i:=

         downto  5    do        write(i);

2

c) for  i:=

         to 10           do        write(i);

1

                d) for  i:= 3         downto        do        write(i);                               0

3.1.7. Дописать фрагменты программ так, чтобы оператор Write выполнялся указанное количество раз.

                                                  Фрагмент программы:                                   Количество:

a)   for  i:=     to  -3 do      write(i);       7

b)  for  i:=0   downto       do      write(i);       2

c)   for  i:=7   to       do      write(i);       1

d)  for  i:=     downto  7    do      write(i);       0

3.1.8. Дописать фрагменты программ так, чтобы оператор Write выполнялся указанное количество раз.

                                                  Фрагмент программы:                                   Количество:

a)   for  i:=20           to       do ;    write(i);       2

b)  for  i:=2   to 6    do      x:=x+1;write(x);   5

c)   for  i:=6   to 2    do ;    write(i);       0

d)  for  i:=20           downto  2    do      write(i);       1

3.1.9. Дописать фрагменты программ так, чтобы оператор Write выполнялся указанное количество раз.

                                                  Фрагмент программы:                                   Количество:

a)   for  i:=1   to       do ;    write(i);       2

b)  for  i:=1   to 10 do      x:=x+1;write(x);   10

                                                  Фрагмент программы:                                   Количество:

c)   for  i:=5   downto 10 do ;      write(i);       0

d)  for  i:=5   to  10           do      write(i);       1

3.1.10.Дана программа. Что будет напечатано?

a)

 PROGRAM Example1;  var  a, c, x: byte;

 BEGIN

 a:=1; c:=3;  for x:=a to c do  write(x:3)

 END.

 

d)

PROGRAM Example4;

 var  a, x: byte;

 BEGIN

 a:=10;

 for x:=a downto pred(a) do  write(x:3)

 END.

b) 

 PROGRAM Example2;  var  a, c, x: byte;

 BEGIN

 a:=1; c:=3;  for x:= a downto c do  write(x:3)

 END.

 

 

e)

PROGRAM Example3;

 var  a, x: byte;

 BEGIN

 a:=10;

 for x:=a downto succ(a) do  write(x:3) END.

c)

            PROGRAM Example5;

 var  a, b, c:byte;          x: char;

 BEGIN

 a:=1;   b:=2; 

 c:=3;

 for x:='a' to 'c' do  write(x:3)

         END.

 

f)

 PROGRAM Example6;  var  a, b, x: byte;

 BEGIN

 a:=1; b:=2;

 for x:= a to b do  begin  write(x:3);   b:=b+1

 end

 END.

3.1.11.Дана программа. Что будет напечатано?

a)                                                                                                                                                    d)

 PROGRAM Example1;    PROGRAM Example4;  var a, y: byte;        var a, y: byte;

 BEGIN         BEGIN  a:=5;       a:=5;

 for y:=a to succ(a) do  for y:=a to pred(a) do  write(y:3)         write(y:3)

                END.                                                    END.

b)                                                                                                                                                   e)

 PROGRAM Example2;            PROGRAM Example5;  var a, c, y: byte;      var a, c, y: byte;

                BEGIN                                                  BEGIN


 a:=1; c:=3;  for y:= c downto a do

    write(y:3)

 END.

 a:=5; c:=1;  for y:= a to c do

    write(y:3)

 END.


c)

 PROGRAM Example3;  var a, b, y: byte;

 BEGIN

 a:=1; b:=5;

 for y:= a to b do

 begin

  write(y:3);  b:=b div 2  end  END.

f)

 

 

 

PROGRAM Example6;

 var a, c:byte;     y: char;

BEGIN

 a:=1; 

 c:=5;

 for y:= 'c' downto 'a' do  write(y:3) END.

3.1.12. Дана программа. Сколько раз выполнится строка, помеченная комментарием {?}? 

a)

 PROGRAM Example1;  var  x:byte;

    BEGIN    x:=5;

    while x <> 0 do       x:=x-1 {? }

         END.

 

 

 

 

c)

PROGRAM Example3;  var  x:byte;

BEGIN           x:=5;

    while x > 0 do   x:=x+1 {? } END.

b)

 PROGRAM Example2;  var  x:byte;

    BEGIN    x:=0;

    while x > 0 do     x:=x+5 {? }

         END.

 

 

 

d)

PROGRAM Example4;  var  x:byte;

BEGIN           x:=10;

         while x <> 5 do

               x:=5 {? }

END.

3.1.13. Дописать фрагменты программ  так, чтобы оператор Write выполнялся указанное количество раз.

                                                  Фрагмент программы:                                   Количество:

a)   while   a   do      a:=not a; write(a);           0

b)  while x<1          do      x : =x+2 ;write(x);                   2

c)   while       do      write( 'пример 1 ' );                 бесконечно

d)  while x<1          do ;    x:=x+2 ;write(x);          0

e)   while a    do      begin  write(a)  end;                 1

f)    while x<-3        do      write(x);                0

3.1.14. Дописать фрагменты программ  так, чтобы оператор Write выполнялся указанное количество раз.

Фрагмент программы:

 

Количество:

                a) x:=6; while         do      write(x);

 

бесконечно

               b)      while             do      write( ' пример 1 ' );

 

0

                c)      while not a     do ;    a:=not a; write(a)

 

0

               d)      while x>=5    do      begin   write(x) end;

 

1

                e)      while x>-1     do      x : =x+1 ;write(x);

 

3

f)      while   a        do      a:=not a; write(a); 3.1.15. Дана программа. Ответить на вопросы:

 

1

 Какие операторы образуют тело цикла?

 Сколько раз выполнится тело цикла?  Что будет напечатано программой?

                   a)                                                             d)

    PROGRAM Example1;                  PROGRAM  Example4;           var  S: integer;                  var  x, S: real;

 BEGIN  BEGIN  S:=100;  S:=0;

       while S<100 do              x:=1.5;        begin          while x<2.5 do

                                  S:=S div 10                                            x:=x+0.5;

                            end;                                                       S:=S+x;

                            write( ' S= ', S );                                     write( ' S=', S:5:2);

                            writeln                                                   writeln

                      END.                                                     END.

                   b)                                                           e)

    PROGRAM  Example2;                  PROGRAM  Example5;           var  x, S: byte;                  var  x: integer;  k: byte;

                      BEGIN                                                  BEGIN

                            x:=0;  S:=0;                                            x:=12;

                            while x<3 do;                                         while x>0 do

                            begin                                                     begin

 S:=S+x;    x:=x mod 3;   x:=x+1  k:=k+1  end;          end;

                            writeln( ' S= ', S )                                    writeln( ' x= ',  x:3 )

                      END.                                                     END.


c)

    PROGRAM  Example3;           var  i, K:  integer;

     BEGIN      K:=1;          i:=10;          while i<10 do;       begin

      i:=i-2;          K:=K*i

f)

 PROGRAM  Example6;       var  S, K, A: integer;

          BEGIN

               S:=0;

               K:=0;

               A:=3;

      while A<>0 do      readln(A);   S:=S+A; 


                            end;                                                       K:=K+1;

                            writeln( ' K= ',  K:3 )                                writeln( 'S/K=', S/K:3:1)

                      END.                                    END.

3.1.16.Дана программа. Что будет напечатано?

a)

    PROGRAM Example1;        var n: byte;

         BEGIN

               n:=10;

    while n mod (n-1)>0 do      n:=n-1; write(n)

         END.

 

 

 

 

 

 

 

c)

PROGRAM Example3;   var n: byte;

BEGIN

  n:=19;

  while (n+1) div n <>2do 

  n:=n-1; write(n)

END.

b)

    PROGRAM Example2;        var n: byte;

         BEGIN

               n:=34;

         while n div (n-1)<n /(n-1) do 

    n:=n-1; write(n)

         END.

 

 

 

 

 

 

 

d)

PROGRAM Example4;   var n: byte;

BEGIN   n:=8;

  while (n+1) mod (n -1)<>0do

  n:=n-1;  write(n)

END.

3.1.17. Дана программа. Упростить программу так, чтобы суть задачи не изменилась.

a)  

 PROGRAM Example1;  var x:byte;

    BEGIN    x:=4;

      while x<20 do         begin

  if odd(x) then write(x);   x:=x+1

      end    END.

b)   

 PROGRAM Example2;  var x:byte;

    BEGIN    x:=0;

               while x<10 do x:=x+2;

               write(x)

         END.

 

 

 

 

 

 

c)       

PROGRAM Example3;  var x:byte;

BEGIN           x:=10;

         while x>0 do            begin

      if not odd(x) then write(x);        x:=x-1

         end

END.

d)       

PROGRAM Example4;  var x:byte;

BEGIN           x:=-5;

         while x>-10 do x:=x-1;

      write(x) END.

3.1.18. Дописать фрагменты программ  так, чтобы оператор Write выполнялся указанное количество раз.

         Фрагмент программы:                                                     Количество:

a)            repeat         write(x )       until          ;                             

                            1 

b)           repeat  x:=x+1; write( x ) until x   2                       

                            2

c)            repeat  x:=x+1       until x   5 ; write( x );               

                            0

d)           repeat  x:=x-2; write( x )  until x=     ;                    бесконечно

  

  

3.1.19. Дописать фрагменты программ  так, чтобы оператор Write выполнялся указанное количество раз.

         Фрагмент программы:                                                     Количество:

a)            repeat  x:=x+1       until x >5 ;                     

                            1

b)           repeat  x:=x+1; write( x ) until x   4                       

                            3

c)            repeat   write( x )  until                      бесконечно

d)           repeat  x:=x-1        until x   25 ; write( x );   

      0   

  

3.1.20. Дана программа. Ответить на вопросы:

 Какие операторы образуют тело цикла?

 Сколько раз выполнится тело цикла?  Что будет напечатано программой?

a)  

 PROGRAM  Example1;  var  x, y: integer;

                      BEGIN

       x:=10;         repeat         y:=x*x; x:=x-4

                            until x=0; 

                             writeln( x:5, y:5 )

                      END.

          

          

 

 

 

b)  

 

 

 

 

PROGRAM  Example2; var  k: integer;

BEGIN

k:=10; repeat

           writeln( ' Привет ' );

         k:=k-1

until k>=1 END.

3.1.21. Сколько раз выполнится строка, помеченная комментарием {? }?

                   a)                                                          b)  

 BEGIN  BEGIN  x:=4;     x:=1;

                            repeat                                                     repeat

                                  x:=x-2 {? }                                             x:=x+2 {? }

                            until x>6                                                until x>5

                      END.                                                     END.


a)  

    BEGIN      x:=0;           repeat         x:=x+3 {? }

                            until x=7

                      END.

b)  

                  BEGIN

       x:=15;         repeat         x:=x mod 3 {? }

       until x=0        END.

       

          

c)  

    BEGIN         x:=10;         repeat         x:=x-5 {? }

                      until x=1

               END.

d)  

      BEGIN         x:=7;           repeat

                            x:=x -1 {? }

                       until x div 3 <x mod 3

             END.


3.1.2.  Дописать раздел описаний программы.  Что будет  напечатано программой?

a)  

    PROGRAM Example1;        var

         BEGIN

 s:=0;  x:=1;  for i:=1 to 3 do  x:=x+1;

               s:=s+x/2;

                write( x, s:5:2, ' x-s ' )

         END.

b)  

    PROGRAM Example2;        var

    BEGIN    x:=5;

               y:=true;

      c:= ' Turbo ' ;        while not y do        x:=x+0.5;

               c:=c+ '-Pascal ';

               write( ' x+1 ', c, x:5:1 )

         END.

          

 

 

 

 

 

 

c)   

PROGRAM Example3;

         var

BEGIN  p:=1;  t:=false;  for k:=5 downto 5 do  p:=p*k;

         t:=not t;           write( p, t) END.

d)  

PROGRAM  Example4;           var

BEGIN           x:= ' 3.2 ';        y:=true;           repeat

      x:=x+x;        y:=not y

 until y;  write( x, y ) END.

3.1.3. В программе Example1 дописать раздел описаний.

 Заполнить пропуски в  программах Example2 и Example3 так, чтобы они решали ту же задачу,  что и Example1.

          

           PROGRAM Example1;

                  var s:

                            i:

           BEGIN

                  for i:=5 downto 1 do

                  begin

                         s:=sqr(i);

                          writeln( ' i= ', i, '  s=' , s )

    end    END.

          

    PROGRAM Example2;               PROGRAM Example3;   var s:          var s:

           i:                 i:     BEGIN                 BEGIN

                        

                   while         do                                        repeat

                        

                   s:=sqr(i);                                              s:=sqr(i);

                        

                  writeln( ' i= ',  i, '  s=', s )                        writeln( ' i= ', i, '  s=' , s )

                        

           END.                                                    END.

          

          

3.1.4. В программе Example1 дописать раздел описаний.

 Заполнить пропуски в  программах Example2 и Example3 так, чтобы они решали ту же задачу,  что и Example1.

          

    PROGRAM Example1;      var

    BEGIN           s:=0;

    for i:=1 to 5 do      s:=s+i/2;

                   writeln( ' s=', s )

           END.

          

      PROGRAM Example2;               writeln( ' s= ', s )   var               

    BEGIN           END.          s:=0;           

                       PROGRAM Example3;   while         do                 var

                       BEGIN       s:=s+i/2;                s:=0;

                        

                  repeat

     

                  s:=s+i/2;

     

          

 

 

 

until

writeln( ' s= ', s )

END.

3.1.5. В программе Example1 дописать раздел описаний.

 Заполнить пропуски в  программах Example2 и Example3 так, чтобы они решали ту же задачу,  что и Example1.

          

    PROGRAM Example1;        var

         BEGIN

               x:=0.1; s:=0;

      while x<=0.3 do    begin

                      s:=s+x; x:=x+0.1

               end;

                writeln( ' s= ', s )

         END.

 

 

 

          

    PROGRAM Example2;        var

    BEGIN    s:=0;

       

               for x:=     to      do

       

               s:=s +           ;

       

               writeln( ' s=' , s)

         END.

 

 

 

 

 

 

 

 

 

 

 

PROGRAM Example3; var

BEGIN s:=0;

 

repeat

         x:=x+0.1;            s:=s+x

until

writeln( '  s=', s )

END.

3.1.6. В программе Example1 дописать раздел описаний.

 Заполнить пропуски в  программах Example2 и Example3 так, чтобы они решали ту же задачу,  что и Example1.

          

    PROGRAM Example1;      var

           BEGIN

    x:=1;           s:=1;      repeat

         s:=s*x;        x:=x+1      until x>2;

                   writeln( 's= ' , s )

           END.

         

 PROGRAM Example2;  PROGRAM Example3;  var  var

 BEGIN  BEGIN  s:=1;           s:=1;

                        

                  for         to      do                                   while           do

                        

                   s:=s*x;                                                 s:=s*x;

                        

                  writeln( ' s= ', s )                                    writeln( '  s=' , s )

           END.                                                    END.

         

          

3.1.7. Сформулировать условие задачи к программе:

                   a)                                                    b)  

 PROGRAM Example1;  PROGRAM  Example2;  var  p, x: integer;  var  s, x, i: integer;

                  BEGIN                                           BEGIN

                         p:=1; x:=1;                                      randomize; s:=0; i:=0;

                          while x < 5 do                                 repeat

 begin  x:=random(6)+1;  p:=p*x; x:=x+1  i:=i+1;  s:=s+x

                          end;                                                until s>21;

                         writeln( ' p= ', p )                             writeln( ' i=', i )

                  END.                                              END.

3.1.8. Сформулировать условие задачи к программе:

a)  

    PROGRAM Example1;   var  p, x: integer;

                                  lakmus: boolean;

                  BEGIN

                         randomize;

         lakmus:=false;      x:=1;

         while x < 5 do       begin

                               p:=random(10);

      if odd(p) then lakmus:=true;     x:=x+1

                          end;

                         writeln( 'lakmus=',lakmus)

                   END.

b)  

               PROGRAM  Example2;

                      var  max, x, n, i: integer;

               BEGIN

 randomize;  max:=0;  i:=0;  repeat  x:=random(10)+1;  i:=i+1;  if max<x then   begin  max:=x;   n:=i

     end  until  i=10;  writeln( ' m=', max,' n= ', n)

               END.

          

          

3.1.9. Сформулировать условие задачи к программе:

a)  

                  PROGRAM Example1;

                         var  p, x, prev: integer;

                                  lakmus: boolean;

                  BEGIN

         lakmus:=true;        readln(p);           for  x:=1 to 5 do

                         begin

      prev:=p;      readln(p);    if prev>p then lakmus:=false;

                          end;

               if  lakmus  then writeln( ' вверх ' )           else writeln( ' не вверх ' )

                  END.

b)  

                  PROGRAM Example2;

        var  p, x, prev: integer;     lakmus: boolean;

                  BEGIN

         lakmus:=true;        readln(p);

         for  x:=5 downto 1 do     begin

                               prev:=p; readln(p);

                               if prev*p>=0 then lakmus:=false

                          end;

                          if   lakmus then writeln( ' чередуются ' )

                                                    else writeln( ' не чередуются ' )

                  END.

       

       

3.1.10. Найти и исправить ошибки в  программе, которая  должна находить среднее арифметическое пяти чисел, введенных с клавиатуры.

                   a)                                                        b)  

                   PROGRAM  While;                            PROGRAM  repeat;

 BEGIN  BEGIN  k:=0;       k:=1;

                          while k<=5  do                                   repeat do 

                                k:=k+1; readln(a);                               S:=S+a;

                               SA:=(SA+ a) / 5                                  readln(a); k:=k+1

                          end;                                                    until  k<5;

                         write( SA)                                          write( S:5:1)

                  END.                                                  END.

3.1.11. Что будет напечатано программой, если при ее выполнении были введены числа:

a)     1, 30, 23, 0 ;

b)    2, 3, 2, 0  ?

          

 PROGRAM  proverka;    var  x, num: integer;

                          logik: boolean;

           BEGIN

    logik:=true;           num:=0;      repeat

                         num:=num+1;

                         readln(x);

                         if  (odd(x)=odd(num))  and  (x<>0)  then logik:=false

                  until  x=0;

               if   logik  then writeln ( ' Yes ' )        else writeln( ' No ' )

           END.

          

          

3.1.12. Что будет напечатано программой, если  при ее выполнении  были введены числа:

a)     2, 10, 2, 0;

b)    10, 2, 2, 3, 0?

          

 PROGRAM  Example;  var  x, prev: integer;  logik: boolean;

                                { prev - предыдущее число }

           BEGIN

 logik:=false;  readln(x);  while x<>0 do   begin    prev:=x;  readln(x);

    if (x=prev)  and  (x<>0) then logik:=true

  end;

               if   logik  then writeln ( ' Yes ' )        else writeln( ' No ' )

           END.

3.1.13. Что будет напечатано программой, если  при ее выполнении   были  введены числа: 

a)     8, 4, 2, 0;

b)    3, 5, 5, 0 ?

          

 PROGRAM  Example ;  var  x, prev: integer;  logik: boolean;

           BEGIN

    logik:=true;           readln(x);      while x<>0 do       begin

         prev:=x;      readln(x);

                         if (x>prev)  and  (x<>0) then logik:=false

                   end;

    write( ' Answer: ' );         if   logik  then writeln ( ' Yes ' )           else writeln( ' No ' )

           END.

          

          

3.1.14. Найти и исправить ошибки в  программе, которая  должна проверять, все ли из введенных N чисел  целые.

 

PROGRAM Example; const N=5;

var   i: integer; a: real; priznak: boolean; 

BEGIN

for  i:=1  to  n  do begin write( ' Введите число: ' ); readln(a);

if  not frac(a)=0 then priznak:=false;

end;

write( ' Ответ: ' );

if  priznak  then write( ' Да, все числа целые. ' ) else write( ' Нет ' )

END.

3.1.35. Найти и исправить ошибки в программе, которая должна проверять, ecть ли среди N введенных чисел  целые.

 

PROGRAM Example;

var   k: integer;  x: real;   answer: boolean; 

BEGIN

for  k:=n downto  1  do begin readln(x);

if   trunc(x)=x then answer:=true  else answer:=false;

end;

if  answer then write( ' Yes ' )  else write( ' No ' )

END.

 

 

3.1.36. Дана программа. Ответить на вопросы: 

 Что будет напечатано программой?

 Cколько раз выполнится строка помеченная комментарием {?} 


a)

PROGRAM  Table1; const n=3;   m=5; var  i, j: byte;

BEGIN

for i:=1 to n do begin

for j:= 1 to m do

write( ' X ' );   {?}

writeln

end END.

b) 

PROGRAM  Table2; const n=2;

var  i, j: byte;

BEGIN

{?}for i:=1 to n do for j:= 1 to n do write( ' * ' )

END.

c)

PROGRAM  Table3; const n=3;   m=2; var  i, j: byte;

BEGIN

for i:=1 to n do begin

{?}for j:= 1 to m do write( ' + ' );

write( ' / ' ) end END.

d) 

PROGRAM  Table4; const n=3;

var  i, j: byte;

BEGIN

for i:=1 to n do   write( ' a ' )  {?} for j:= i+1 to n do     END.

3.1.37. Дана программа. Ответить на вопросы: 

 Что будет напечатано программой?

 Cколько раз выполнится строка помеченная комментарием {?} 

a)

PROGRAM  Table1; const n=2;  

var  i, j: byte;

BEGIN

for i:=1 to n do begin

write( '( ' );    {?} for j:= 1 to n do write( '        ' );   

write ( ' ) ' )

end END.

b) 

PROGRAM  Table2; const n=3; 

var  a, b: byte;

BEGIN

writeln; for a:=1 to n do write( ' -  ' );

writeln; for  a:=1 to n do begin

for  b:= 1 to a do

write( ' o ' );    {?}

writeln

end END.

 c) 

PROGRAM  Table3; const n=3; 

var  a, b: byte;

BEGIN

writeln; for  a:=1 to n do begin

for  b:= n downto a do write( ' o ' ); writeln       {?}

end END.

d) 

PROGRAM  Table4; const n=4;

var  i, j: byte;

BEGIN

for i:=1 to n do  write( ' x '); writeln; for i:=1 to n-2 do begin

write( ' x ' );  for j:= 1 to n-2 do  write( ' o ' );

writeln( ' x ' )     {?}

end; for i:=1 to n do  write( ' x ');

END.


3.2. Задачи.

3.2.1. Составить программу, по  которой  компьютер  выводит заданное слово N раз.

3.2.2. Составить программу, по которой компьютер многократно вычисляет сумму А + В при различных значениях А и В. В конце каждого этапа появляется запрос о продолжении или прекращении вычислений: "Завершить программу? (Д/Н)".

3.2.3. Вычислить значения функции  y = а / х + b при x=0, 1, 2, 3,...,10. Значения a и b вводятся с клавиатуры.   Результат вычислений вывести в виде таблицы.

3.2.4. Вычислить значения функции y a x2 b x c при x=-5,-4,...,5. Значения а, b и с вводятся с клавиатуры.  Результат вычислений вывести в виде таблицы.

3.2.5. Составить программу, по которой компьютер генерирует последовательность из 10 случайных чисел и подсчитывает сумму четных чисел.

3.2.6. В военкомате набирали призывников в танковые войска, необходимо было набрать 10 человек. Известно, что тем, у кого рост выше 1м 70см в танке тесно и то, что в день военкомат может принять не более 100 человек. Составить программу, помогающую производить отбор.

3.2.7. Составить программу, по которой компьютер печатает последовательность вида (значение переменной n задается с клавиатуры): a)  1, 2, 3, 4,..., n;

b)    2 , 4, 6, 8,..., 2n;

c)     10, 100, 1000,..., 10n ( n < 10);

d)    1, 3, 9, 27, 81,..., 3n ( n < 10).

3.2.8. Найти N! 

Примечание. N!=N·(N-1)·…·2·1

3.2.9. Вычислить 1! + 2! + 3! + ... + n!

3.2.10. Дано целое число Х. Вычислить:

           .

3.2.11. Найти произведение целых нечетных чисел в промежутке [m, n], где m, n – произвольные вещественные числа (вводятся с клавиатуры).

3.2.12. Найти все степени числа 2 в промежутке [m, n], где m, n – произвольные целые числа (вводятся с клавиатуры). 

3.2.13.  Найти все числа, являющиеся факториалами, в промежутке [m, n], где m, n – произвольные целые числа (вводятся с клавиатуры).

3.2.14. Определить, является ли натуральное число N степенью 3. Если да, то какой именно; если нет, то сообщить об этом.

3.2.15. На прямой поставили N различных точек. Определить, сколько получилось отрезков.

3.2.16. Дана непустая последовательность ненулевых целых чисел, за которой следует ноль. Определить, сколько раз в этой последовательности меняется знак.

3.2.17. Составить программу, по которой компьютер находит произведение нечетных чисел, начиная с единицы, и до тех пор, пока на вопрос, задаваемый после каждого шага вычислений: "Продолжить вычисления? (Д/Н)", отвечают  'Д'. 3.2.18. Петя отдыхал летом у бабушки в деревне.  Рассматривая мухоморы, он заметил, что все они обладают разной степенью "пятнистости". Составить программу, которая определяет сколько пятнышек в среднем приходится на один гриб. 

Количество пятнышек на

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

3.2.19. Две группы учащихся написали контрольную работу по информатике. Найти средний балл в каждой группе и определить, какая из групп написала контрольную работу лучше. 

Количество учащихся в группах и отметки вводятся с клавиатуры.

3.2.20. Андрею подарили ящик апельсинов. Он решил поделиться ими с друзьями. Первому другу он дал 10 апельсинов; второму на 2 апельсина меньше, чем первому; третьему на 3 апельсина больше, чем второму; четвертому на 2 апельсина меньше, чем третьему и т.д. Последнюю такую порцию апельсинов он съел сам. 

Сколько апельсинов досталось каждому из 10 друзей Андрея, сколько - Андрею; сколько апельсинов было всего.

3.2.21. Спортсмен начал тренировки. В первый день он пробежал 2 км, а на каждой следующей тренировке пробегал на 2 км больше, чем на предыдущей. Когда пробег составил 42 км в день, он прекратил тренировки. Сколько километров пробежал спортсмен за все тренировки? Сколько дней он тренировался?

3.2.22. В эстафете 5 по 100 первый бегун пробежал 100 м за 12 секунд, а каждый следующий из четырех пробегал эту же дистанцию на 0,2 секунды быстрее, чем предыдущий. За какое время спортсмены пробежали всю дистанцию? Какова средняя скорость спортсменов? 3.2.23. Горняки прокладывали туннель: в первый день они прошли N метров, а в каждый следующий день они проходили на 2% больше от сделанного в предыдущий. За сколько дней они прорубят туннель в М метров?

3.2.24. Составить программу нахождения всех делителей числа N. Если число N простое, то сообщить об этом.

3.2.25. Определить, является ли заданное натуральное число простым. Учесть, что число 1 не является  ни простым, ни составным.

3.2.26. Определить, является ли заданное натуральное число "совершенным", то есть равным сумме всех своих положительных делителей, кроме самого числа. 

3.2.27. Напечатать все простые делители заданного натурального числа.

3.2.28. Разложить заданное натуральное число, отличное от единицы, на простые множители.  Результат вывести в виде:  

N = А1^K1 * А2^K2 * ... * Аr^Kr (где А12,…,Аr – простые делители числа, а K1, K2,…, Kr - степени).

3.2.29. Учитель подготовил для учащихся тест из N вопросов. Требуется вывести номера всех вопросов в следующем порядке: номер первого вопроса выбирается случайным образом, а номер каждого следующего вопроса определяется отсчетом по кругу К-того числа.   Примечание. Значение переменной К находить в программе. 

3.2.30. N малышей встали в круг и играют с мячом. Каждый ребенок кидает мяч только влево от себя, пропуская заранее определенное число участников     (К       игроков).     

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

Примечание. Значение переменной К находить в программе. 

3.2.31. Малышу на День рождения подарили N конфет. Потом к нему стали приходить гости по одному. Каждому пришедшему Малыш отдавал половину своих конфет. Если точно не  делилось,  то  Малыш съедал оставшуюся  конфету сам. Последним прилетел Карлсон и забрал оставшиеся конфеты.  

Сколько конфет съел Малыш, если за праздничным столом собралось М гостей? Сколько конфет съел Карлсон? Хватило ли конфет на всех гостей?

3.2.32. Андрею на Новый год подарили N конфет. С пришедшими гостями Андрей делился своими конфетами поровну. Если точно не делилось, то Андрей съедал неделящиеся конфеты. Сколько конфет съел  Андрей? Все ли гости получили конфеты? 

Количество входящих гостей запрашивается с клавиатуры, ввод числа 0 является признаком того, что гости пришли все.

3.2.33. Мама принесла домой N орехов. Дети приходили из школы по одному. Каждый пришедший, считая себя первым, отсчитывал свою долю и уходил (если поровну не делилось, то остаток никто не брал). Определить сколько орехов досталось последнему, если у мамы K детей. Сколько орехов осталось, когда ушел последний? 

3.2.34. Составить программу для определения  числа  бутылок "Пепси", которые можно купить на данное  количество  денег. Пустые бутылки сдаются, вырученные деньги опять используются на покупку "Пепси". Сколько раз вам придется идти в  магазин, если за один раз вы можете взять не больше 10 бутылок?

3.2.35. Иван Иванович заметил, что начал лысеть, имея на голове N волос. Каждый день он терял 1/10 часть своих  волос и не менее одного волоса. Когда Ивана Ивановича покинет последний волос? 

3.2.36. Денис начал читать книгу, в которой N страниц. За сколько дней он прочтет книгу, если книга становится все менее интересной. Каждый день Денис читает половину от непрочитанной части книги и всегда дочитывает начатую  страницу до конца? 

3.2.37. На клетчатом поле нарисована окружность радиуса R клеток, центр которой совпадает с узлом решетки. Подсчитать сколько целых клеток находится внутри окружности.

3.2.38. В небольшой город с 50-тысячным населением  приехал в 8 часов утра житель столицы и привез новость интересную всем. В доме, где приезжий остановился, он сообщил новость только трем местным  жителям; это заняло четверть часа. Узнав эту новость, каждый из трех граждан поспешил рассказать  ее другим. 

Зная, что слух распространяется по городу и далее таким же способом, то есть каждый, узнавший новость, успевает в ближайшие четверть часа сообщить ее трем согражданам, определить, когда новость узнают все  жители городка (время  сообщить с точностью до четверти часа).

3.2.39. У моста через речку встретились лодырь и черт. Лодырь пожаловался на свою бедность. В ответ черт предложил: "Я могу помочь тебе. Каждый раз, как ты перейдешь через этот мост, у тебя деньги удвоятся. Но каждый раз, перейдя мост, ты должен будешь отдать мне 24 копейки". 

Оценить, выгодна ли "сделка", и найти все изменения кошелька лодыря, если известно, что в результате переходов лодырь отдает все свои деньги.

3.2.40. Купец хотел подковать свою лошадь и обратился к кузнецу с просьбой взять с него подешевле. Кузнец предложил: "Заплати мне только за гвозди, которых я затрачу 24 штуки. За первый гвоздь заплати мне 1/4 копейки, за второй - полкопейки, за третий - 1 копейку и т.д., все время, удваивая плату за каждый следующий гвоздь". Сколько бы пришлось заплатить при таком способе расчета только за последний гвоздь?

3.2.41. Кузнец продает свою лошадь по числу гвоздей в подковах. За первый гвоздь он просит 1 копейку, за второй - 2 копейки, за третий - 4 ко-

пейки и за каждый следующий гвоздь вдвое больше, чем за предыдущий. Всего гвоздей в подковах 16 штук. Во сколько кузнец ценит лошадь?

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

- Доблестный Теренций! Ты - великий воин и заслуживаешь великой награды. В моем казначействе лежит 5 миллионов медных брассов (1/5 динария). Ты будешь приходить туда каждый день. В первый день ты возьмешь монету стоимостью в один брасс, а в каждый следующий день - монету стоимостью в два раза больше предыдущей. И так до тех пор, пока хватит у тебя сил поднять монету. Все монеты, которые удастся тебе вынести, останутся твоими и послужат тебе наградой.

Сколько получил денег Теренций и каков вес последней монеты, если известно, что Теренций приходил в казначейство 18 дней, 1 брасс весит 5 грамм, каждая следующая монета имела вес в два раза больше предыдущей?

3.2.43. На транспортер подаются яблоки разного размера. Составить программу, сортирующую яблоки по сортам. Яблоки, у которых диаметр больше 10 см считаются 1 сортом, остальные - 2 сортом. На экране для первого и второго сорта выделяется по строке. Когда строка заполняется, происходит "разгрузка" - строка очищается.

3.2.44. 1 сентября любознательный Петя из 8 класса провел социологический опрос с целью выяснить, кто из гимназистов прочел за лето наибольшее количество книг. Известно, что он опросил N гимназистов. Сообщить, кому принадлежит рекорд и чему он равен.

3.2.45. Любознательный Петя каждое утро измерял температуру воздуха и заносил результаты в компьютер. Определить, в какой из К дней наблюдалась самая низкая температура.

3.2.46. Составить программу проверки ученика на знание таблицы умножения. По окончании опроса ставится оценка (критерий оценки выбрать самому).

3.2.47. Составить программу проверки ученика на знание таблицы умножения. Опрос продолжается до тех пор, пока не будет получено 5 верных ответов подряд. Сколько вопросов было задано?

3.2.48. В классе из N учащихся провели контрольную работу по информатике, оценки выставили по пятибалльной системе. 

Проверить, по возможности не используя действие сложения, истинность утверждений:

a)     контрольную писали все учащиеся;

b)    только один ученик не справился с заданием;

c)     хотя бы один ученик справился с заданием на “отлично”;

d)    все ученики справились с заданием ;

e)     нет учеников, написавших контрольную на “отлично” .

3.2.49. Составить программу, по которой компьютер предлагает отгадать "задуманное" им число.

3.2.50. Составить программу, по которой компьютер отгадывает задуманное пользователем число. Предусмотреть возможность нечестной игры пользователя. Обман считать за проигрыш. 3.2.51. В олимпиаде по информатике приняли участие N (N>2) учащихся. Известны результаты олимпиады. Вывести в порядке убывания баллы, набранные тремя победителями.

3.2.52. Дана числовая последовательность из N элементов. Определить, сколько из них принимают наименьшее значение.

3.2.53. Составить программу, по которой выводится список всех костей домино.

3.2.54. Преобразовать число N к стандартному виду, т.е. вывести на экран в виде: Р * 10^T ( 0 < Р < 10).

 Например,          12547 -> 1.24547 * 10 ^ 5; 

                                                         0.032 -> 3.2 * 10 ^ (-2)

3.2.55. Найти сумму цифр заданного натурального числа.

3.2.56. Написать для троллейбусного депо программу, которая к 1 апреля напечатает шестизначные номера всех "счастливых" билетов.

 Билет назовем "счастливым", если сумма первых трех цифр равна сумме последних трех цифр.

3.2.57. Дан номер трамвайного билета N. Определить, является ли билет "счастливым", если:

a)   N - шестизначное число;

b)  N - любое число.

 Билет назовем "счастливым", если сумма цифр в левой части равна сумме цифр в правой части.

3.2.58. Найти все трехзначные числа - палиндромы.

3.2.59. Сколько четных цифр в записи натурального числа N.

3.2.60. Дано натуральное число N. Найти число, получаемое из N "прочтением" справа налево. Найти сумму этих чисел.

3.2.61. Дано натуральное число N. Проверить, верно ли утверждение: 

a)   в записи числа N каждая следующая цифра больше предыдущей;

b)  в записи числа N каждая следующая цифра не превосходит предыдущую;

c)   в записи числа N чередуются четные и нечетные цифры.

3.2.62. Найти число, обладающее следующим свойством: если в нем зачеркнуть последнюю цифру, то получится число в 14 раз меньше исходного.

3.2.63. В трехзначном числе зачеркнули среднюю цифру. Полученное двузначное число оказалось в 6 раз меньше исходного. Найти такое трехзначное число.

3.2.64. Какое трехзначное число равно кубу цифры его единиц, а также квадрату числа, составленного из его второй и первой цифры?

3.2.65. Найти двузначное число, первая цифра которого равна разности между этим числом и числом, записанным теми же цифрами, но в обратном порядке.

3.2.66. Сколько слагаемых суммы 1+2+3+4+5+... надо взять, чтобы получить трехзначное число, состоящее из одинаковых цифр?

3.2.67. На ценнике в магазине стерлась первая цифра, полученное двузначное число решили умножить на 7. Что было написано на ценнике, если после преобразований цена не изменилась?

3.2.68. Два математика оказались свидетелями автомобильной аварии. Виновником аварии были красные "Жигули". Номер машины они вспомнить не смогли. Но первый сказал: "Две средние цифры номера образуют число в 5 раз больше первой цифры номера". А второй заметил: "Две средние цифры номера образуют число втрое больше последней цифры номера". Водителей каких машин необходимо пригласить в ГАИ. 

3.2.69. Два математика оказались свидетелями автомобильной аварии. Виновником аварии был "Москвич" белого цвета. Номер машины они вспомнить не смогли. Но первый сказал: "Я уверен, что номер был симметричным". А второй запомнил, что половина номера была числом равным сумме числа десятков и квадрата числа единиц. Машины с какими номерами следует проверить?

3.2.70. Один рассеянный программист забыл свой адрес. Помнил он только то, что номер дома записывался одной цифрой, а номер квартиры был трехзначным числом и, если к первой цифре номера квартиры прибавить номер дома, а вторую и третью цифру номера квартиры уменьшить на номер дома, затем полученное число разделить на номер квартиры, то получится номер дома. Написать программу, по которой рассеянный программист восстановил адрес.

3.2.71. 1 апреля в газете "Кузнецкий рабочий" была опубликована реклама, в которой предлагались компьютеры втрое дешевле, чем в других местах. Адрес сообщался по телефону, про номер которого было сказано: "Сумма трехзначного числа, выражаемого первыми тремя цифрами, и второго, выражаемого тремя последними цифрами, меньше 1000". Сколько времени у вас уйдет на выяснение адреса, если на один безрезультатный звонок уходит 1 минута?

 Написать программу, которая находила бы все варианты номеров телефонов.

3.2.72. Один программист познакомился с девушкой, которая увлекалась математикой. На вопрос о номере телефона она ответила: "Номер моего телефона - три одинаковых двузначных числа, а произведение суммы и разности цифр этого числа то же самое двузначное число". По какой программе был найден номер телефона?

3.2.73. Математик оказался свидетелем автомобильной аварии. Виновником аварии была "Волга" белого цвета. Номер машины он вспомнить не смог. Но сказал: "Я уверен, что цифры номера образуют арифметическую прогрессию". Машины с какими номерами следует проверить?

3.2.74. Решить числовые ребусы:

a)   УЖ х УЖ = УДАВ;

b)  УЖ х УЖ х УЖ = ПИТОН;

c)   КТС + КСТ = ТСК;

d)  ТРИ + ДВА = ПЯТЬ;

e)   ТРИ - ДВА = ЯРД;

f)    АВ + ВC + CА = АВC.

 Примечание. В каждом ребусе одинаковым буквам соответствуют одинаковые цифры, а различным - разные.

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

 Прямоугольники, получающиеся один из другого, если поменять стороны местами, считаются одинаковыми.

3.2.76. В живом уголке имеется несколько аквариумов одинакового объема V. Определить максимальное количество аквариумов, если известно, что они имеют форму прямоугольного параллелепипеда, длина, ширина и высота которого выражаются целыми числами, и все аквариумы разных размеров. Вывести размены аквариумов.

 Параллелепипеды, получающиеся один из другого, если поменять ребра местами, считать одинаковыми.

3.2.77. Сколько существует способов составить отрезок длиной 1 метр из отрезков длиной А и В см?

3.2.78. В кабинете информатики были стулья на 4 ножках и табуретки на 3 ножках. Когда школьники сели, то свободных мест не осталось, а сумма числа ног у сидящих и ножек у сидений оказалась равной 39. Сколько стульев и табуреток было в кабинете?

3.2.79. Из N счетных палочек построили треугольники, квадраты и домики, так, что счетных палочек осталось не больше двух. Найти все возможные сочетания фигур каждого вида.

3.2.80. Вера купила тетради по N рублей и по Т рублей за тетрадь, всего на сумму S рублей. Сколько куплено тех и других тетрадей?


         Найти все решения.

                     Решил свой рост узнать удав!       И в этом он, конечно, прав.

3.2.81.  

     Вот голова, а вот он - хвост.

     А остальное - это рост!

            В удаве много роста.           Но как измерить этот рост -       Не знают голова и хвост.

     Узнать свой рост не просто!

(Г. Остер.)

 


          

   

a)        Мартышка, измеряя длину Удава, сложила его пополам и сообщила: "Твой рост две твои половины"; затем - еще пополам и сообщила: "Твой рост 4 твои четверти", продолжая складывать его до тех пор, пока это было возможно (см.рисунок). 

 Написать программу, в которой выдаются все сообщения Мартышки. Доли Удава выдать в виде обыкновенной дроби.

                         Длина Удава L метров, а толщина Н см.

b)       Попугай придумал другой способ и сделал чертеж (см.рисунок). Мартышка сворачивала Удава по чертежу, а Попугай говорил: "Удав! Твой рост - две половины ", - затем: "Твой рост - 4 твои четверти" и так далее.

 Cоставить программу, в которой выдаются все сообщения Попугая. Доли Удава выдать в виде обыкновенной дроби.

                         Длина Удава L метров, а толщина Н см.

3.2.82. Найти цифровой код заданного натурального числа. 

Цифровой код числа находится следующим образом: вначале складываются цифры, из которых состоит число, затем цифры найденной суммы и так до тех пор, пока не получится однозначное число. Это и есть цифровой код числа.

 

3.2.83. У Оли был прямоугольный кусок материи. Она решила сделать из него салфетки. Сколько и какого размера салфетки выкроила Оля, если известно, что она делала только квадратные салфетки всегда максимально большого размера и не делала салфеток со стороной менее 10 см?

 

3.2.84. Саша        делал          самолетики из бумаги. Известно, что для изготовления одного самолетика          требуется заготовка       прямоугольной формы, в кото- рой одна сторона в два раза больше другой и не менее 3 см. Заготовки Саша выре-

зал всегда максималь-

но возможного размера. Сколько самолетиков сделал Саша, какого размера были заготовки?

 

3.2.85. В книге N страниц. Сколько цифр понадобится, чтобы зануме-ровать все страницы книги?

3.2.86. Для нумерации страниц книги понадобилось К цифр. Сколько страниц в книге? 

 Если указанное число не может быть суммой цифр номеров страниц, то сообщить об этом.

3.2.87. Оля решила связать полосатый (красно-бело-синий ) шарф. Причем полосы должны были быть разной ширины: каждая следующая на 1/3 шире предыдущей. Сколько и какого цвета надо купить пряжи, если Оля решила связать шарф не менее 1 м 50 см и первая полоса - 3 ряда красного цвета?

 На один ряд идет 5 м пряжи, а плотность вязания составляет 2,2 ряда на 1 см. В одном мотке 200 м пряжи.

3.2.88. В детском саду карантин. Сначала заболел один ребенок, затем каждый заболевший заражал по два ребенка в день. Через сколько дней закончится карантин, если инкубационный период заболевания длится два дня, после этого одну неделю ребенок лечится дома, а по-

сле выздоровления приобретается иммунитет к данному заболеванию?

3.2.89. Числа Фибоначчи определяются по правилам: первые два равны 1, а каждое следующее равно сумме двух предыдущих чисел Фибоначчи, то есть:

                f(1) = 1, f(2) = 1, f(3) = 2 ,.., 

               f(n)= f(n-2) + f(n-1), где n = 4, 5, ...

         Составить программу, по которой:

a)   выписываются первые N чисел Фибоначчи;

b)  находится максимальное число элементов в сумме чисел Фибоначчи, не превышающей число S, задаваемое с клавиатуры;

c)   выводятся числа Фибоначчи из промежутка [m, n].

3.2.90. Известно, что некоторые бактерии размножаются каждые три минуты, делясь на две. Однако не все бактерии доживают до трехминутного возраста. В начале каждой минуты треть всех бактерий погибает. Составить программу, которая печатает число бактерий через N минут, если в начале было К только что родившихся бактерий.

3.2.91. Сообщество роботов живет по следующим законам:

 один раз в начале года они объединяются в группы по три робота;  за год группа из 3 роботов собирает 5 новых;  каждый робот живет три года после сборки.

 Известно начальное количество только что собранных роботов. Сколько роботов будет через N лет?

3.2.92. Сообщество роботов живет по следующим законам:

 один раз в начале года они объединяются в группы по пять роботов;  за год группа из 5 роботов собирает 9 новых;  каждый робот живет три года после сборки.

 Известно начальное количество только что собранных роботов. Сколько роботов будет через N лет?

3.2.93. Сообщество роботов живет по следующим законам:

 один раз в начале года они объединяются в группы по три или пять роботов;  за год группа из 3 роботов собирает 5 новых, а группа из 5 роботов собирает 9 новых;

 роботы собираются так, чтобы собрать за год наибольшее количество;  каждый робот живет три года после сборки.  Известно начальное количество только что собранных роботов К. Сколько роботов будет через N лет?

3.2.94. Переправа через горы разбита на несколько этапов. Известно расстояние между этапами и высота каждого перевалочного пункта над уровнем моря. Определить:

a)   длину самого большого подъема;

b)  сколько этапов в самом длинном подъеме; 

c)   самый большой подъем, его длину и высоту;

d)  самый короткий подъем, его длину и высоту;

e)   самый крутой спуск;

f)    количество подъемов на маршруте.

3.2.95. Ученик шестого класса вел дневник наблюдений, в котором каждый день отмечал количество выпавших осадков. Определить, за какой период месяца выпало больше всего осадков?

 В период не следует включать дни, когда осадки не выпадали. Первый день без осадков заканчивает дождливый период.

3.2.96. Ученик получает каждый день по три отметки. Найти самую длинную "белую полосу". "Белой полосой" назовем те дни, в которые ученик не получает плохих оценок. Получение плохой отметки означает начало "черной полосы".

3.2.97. Карлсон, объясняя Малышу схему лечения, прописанную доктором, придумал формулу зависимости количества конфет от номера дня. Количество конфет, которые надо было принять за день, определялось первой цифрой после запятой в значении синуса от номера дня. Составить программу, отвечающую на вопросы:

a)   в какой день курса лечения он съел больше всего конфет;

b)  увеличивалась ли доза ежедневного приема;

c)   сколько всего конфет съел Карлсон?

3.2.98. Спортсмен тренируется в тире. Определить:

a)   наибольшую разность между двумя соседними результатами; 

b)  самую длинную непрерывную последовательность неудачных выстрелов, когда стрелок показывал свой наихудший результат;

c)   самый длинный период, в течение которого результат не менялся. 3.2.99. Всемирная служба Солнца ежедневно наблюдает за дневным светилом. В ходе исследований был построен график зависимости числа солнечных пятен от номера месяца. Выяснить, сколько месяцев длится наибольший период, в течение которого наблюдалось постоянное уменьшение числа пятен на Солнце. Найти среднее число пятен в этот период. 

 Примечание. Обычно число пятен на Солнце колеблется от 0 до 160. 3.2.100. Капитан морского судна через каждые два часа отмечает в судовом журнале свои координаты, по расчетам корабль должен прибыть в порт назначения через N часов. Определить:  a) сколько раз он пересечет экватор;

b)  наибольшее время нахождения в каждом полушарии;

c)   наибольшее время движения по линии экватора;

d)  наибольший период нахождения на самой северной отметке своего курса;

e)   наименьший период нахождения на самой южной отметке своего курса;

f)    наименьший период движения судна по одной и той же широте.


 

ПРИЛОЖЕНИЕ

 

 

 

 

 

Таблица 1.   Типы данных.

 

 

 

Таблица 2.   Характеристики типов данных. 

 

 

Тип

 

 

Допустимые значения 

 

 

Размер

 

 

 Ц е л ы е 

 

 Shortint 

- 128 . . 127 

 1 байт

 Integer 

- 32768..32767 

 2 байта

 Longint 

- 2147483648..2147483647 

 4 байта

 Byte 

 0 . . 255 

 1 байт 

 Word 

 0 . . 65535 

 2 байта 

 

В е щ е с т в е н н ы е 

 

 Real 

 2.9e-39..1.7e38 

 6 байт 

 Single 

 1.5e-45..3.4e38 

 4 байта

 Double 

 5.0e-324..1.7e308 

 8 байт

 

С и м в о л ь н ы й 

 

 Char 

 один символ 

 1 байт

 

С т р о к и 

 

 String 

 строка длиной до 255 символов

1-255 байт

 

Л о г и ч е с к и й 

 

 Boolean 

 False , True 

 1бит

 

                                                                                       Приложение.                                                              70

Таблица 3.  Операции.

 

 

Операция 

 

 

Приоритет

 

 

Действие 

 

 

Тип операндов 

 

 

Тип значения 

 

   not 

 1 

отрицание 

логический 

логический 

   * 

 2 

умножение 

числовой 

тип операндов

   / 

 2 

деление 

числовой 

вещественный

  div 

 2 

целочисленное деление

целый

целый 

  mod 

 2 

остаток от деления 

целый

целый 

  and 

 2 

логическое и 

логический 

логический 

  + 

 3 

сложение 

числовой, строковый 

тип операндов

  - 

 3 

вычитание 

числовой 

тип операндов

  or 

 3 

логическое или 

логический 

логический 

  xor 

 3 

исключительное или 

логический 

логический 

  = 

 4 

равно 

любой *  

логический 

  <> 

 4 

не равно 

любой

логический 

  <= 

 4 

меньше, равно 

любой

логический 

  < 

 4 

меньше 

любой

логический 

  > 

 4 

больше 

любой

логический 

  >= 

 4 

больше, равно 

любой

логический 

* любой из известных: числовой, логический, символьный, строковый.

 

 

 

Таблица 4. Cтандартные функции.

 

 

Обращение

 

 

Тип параметра

 

 

Тип результата

 

 

Реализуемое действие

 

 abs(x)

числовой

тип аргумен-

та 

модуль аргумента

 sqrt(x) 

числовой

вещественный

корень квадратный 

 sqr(x)

числовой

тип аргумен-

та 

квадрат аргумента

 round(x) 

числовой

целый 

округляет аргумент до целых

 int(x)

числовой

вещественный

целая часть числа

 trunc(x) 

числовой

целый 

целая часть аргумента

Приложение.

 frac(x) 

числовой

вещественный

дробная часть числа

 odd(x) 

целый

логический

возвращает true, если число нечетное и false, если число четное

 Random 

 

вещественный

псевдослучайное число 0  i  1

 Random(x)

целый

целый 

псевдослучайное целое число 0

 i  x

 Randomize

 

 

инициация датчика псевдослучайных  чисел

 pi

 

вещественный

 = 3,141592653...

 sin(x)

числовой

вещественный

синус аргумента (угол в радианах)

 cos(x)

числовой

вещественный

косинус аргумента (угол в радианах)

 ArcTan(x) 

числовой

вещественный

арктангенс 

Таблица 5.  Логические операции над данными логического типа.

 

                Логическое Или.                          Логическое Исключительное  Или.

А

В

А or B

 

А

В

А xor B

True

True

True

True

True

False

True

False

True

True

False

True

False

True

True

False

True

True

False

False

False

False

False

False

          

                Логическое И.                              Логическое Не.

 

А

В

А and B

True

True

True

True

False

False

False

True

False

False

False

False

 

А

not А 

True

False

False

True


 

 

6. Зарезервированные слова, которые нельзя использовать в качестве идентификаторов.

 

absolute div function mod and do goto near array downto if nil asm else implementa- not assembler end tion object begin external in of case far inherited or const file inline packed

constructor       for                 interface            private

destructor         forward         interrupt            procedure

label

 

 

7. Операторы языка.

 

Условный оператор.

 

Существует два варианта записи оператора If:

1.   Полное ветвление:

 If  Условие  then  Оператор1 else  Оператор2;

2.   Неполное ветвление:

 If  Условие  then  Оператор1;

 

В этом операторе:

 

If (если), then (тогда), else (иначе) - служебные слова;

 

Оператор1, Оператор2 - любой из операторов:

1. Простой оператор.  Например,

     if a>=0 then a:=sqrt(a) еlse a:=sqrt(abs(a));

program public record repeat set shl shr string then to

type unit until uses var virtual whil

e with xor

2.                 Пустой оператор - оператор, который не выполняет никаких  действий.  Например,

     if a>=0 then a:=sqrt(a) else ;

 После else стоит пустой оператор. В этом случае служебное слово else можно не писать.  Например,

     if a>=0 then a:=sqrt(a);

3.                 Составной оператор - набор операторов, заключенных в операторные скобки  begin  end.  Например,

     if a>=0 then a:=sqrt(a) else begin a:=abs(a); a:=sqrt(a)  end;

4.                 Еще один условный оператор.  Например,

     if a>0 then if a>4  then b:=sqrt(a)  else b:=a*a  else b:= a div 2;

 В этом случае действует правило: первое else относится к ближайшему предшествующему ему  if.

  

Условие:

1.     Простое - логическая переменная, логическая функция или логическое выражение.

 В логических выражениях применяют знаки отношений: < (меньше), <=(меньше или равно), = (равно), > (больше), >= (больше или равно), <> (не равно).

     Например,  x > 5, x + y <= z, odd(a),  a * 2 = 6. 

2.     Составное - состоит из простых условий, связанных между  собой логическими операциями  and (и), or (или), not (не), xor (исключительное или ). Каждое простое условие в составном заключается в скобки.  Например,

         if (a>9) and (a<100) then write( 'a - двузначное число' ) 

                                          else  write( 'a - не двузначное число' );

Соcтавные условия рассматриваются как единое целое.  Правила определения истинности даны в табл. 5.

 

 

 

Оператор выбора (варианта).

 

Общий вид:

Case  Выражение  of

Константа1: Оператор1;

Константа2: Оператор2; Константа3: Оператор3;

...

КонстантаN: ОператорN

else  Оператор end;

 

В этом операторе:

Case (случай), of (из), else (иначе), end (конец) - служебные слова;

Выражение - выражение или переменная порядкового типа;

Константа1, Константа2, Константа3,..., КонстантаN - константы, с которыми сравнивается значение выражения, они должны быть того же типа, что и Выражение ;

Оператор1, Оператор2, Оператор3,...,ОператорN - операторы (простые или составные), из которых выполняется тот, с константой которого совпадает значение выражения;  

Оператор - оператор, который выполняется, если среди констант нет вычисленного значения выражения.

 

Недопустимо, чтобы одна и та же константа встречалась в списке выбора более одного раза.

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

Еlse в операторе case  может отсутствовать.

 

Цикл  с предусловием.

 

Общий вид:

While Условие do  Оператор;

 

В этом операторе:

While (пока), do (делай) - служебные слова.

Условие - условие входа в цикл: цикл While выполняется до тех  пор,  пока  условие  истинно  и прекращается после того, как условие станет ложным. Оператор - простой или составной оператор.

 

Например, x:=0; while x<10 do  begin

    x:=succ(x); write(x:5) end;

Данная часть программы напечатает последовательность целых чисел от 1 до 10 включительно.

 

При выполнении цикла While условие цикла проверяется перед каждым исполнением тела цикла. Если условие ложно с самого начала, то тело цикла не выполнится ни разу. Например, x:=10; while x<10 do  begin

    x:=succ(x); write(x:5) end;

 

 

 

Цикл с постусловием Repeat.

 

Общий вид:

Repeat

      Оператор1;     Оператор2;

      ...

  until  Условие; В этом операторе:

Repeat (повторяй), until (до) - служебные слова;

Условие - условие выхода из  цикла: цикл Repeat выполняется до тех  пор,  пока  условие ложно, как только оно становится  истинным,  действие цикла прекращается;

Оператор1, Оператор2, ... - простые, составные или структурирован- ные операторы.

 

Применяя цикл Repeat необходимо помнить, что условие  проверяется после каждого выполнения тела цикла. Поэтому тело цикла всегда выполнится хотя бы один раз.

 

Например,  x:=0; repeat 

   x:=succ(x); write(x:5) until x=10;

Данная часть программы напечатает последовательность целых чисел от 1 до 10 включительно.

 

 

 

Цикл  с параметром.

 

Существует два варианта цикла с параметром:

1.   For Параметр:=Начальное значение to Конечное значение do

 Оператор;

2.   For Параметр:=Начальное значение downto Конечное значение do   Оператор;

 

В этих операторах:

For (для),  to (до), downto (обратно к), do (выполнить) - cлужебные слова;

Параметр цикла - переменная порядкового типа;

Начальное и Конечное значения параметра цикла - выражение того  же  типа, что и Параметр. Они  вычисляются один раз перед первой попыткой выполнить тело цикла и не меняются в цикле. Оператор - простой или составной оператор.

 

Для цикла For...to...do... последовательность значений параметра цикла следующая: начальное значение, непосредственно следующее за ним и так далее до  конечного  значения включительно. 

 

Например,  for x:=1 to 10 do write(x:5);

Данная  часть программы напечатает последовательность целых чисел от 1 до 10 включительно.

 

Для цикла For...downto...do... последовательность значений параметра цикла следующая: начальное значение, непосредственно идущее перед ним, и так далее, до  конечного  значения включительно.

 

Например,  for x:=10 downto 1 do  write(x:5);

Данная  часть программы напечатает последовательность целых чисел от 10 до 1 включительно.

 

 

КОНТРОЛЬНЫЕ   ТЕСТЫ.

 

1.2. Выражения. Стандартные функции. Типы данных.  Алгоритмы линейной  структуры.

1.2.20. Контрольный тест:

данные: M=13,  K=3;   результат: 1.

1.2.21. Контрольный тест:

1) данные: DW=5,  A=6;   результат: 3;     2) данные: DW=6,  A=8;   результат: 7.

1.2.22. Контрольный тест:

1) данные: K=8112;     результат: 2:15:12 ;     2) данные: K=90000;   результат: 1:0:0.

1.2.23. Контрольный тест: данные: h=20, m=30, s=50; dh=30; dm=40; ds=20;  результат: 3 часа 11 минут 10 секунд.

1.2.24. Контрольный тест: данные: h=3, m=11, s=10; dh=30; dm=40; ds=20;  результат: 20 часов 30 минут 50 секунд.

1.2.26. Контрольный тест: данные: 257000 рублей;   

результат: 5 купюр достоинством в 50000 рублей, 0 купюр - 10000 рублей, 1 купюра - 5000, 2 купюры - 1000.

1.2.28. Контрольный тест:

1)  данные: N=5400, M=45, K=60; результат: 2 страницы;

2)  данные: N=2702, M=45, K=60; результат: 2 страницы; 3) данные: N=2699, M=45, K=60; результат: 1 страница.

 

 

2.2.   Алгоритмы разветвленной структуры. 

2.2.4. Контрольный тест:

1)  данные: A=1,  B=1;   результат: X = -1;    

2)  данные: A=0,  B=1;   результат:

3)  данные: A=0,  B=0;   результат: X - любое.

2.2.12. Контрольный тест:

1) данные: R=5, A=10; результат: виден квадрат; 2) данные: R=5, A=9; результат: виден квадрат и круг; 3) данные: R=5, A=7;   результат: виден круг.

2.2.17. Контрольный тест:

1) данные: A=2.5,  B=  3,   C=  3;     результат:  M= 2, K= 4; 2) данные: A= 2.5, B=  2,   C=  2;     результат: M= 1, K= 3;

3) данные: A= -2,   B= -2,   C= -2;    результат: M=-3, K=-1; 4) данные: A=-2.2, B=-2.5, C=-2.1;  результат: M=-3, K=-2.

2.2.21. Контрольный тест:

1)  данные: 1900; результат: 365 дней;

2)  данные: 1996; результат: 366 дней;

3)  данные: 1997; результат: 365 дней;

4)  данные: 2000; результат: 366 дней.

2.2.24. Контрольный тест :

1) данные: h= 1,  m =  0;  результат:  5 минут ; 2) данные: h=12, m =  0;  результат: 65 минут ; 3) данные: h = 5, m =30;  результат: 62 минуты.

2.2.32. Контрольный тест:

1)  данные: x1= 0,  y1=0, r1=10, x2= 8,  y2= 0,  r2= 2;  результат: Да;

2)  данные: x1=15, y1=5, r1= 5,  x2=10, y2=10, r2=20; результат: Нет; 3) данные: x1=10, y1=0, r1=10, x2=20, y2=0,   r2= 5;  результат: Да; 4) данные: x1=10, y1=0, r1= 5,  x2= 0, y2=20, r2=10;  результат: Нет.

2.2.40. Контрольный тест:

1)  данные: x1=2, y1=0, x2=8, y2=0, x3=4, y3=0;  результат: Да;

2)  данные: x1=8, y1=4, x2=2, y2=1, x3=6, y3=3;  результат: Да; 3) данные: x1=8, y1=4, x2=2, y2=2, x3=6, y3=3;  результат: Нет.

2.2.41. Контрольный тест:

1)  данные: x1=0, y1=2, x2=0, y2=8, x=0, y=4;  результат: Да;

2)  данные: x1=8, y1=4, x2=2, y2=1, x=6, y=3;  результат: Да; 3) данные: x1=8, y1=4, x2=6, y2=3, x=2, y=1;  результат: Нет.

2.2.42. Контрольный тест:

1) данные: A(1,0), B(5,0), C(5,8), D(5, 1);  результат: Нет; 2) данные: A(1,2), B(5,3), C(3,8), D(3,1);   результат: Да.

2.2.51. Контрольный тест:

1) данные: A= 0,  B=50, C=40, D=90;  результат: 100 % ;  2) данные: A=40, B=10, C=75, D=90;  результат:   50 % ; 3) данные: A= 9,  B= 0,  C=81, D=90;  результат:  0  %.

 

 

3.2. Алгоритмы циклической структуры.

3.2.10. Контрольный тест: 

1) данные: х=10;  результат: 0; 2) данные: х=15;  результат: нет ответа; 3) данные: х=21;  результат:  0,18547.

3.2.15. Контрольный тест: 

1) данные: N=1;  результат: 0 отрезков; 2) данные: N=4;  результат: 6 отрезков.

3.2.26. Контрольный тест:

1) данные:  6;  результат: cовершенно ( действительно, 6=1+2+3); 2) данные:  8;  результат: неcовершенно.

3.2.28. Контрольный тест:

1) данные: 150;  результат: 150 = 2^1 * 3^1 * 5^2; 2) данные:  13;   результат: 13 = 13^1.

3.2.32. Контрольный тест: данные: количество конфет 37 штук, гости приходят партиями: сначала 2,  затем 4; результат: 5 конфет.  

3.2.33. Контрольный тест:

1)  данные: N=50, K=5;  результат: 4 ореха взял последний, осталось 17;

2)  данные: N= 6,  K=5;       результат: последний ничего не взял , осталось 4  ореха.

3.2.35. Контрольный тест: 

данные: N=100;  результат: 28.

3.2.36. Контрольный тест:

данные:  N = 10; результат: 4 дня.

3.2.37. Контрольные тесты:

1) данные: R=  1;   результат:  0 клеток; 2) данные: R= 1.5; результат:  4 клетки; 3) данные: R= 10;  результат: 276 клеток.

3.2.75. Контрольный тест:

1) данные: S=36;       результат: 5 прудов размерами 1x36, 2x18, 3x12, 4x9, 6x6; 2) данные: S=17;  результат: 1 пруд размером 1x17.

3.2.76. Контрольный тест:

1)                данные: V=125;     результат: 3 аквариума  размерами 1x1х125,  1х5х25, 5х5х5;

2)                данные: V=30;      результат: 5 аквариумов размерами 1x1х30,1х2х15,1х3х10,1х5х6,2х3х5.

3.2.79. Контрольный тест:  данные: N=13;  результат: 7 вариантов

 

 

 

 

 

 

1

2

0

0

1

2

1

1

1

0

3

1

0

2

1

4

0

3

0

1

5

0

2

1

2

6

0

1

3

0

7

0

0

4

1

 

3.2.80. Контрольный тест: данные: S=36, N=3, T=12;

результат: 3 тетради по 12 рублей или 12 тетрадей по 3 рубля, или 1 тетрадь по 12 рублей  и 8 тетрадей по  3 рубля и т.д.

3.2.83. Контрольный тест:

данные: кусок материи 100x140 см;  результат:  5 салфеток: 

одна салфетка размером 100x100, две - 40x40, две - 20x20.

3.2.84. Контрольный тест:

данные: лист бумаги размером 100x140 см;  результат:  7 заготовок: одна заготовка размером 70x140, две - 30x60, одна - 15x30, три - 5х10.

3.2.86. Контрольный тест: 

1)  данные: K=11;      результат: 10 страниц; 

2)  данные: K=12;      результат: этого не может быть;  3) данные: K=2893 ; результат: 1000 страниц.

3.2.93. Контрольный тест:

1)  данные: K=2, N=5; результат: 0; 

2)  данные: K=3, N=5; результат: 414; 

3)  данные: K=5, N=5; результат: 740 ; 

4)  данные: K=7, N=5; результат: 889;  5) данные: K=8, N=5; результат: 1176.

 

 

ЛИТЕРАТУРА

 

1.   Абрамов С.А., Гнездилова Г.Г., Капустина Е.М., Селюн М.И. Задачи по программированию. - М.: Наука, 1988. - 224с. 

2.   Епанешников А.М., Епанешников В.А Программирование в среде TurboPascal 7.0. - М.: Диалог-МИФИ, 1995. - 288с.

3.   Перельман Я.И. Живая математика: Математические рассказы и головоломки. - М.: Наука, 1974. - 156с.

4.   Пильщиков В.Н. Сборник упражнений по языку Паскаль. - М.: Наука,

1989. - 160с.

5.   Фаронов В.В. Программирование на персональных ЭВМ в среде ТурбоПаскаль. - М.:  издательство МГТУ, 1991. - 580с.

 

 

 

 

 

 

 

 

 

 

 

 

 

Сборник задач и упражнений по основам программирования на языке Turbo-

Pascal

Ирина Джониковна Кочарян

Елена Александровна Мирончик

 

 

Редактор Нежинская Ю.А.

Подписано в печать                        Оп                        Формат

Бумага

Печать офсетная. Усл.печ.л.

Тираж 300

 

заказ                                      Цена договорная

Новокузнецкий пединститут

654027, Новокузнецк, пр. Пионерский, 13