Программирование в школе

Методические заметки и задачи к урокам

Из портфолио учителя информатики и ИКТ     
Безрученко Людмилы Ивановны
e-mail:bezli@mail.ru     

   
  Условные конструкции  
  Циклы  
  Подпрограммы-функции
 
  Подпрограммы-процедуры
 
Назад

Раздел "Программирование"

Задачи с управляющими конструкциями

Операторы:
  • if ... then ...
  • if ... then ...else ...
  • case... of ...
  • Цель:

  • сформировать знания основных операторов алгоритмической структуры “неполное ветвление”, “полное ветвление” и оператор выбора;
  • привить навык программирования с использованием операторов условных переходов для решения конкретных задач.

    Введение. Синтаксис на языке программирования Turbo Pascal:
    Неполное ветвление:
    if <условие> then <оператор >;
    Если <условие> истинно (true), то выполняется <оператор>, стоящий после then.
    Полное ветвление:
    if <условие> then <оператор_1 > else <оператор_2>.
    <условие> - логическое выражение типа Boolean;
    Если <условие> истинно (true), то выполняется <оператор_1>, в противном случае (false) - <оператор_2>;
    <Условие> - логическое выражение типа Boolean;
    Если <условий> несколько, то они заключаются в скобки и объединяются ключевыми словами: and, or, not .
    Замечание. В случае составных операторов всю группу операторов, входящих в составной оператор, необходимо заключать в оператореые скобки begin...end.

    Оператор Case позволяет сделать множественный выбор.
    Формат оператора:
    case <выражение> of
               <список констант_1> : begin
                                                        {оператор_1}
                                                    end;
                <список констант_2> : begin
                                                        {оператор_2}
                                                    end;
               <список констант_N> : begin
                                                        {оператор_N}
                                                    end;
    else
                    begin
                    {последовательность операторов, выполнчемая}
                    {в сдучае, если выражение не попало}
                    {ни в один из списков констант}
    end;

    Примеры задач

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

    Program ves;
       Uses crt; {подключаем модуль crt, чтобы использовать}
    {процедуры и функции , управляющие экраном и курсором}
       var
          p: integer; {ves}
          h: integer; {rost v cm}
    Begin
       clrscr; {очистка экрана}
       write(‘vvedite ves=’);
       readln(p);
       write(‘vvedite rost=’);
       readln(h);
       if p>(h-110) then writeln(‘Vash ves bolshe normi!’)
       readln
    End.

    Задача "Приветствие". Написать программу, которая требует ввода времени дня (ночь 0-6 часов, утро 7-12 часов, день 13-17 часов, вечер 18-23 часа) и, в зависимости от введенного значения, желает доброго утра, доброго дня, доброго вечера или спокойной ночи.
    Замечание. В этой задаче удобно использовать оператор Case, но можно решать с помощью оператора if...then.

    Program privet;
      Uses crt; {подключаем модуль crt, чтобы использовать процедуры и функции, управляющие экраном и курсором}
      Var t: integer;
      Begin
      clrscr; {очистка экрана}   write(‘vvedite vremia dnia ’);
      readln(t)
      case t of
        0..6: writeln(‘Dobroe utro!’);
        7..12: writeln(‘Dobry den!’);
        13..17: writeln(‘Dobry vecher!’);
        writeln(‘Dobroj nochi!’);
      end; {case}
      readln
    End.

    Задача о площади кольца. Эта простая задача рассматривалась В.А.Кайминым как пример подбора подходящего алгоритма (Журнал "Квант", № 10, 1986. с.48). В общих чертах ставится задача вычисления площади кругового кольца. Алгоритм прост: из площади большего круга нужно вычесть площадь меньшего. Точную постановку задачи можно записать так:
    Задача: найти площадь кольца.
    Дано:
    r— внутренний радиус,
    R — внешний радиус.
    Треб:
    S — площадь кольца.
    Связь:
    S=S2—S1 — площадь кольца,
    S1=pi•R 2 —площадь большего круга,
    S2=pi•r2 — площадь меньшего круга.
    При: 0 <r < R

    Замечание. Акцентируем внимание на имеющееся ограничение: 0 <r < R
    При объявлении переменных в программе вводим переменные r1 и s1 - радиус и площадь внешнего круга и внутреннего круга, r2 и s2 - радиус и площадь внешнего круга и s-площадь кольца.

    Program s_kolca;
      uses crt;
      const p=3.1415;
      var s1, s2, s: real;
    Begin
      clrscr;
      write('Введите радиус внешнего кпуга r1=');readln(r1);
      write('Введите радиус внутреннего кпуга r2=');readln(r2);
      if (0<     begin
           s1:=p*r1*r<1;
          s1:=p*r1*r1;
          s:=s1-s2;
          writeln('S кольца=',s:6:2)
        end
              else
           writeln('Ошибка данных! Повторите ввод');
        readln
    End.

    Задача "Журнал или газету?". В киоске продается газета стоимостью 15 руб. и журнал стоимостью 60 руб. Составить программу, которая спрашивает о желании покупателя (журнал или газета?), принимает деньги (сумма денег вводится с клавиатуры) и выдает на экран причитающуюся сдачу.

    Program gazeta_journal;
      Uses crt;
      Var
      c: char; { символьная переменная }
    Begin
      clrscr; {очистка экрана}
      writeln(‘ g. Газета 15 руб.’);
      writeln(‘ j. Журнал 90 руб.’);
      writeln;
      writeln;
      write(‘vvedite g or j’);
      readln(c);
      if c=g then
            begin
             Writeln('C Vas 15 rub ');
             readln(sum); {vvod c klaviaturi}
              if sum>15 then writeln(' Vasha sdacha ', sum-15,' rub' )
           end
              else
                 begin
                 Writeln('C Vas 90 rub ');
                  readln(sum); {vvod c klaviaturi}
                 if sum>90 then writeln(' Vasha sdacha ', sum -90,' rub' )
               end;
       readln
    End.

    Задача "Площадь треугольника". Рассчитайте площадь треугольника по трем сторонам a,b,c, используя формулу Герона s=sqrt(p(p-a)(p-b)(p-c)), где p - полупериметр: p=(a+b+c)/2.
    Замечание. Предусмотреть в программе проверку существования треугольника.

    Program s_geron;
      uses crt;
      var a, b, c, p, s: real;
    Begin
      clrscr;
      write('Введите стороны треугольника ');readln(a,b,c);
        if (a<>b+c) and (b<>a+c) and (c<>a+b) then
        begin
        p:=(a+b+c)/2;
        s:=sqrt(p*(p-a)*(p-b)*(p-c));
        writeln('s=',s:6:2)
        end
              else
           writeln('Ошибка данных! Повторите ввод');
        readln
    End.

    Задача "Палиндром". Введите любое целое трехзначное число и определите, является ли число палиндромом ("перевертышем"),т.е. число читается одинаково слева-направо справа-налево.

    program pervertishi;
      uses crt;
        var
        n:integer; {число}
        a:integer; {первая цифра}
        с:integer; {последняя цифра}
    Begin
      clrscr;
      write('введите любое трехзначное число n=');
      readln(n);
      a:=n div 100;
      c:=n mod 10;
      if a=c then writeln('число - перевертыш')

          else writeln('число - не перевертыш');
      readln
    End.


  • Задачи для самостоятельной работы

    Задача 1. "Мишень". Мишень имеет форму кольца с внешним радиусом r1 и внутренним r2. Введите координаты точки X, Y с клавиатуры и выведите на экран сообщение "Попал!", если точка внутри кольца, и "Мимо!", если точка вне кольца.

    Задача 2. Напишите программу для вычисления n-й степени числа X, задав n как целое.

    Задача "Каникулы". Зимние каникулы начинаются 29 декабоя и заканчиваются 10 января. Напишите инструкцию if, выводящую сообщение "Каникулы!", если дата (число и номер месяца) попадет в этот промежуток. Подсказка. Иcпользуйте следующую конструкцию:
    if ((month=12) and (day>=29)) or ((month=12) and (day>=10)) then writeln ('Каникулы!');

    Задачи для разминки
    1. Введите два целых числа а и b. Если а>b, поменяййте числа местами.Если a<=b, вычислите сумму S и произведение P этих чисел.
    Подсказка. Чтобы переставить два числа, используйте вспомогательную перменную t для временного хранения
    числа a:
    t : = a;
    a : = b;
    b : = t;

    2. Введите целое число x. Если число четное, вычислите
    f:=sqrt(x);, а если нечетное, вычислите f:=sqr(x);

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

    4. Дано пятизначное число. Напишите программу, котопая определяет, является ли оно пaлиндромом.

    5. В программе написана следующая конструкция:
    if ((month=12) and (day>=28)) or ((month=12) and (day>=11)) then writeln ('Каникулы!'); Определите дни каникул.

    6. Напишите оператор выбора case для вывода на экран названия времени года. Переменная month содержит номер месяца.

    7. Напишите условие того, что месяц является летним.

    8. Напишите программу "Кафе-мороженое". Покажите на экране меню с указанием сорта мороженого и цены за одну порцию. Предложите клиенту выбрать из меню сорт мороженого, после чего запросите количество порций и подсчитайте сумму к оплате.