понеділок, 18 лютого 2013 р.

Pascal: ветвление

Обычно ветвление в паскале рассматривают на примере решения уравнения вида ax2+bx+c=0.

Но  мы начнём с чего-то попроще. Пусть компьютер угадывает загаданное пользователем число от 1 до 2.

Пишем:

program ugadayka1;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  ans    : Char;
begin
  Writeln('Zagadayte chislo ot 1 do 2. Nazhmite Enter po gotovnosti.');//сообщаем пользователю, что мы от него хотим
  Readln;//когда человек загадал число, он должен нажать Enter
  Writeln ('Eto 1? (y/n)');//спрашиваем, загадал ли он единицу.
  Readln(ans);//ответить он должен, нажав y или n на клавиатуре
  if (ans='y') or (ans='Y') then //т.к. может быть нажат Caps Lock, за ответ "да" будем считать как маленькую, так и заглавную букву y
   Writeln('Ura! Ya ugadal! Eto 1')
  else
   Writeln('Vy zagadali chislo 2');

  Readln;
end.      


Расширим теперь нашу программу - пусть человек загадывает число от 1 до 4:

program ugadayka2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  ans    : Char;
begin
  Writeln('Zagadayte chislo ot 1 do 4. Nazhmite Enter po gotovnosti.');
  Readln;
  Writeln ('Eto 1? (y/n)');
  Readln(ans);
  if (ans='y') or (ans='Y') then
   Writeln('Ura! Ya ugadal! Eto 1')
  else

    begin
      Writeln ('Eto 2? (y/n)');
      Readln(ans);
      if (ans='y') or (ans='Y') then
       Writeln('Ura! Ya ugadal! Eto 2')
      else

        begin
          Writeln ('Eto 3? (y/n)');        
          Readln(ans);
          if (ans='y') or (ans='Y') then
           Writeln('Ura! Ya ugadal! Eto 3')
          else

           Writeln('Vy zagadali chislo 4');
 
        end;
    end;
 
  
  Readln;
end.   



Изменим теперь программу так, чтобы ей требовалось максимум 2 вопроса, чтобы угадать число от 1 до 4:

program ugadayka3;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  ans    : Char;
begin
  Writeln('Zagadayte chislo ot 1 do 4. Nazhmite Enter po gotovnosti.');
  Readln;

  Writeln ('Chislo chetnoe? (y/n)');//Этим вопросом мы разбиваем все возможные варианты ответа на 2 равные группы  Readln(ans);
  if (ans='y') or (ans='Y') then
   begin
      Writeln ('Eto 2? (y/n)');
      Readln(ans);

      if (ans='y') or (ans='Y') then
       Writeln('Ura! Ya ugadal! Eto 2')
      else
       Writeln('Vy zagadali chislo 4');
   end
  else
   begin
      Writeln ('Eto 1? (y/n)');
      Readln(ans);

      if (ans='y') or (ans='Y') then
       Writeln('Ura! Ya ugadal! Eto 1')
      else
       Writeln('Vy zagadali chislo 3');
   end;
  
  Readln;
end


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

Немає коментарів:

Дописати коментар