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

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


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


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

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

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


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

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


  Если среди вас есть работники образования, напишите свои отзывы о моих уроках, только не забудьте полностью подписаться с указанием места работы (город и страну тоже укажите) и занимаемой должности. Мне это необходимо для участия в конкурсе педагогических разработок. Отзывы надо отправить не позднее 5 октября. Заранее благодарю всех, кто откликнется на мою просьбу.
  С уважением, Ганилова Татьяна Евгеньевна.


Урок 17


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

Например:
Составить программу, по которой компьютер печатает последовательность вида:

10, 100, 1000, ..., 10^n (n<10)

Код программы:
var i,n,s:longint;
begin
  write('Введите значение n<10');
  readln(n);
  s:=1;
  for i:=1 to n do
  begin
    s:=s*10;{находим степень}
    write(s,' ');
  end;
  readln;
end.


  Если не сделать защиту, то при вводе числа больше 9 программа выполнится, но ответ будет абсурдным (так как пойдет переполнение допустимого значения переменной S). Попробуйте! А если сделать проверку входного данного, то программа не будет выполняться, пока не будет введено допустимое значение.

var i,n,s:longint;
begin
  repeat {Цикл закончится если n<10}
    write('Введите значение n<10');
    readln(n);
  until n<10;
  s:=1;
  for i:=1 to n do
  begin
    s:=s*10;{находим степень}
    write(s,' ');
  end;
  readln;
end.


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

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

1. Дано натуральное число N. Определить, является ли оно палиндромом. Число палиндром можно читать справа налево и слева направо: 4, 88, 121, 767767 и т.д.
2. Вводится последовательность из N целых чисел. Найти наибольшее число.
3. Дано натуральное число. Найти:
   a. Число, получаемое при прочтении его цифр справа налево;
   b. Число, получаемое в результате приписывания по двойке в начало и конец записи исходного числа;
   c. Число, получаемое удалением из исходного всех цифр А;
   d. Число, получаемое из исходного перестановкой его первой и последней цифр;
   e. Число, образованное из исходного приписыванием к нему такого же числа.

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

var n,k:word;
begin
  write('Введите число '); readln(n);
  k:=n div 100;
  n:=n mod 100;
  case k of
    9:write('девятьсот ');
    8:write('восемьсот ');
    7:write('семьсот ');
    6:write('шестьсот ');
    5:write('пятьсот ');
    4:write('четыреста ');
    3:write('триста ');
    2:write('двести ');
    1:write('сто ');
  end;
  k:=n div 10;
  if k<>1 then n:=n mod 10;
  case k of
    9:write('девяносто ');
    8:write('восемьдесят ');
    7:write('семьдесят ');
    6:write('шестьдесят ');
    5:write('пятьдесят ');
    4:write('сорок ');
    3:write('тридцать ');
    2:write('двадцать ');
  end;
  case n of
    19:write('девятнадцать ');
    18:write('восемнадцать ');
    17:write('семнадцать ');
    16:write('шестнадцать ');
    15:write('пятнадцать ');
    14:write('четырнадцать ');
    13:write('тринадцать ');
    12:write('двенадцать ');
    11:write('одиннадцать ');
    10:write('десять ');
    9:write('девять ');
    8:write('восемь ');
    7:write('семь ');
    6:write('шесть ');
    5:write('пять ');
    4:write('четыре ');
    3:write('три ');
    2:write('два ');
    1:write('один ');
  end;
  readln;
end.


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

var k,n,m,max,min:word;
begin
  write('Введите натуральное число '); readln(n);
  max:= n mod 10;
  min:=n mod 10;
  n:=n div 10;
  while n div 10<>0 do
  begin
    k:=n mod 10;
    if k>max then max:=k;
    if k<min then min:=k;
    n:=n div 10;
  end;
  if k>max then max:=k;
  if k<min then min:=k;
  if (max-min) mod 2=0 then writeln('разница четное число ')
    else writeln('разница не четное число ');
  readln;
end.


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

var k,n,m,i:longint;
begin
  write('Введите натуральное число '); readln(n);
  m:=n;
  while m div 10<>0 do m:=m div 10; {определяем цифру старшего разряда}
  i:=1; { один раз уже встретилась в старшем разряде}
  while n div 10<>0 do
  begin
    k:=n mod 10;
    if k=m then i:=i+1;
    n:=n div 10;
  end;
  writeln('старшая цифра встречается в числе ',i,' раз');
  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
Урок 16

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

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
Отписаться
Убрать рекламу

В избранное