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

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


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


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

Подписчиков на 2002-10-05 - 2735 человек(а).

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


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

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


Урок 18


  В уроке 12 вы уже познакомились с символьным типом данных CHAR, который позволяет работать с отдельными символами текста. Для обработки более крупных текстовых единиц - строк введен тип данных, который называется STRING (строка).

  Значениями этого типа являются строки любых символов длиной до 255.
  Переменные строки должны быть описаны предложением:

    VAR имя: STRING

  Строки можно присваивать, сравнивать, вводить, выводить и соединять. Соединение обозначается знаком "+". Вот примеры некоторых операций сравнения над строками:

  'стол'<= 'столик '    true
  'ABC' <'ADBA'         true
  '12' <'2'              true
  'пар'+ 'о' +'воз'     'паровоз'


  На основе этих примеров сформулируйте правила сравнения строк.

  Среди всевозможных значений строк есть пустая строка. Она изображается двумя апострофами (одинарными кавычками), между которыми ничего нет. Чтобы ввести этот символ в состав строки, надо повторить его дважды. Например, оператор


  write('об''явление')
 
  выведет на экран: об'явление.

  Программисту доступны отдельные символы строковой переменной, для этого кроме имени переменной надо указать порядковый номер символа в строке. Например, если описана переменная X:STRING, то X[1] - это первый символ строки, X[2] - второй и т.д.


  У X[0] особая роль - хранить длину строки. Значением X[0] является символ, код которого равен количеству символов в строке. Но для определения длины строковой переменной обычно используется функция


  LENGTH(строковая переменная).

  Например, если N:=LENGTH(x); - N присвоится значение равное числу символов в строке.

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


Var
  a,b:string[4];
begin
  write('введите слово');
  readln(a);
  write(a);
  readln
end.


  Если при выполнении этой программы ввести слово КУКУРУЗА, то программа выведет КУКУ.

 
Запомните. Если при выполнении программы необходимо ввести значение для нескольких строковых переменных, для каждой из них должен быть указан свой оператор ввода READLN. Например,

Var
  a,b,c:string;
begin
  readln(a);
  readln(b);
  readln(c);
  write(a+b+c);
  readln
end.


Проверьте, что произойдет, если записать READLN(a,b,c); или READ(a,b,c).

Пример 1.
Составить программу определяющую, какая из двух фамилий длиннее. Фамилии имеют разную длину.

Var
  a,b:string;
begin
  readln(a);
  readln(b);
  if length(a)>length(b) then write(a) else write(b);
  readln
end.


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

Var  x,y:byte;
     a,b:string;
begin
  readln(a);
  readln(b);
  x:=length(b); {определяем длину слова b, чтобы узнать номер последнего символа}
  if a[1]=b[x] then write('верно') else write('неверно');
  readln
end.


Тренировочные задания.
1. Дано название города. Определить, четно или не четно количество символов в нем.
2. Дано слово. Вывести на экран его третий символ и дважды его последний символ.
3. Дано слово. Верно ли, что оно начинается и оканчивается на одну и ту же букву?
4. Дано слово. Получить и вывести на экран буквосочетание, состоящее из его третьего и последнего символа.
5. Составить программу которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".

Разбор заданий урока 17.
1. Дано натуральное число N. Определить, является ли оно палиндромом. Число палиндром можно читать справа налево и слева направо: 4 88 121 767767 и т.д.

var k,n,m:longint;
begin
  Repeat
    write('Введите натуральное число '); readln(n);
  until n>0;
  m:=n; k:=0;
  while m div 10<>0 do {собираем число в обратном порядке}
  begin
    k:=k*10+m mod 10;
    m:=m div 10
  end;
  k:=k*10+m mod 10;
  if k=n then writeln('данное число палиндром')
    else writeln('это не палиндром');
  readln;
end.


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

var  k,n,m,p:longint;
     a:byte;
begin
  {a}

  Repeat {проверка ввода}
    write('Введите натуральное число '); readln(n);
  until n>0;
  m:=n; k:=0;
  while m div 10<>0 do {собираем число в обратном порядке}
  begin
   k:=k*10+m mod 10;
   m:=m div 10;
  end;
  k:=k*10+m mod 10;
  writeln('обратное число=',k);

  {б}

  Repeat {проверка ввода}
    write('Введите натуральное число '); readln(n);
  until n>0;
  m:=n;
  k:=10;
  while m div 10<>0 do {определяем разрядность числа} -
  begin
    k:=k*10;
    m:=m div 10;
  end;
  m:=(2*k+n)*10+2;
  writeln('число c двойками=',m);

  {в}

  Repeat {проверка ввода}
    write('Введите натуральное число '); readln(n);
  until n>0;
  Repeat {проверка ввода}
    write('Введите цифру ');readln(a);
  until (a>=0) and (a<10);
  m:=n; k:=1; p:=0;
  while m div 10<>0 do {собираем число исключая цифру}
  begin
    if m mod 10<>a then
    begin
      p:=p+(m mod 10)*k;
      k:=k*10
    end;
    m:=m div 10;
  end;
  if m mod 10<>a then p:=p+m mod 10*k;
  writeln('число без цифры ',a:2,'=',p);

  {г}

  Repeat {проверка ввода}
    write('Введите натуральное число больше 9='); readln(n);
  until n>9;
  m:=n; k:=10; p:=0;
  a:=m mod 10;
  m:=m div 10;
  while m div 10<>0 do {собираем число, исключая цифру}
  begin
    p:=p+(m mod 10)*k;
    k:=k*10;
    m:=m div 10
  end;
  p:=a*k+p+m;
  writeln('число с перестановкой первой и последней цифр ',a:2,'=',p);

  {д}
  Repeat {проверка ввода}
    write('Введите натуральное число '); readln(n);
  until (n>0)and(n<21474);
  m:=n; k:=10;
  while m div 10<>0 do {определяем разрядность}
  begin
    k:=k*10;
    m:=m div 10
  end;
  p:=n*k+n;
  writeln('число= ',a:2,'=',p);
  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
Отписаться
Убрать рекламу

В избранное