Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки программирования на Turbo Pascal


Информационный Канал Subscribe.Ru


Уроки программирования на Turbo Pascal #16

Подписчиков на 2002-09-21 - 2553 человек(а).

Рассылка проекта "Олимпиада.com.ru".


Главная Архив задач Конкурс Обучение Рассылки Форум Контакты

Здравствуйте, уважаемые подписчики!


Урок 16


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

  Составить программу, которая в зависимости от порядкового номера дня недели (1, 2, ..., 7) выводит на экран его название (понедельник, вторник, ..., воскресенье).
Для этого воспользуемся условным оператором.

Var    x: byte;
Begin
  Write(' введите число от 1 до 7');
  Readln(x);
  If x=1 then writeln('понедельник');
  If x=2 then writeln('вторник');
  If x=3 then writeln('среда');
  If x=4 then writeln('четверг');
  If x=5 then writeln('пятница');
  If x=6 then writeln('суббота');
  If x=7 then writeln('воскресенье');
  Readln
End.


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

  В таком случае лучше подойдет оператор ВАРИАНТА (или ВЫБОРА).

  Если условный оператор напоминает дорожную развилку, то оператор выбора - это разделение пути на множество дорог, по одной из которых пойдет выполнение программы.

  Формат оператора:

  CASE выражение OF
    P1:<оператор 1>;
    P2:<оператор 2>;
    . . .
    PN:<оператор N>;
      ELSE <оператор N+1>
  END;

  Выражение порядкового типа вычисляется, и его значение отыскивается в одном из списков констант. После этого выполняется соответствующий оператор. Если значение выражения не совпало ни с одной из меток, то выполняется оператор из строки ELSE. Cокращенная форма оператора не содержит ELSE. Метки оператора варианта могут быть константами любого типа, но их тип должен совпадать с типом выражения.

  Тогда код нашей программы будет выглядеть иначе:

Var  x: byte;
Begin
  Write(' введите число от 1 до 7'); Readln(x);
  Case x of
    1: writeln('понедельник');
    2: writeln('вторник');
    3: writeln('среда');
    4: writeln('четверг');
    5: writeln('пятница');
    6: writeln('суббота');
    7: writeln('воскресенье');
  end;
  Readln
End.


  Если при выборе альтернативы необходимо выполнение нескольких операторов, то нужно заключить их в операторные скобки BEGIN . . . END;, т.е. использовать составной оператор.
  При использовании оператора CASE можно использовать диапазон допустимых значений параметра. Например, чтобы определить, введена ли как символьная переменная цифра, можно написать:

  CASE I OF
    '0'..'9':writeln('цифра');
    ELSE writeln ('не цифра')
  END;


Задача. Для целого числа K от 1 до 99 напечатать фразу "Мне k лет", учитывая при этом, что при некоторых значениях K слово "лет" надо заменить на слово "год" или "года". Например, 11 лет, 22 года, 51 год. (Данное решение можно улучшить используя дополнительно условный оператор. Попробуйте.)

var k:byte;
begin
  write('Введите число лет'); readln(k);
  case k of
    1,21,31,41,51,61,71,81,91:writeln('Мне ',k,' год');
    2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94:writeln('Мне ',k,' года');
    else writeln('Мне ',k,' лет');
  end;
  readln;
end.


Тренировочные задания:

1. Составить программу, которая в зависимости от порядкового номера месяца (1, 2, ..., 12) выводит на экран его название (январь, февраль, ..., декабрь).
2. Написать программу, которая бы по введенному номеру месяца выдавала соответствующее этому месяцу время года.
3. Составить программу, которая читает натуральное число N в десятичном представлении (N<=10000), а на выходе выдает это же число в десятичном представлении и на естественном языке. Например: 7 - семь, 204 - двести четыре, 52 - пятьдесят два.

Задачи на повторение:
4. Дано натуральное число. Определить, является ли разность его максимальной и минимальной цифр четным числом.
5. Дано натуральное число. Определить, сколько раз в нем встречается цифра, равная старшей.

Разбор заданий урока 15.
3.Вводится последовательность чисел, 0-конец последовательности. Найти два наименьших числа.

var x,min1,min2:integer;
begin
  write('Введите число '); readln(x);
  min1:=x;
  write('Введите число '); readln(x);
  min2:=x;
  repeat
   if x<=min1 then
   begin
     min2:=min1;
     min1:=x
   end
   else if x<min2 then min2:=x;
   write('Введите число '); readln(x);
  until x=0;
  write('Два наименьших числа ',min1,' и ', min2);
  readln;
end.


4.Вводится последовательность из N целых чисел. Найти наибольшее из всех отрицательных чисел.

var i,n,x,max:integer;
begin
  write('Введите длину последовательности N= '); readln(n);
  repeat
    write('Введите число '); readln(x);
    n:=n-1;
    if x<0 then max:=x;
  until (x<0) or (n=0);
  for i:=1 to n do
  begin
    write('Введите число'); readln;
    if (x<0)and(max<x) then max:=x
  end;
  if max=0 then writeln('отрицательных чисел нет ')
    else writeln('наибольшее из отрицательных ', max);
  readln;
end.


Желаю успехов!
Ганилова Татьяна Евгеньевна school6@rikt.ru
Гимназия №6, г. Междуреченск.


Архив рассылки:

  Архив предыдущих выпусков рассылки: http://subscribe.ru/catalog/comp.soft.prog.bpascal ;

Урок 1 Урок 2 Урок 3 Урок 4 Урок 5
Урок 6 Урок 7 Урок 8 Урок 9 Урок 10
Урок 11 Урок 12 Урок 13 Урок 14 Урок 15

Реклама в рассылке:

RLE    

  


Подпишитесь на наши рассылки:

Новости проекта "Олимпиада.com.ru" [Алексей Шамис]
Новости проекта "Olimpiada.com.ru". Новые темы на форуме. Информация о пополнениях в архиве задач. Оперативно и своевременно!

Уроки программирования на Turbo Pascal [Татьяна Ганилова]
Хотите стать Великим Программистом? Начните свой путь к вершине славы с изучения языка Turbo Pascal. Он как нельзя лучше подходит для начинающих программистов и в то же время используется для разработки сложных "профессиональных" программ.

Олимпиадные задачи с решениями на Turbo Pascal [Алексей Шамис]
В рассылке публикуются решения интересных олимпиадных задач различного уровня. Содержит много теоретической информации. Периодичность - 2-3 раза в неделю.

Задача в неделю. Олимпиадные задачи по информатике [Александр Алексеев]
Каждый понедельник в рассылке публикуется задача, которую необходимо решить и в следующий понедельник прислать программу на тестирование. Решения проверяются, и в пятницу публикуется разбор и итоги тестирования.



Всегда рады видеть Вас на нашем сайте. Жду ваших предложений и замечаний, Алексей Шамис

Copyright © 2002 by Tatyana Ganilova.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное