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

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


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


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

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

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


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

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


  Небольшое объявление в начале рассылки:

"Вашему вниманию предлагается дистанционный курс "Основы программирования". Узнать подробнее о самом курсе и зарегистрироваться можно на сайте http://distprog.narod.ru. После регистрации Вам будет выслано письмо с необходимыми
инструкциями. Соучастие и сотрудничество приветствуются.


  С уважением, Анатолий Ремнев,
  учитель информатики 1 кат."


Урок 20


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

20.1 Функция копирования строки или ее части.

  S:=COPY(строка, позиция, N);

  Функция копирования называется также "вырезкой". Результатом выполнения функции будет часть строки начиная с указанной позиции длиной N.

  Код программы для решения задачи из 19 урока будет выглядеть иначе с применением данной функции.

Пример 1.
Дано слово, состоящее из четного числа букв. Вывести на экран его первую половину.

Var  x:byte;
     a:string;
begin
  repeat
    write('Введите слово из четного числа букв');
    readln(a);
    x:=length(a);         {определяем длину слова}
  until (x mod 2 = 0);
  x:= x div 2;         {применяем целочисленное деление}
  write(copy(a,1,x); {вместо оператора цикла}
  readln
end.


20.2 Функция поиска подстроки в строке.

  N:=POS(подстрока, исходная строка)

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

  Рассмотрим задачу из 19 урока.
  Дано предложение. Определить порядковый номер первой встреченной буквы 'к'. Если такой буквы нет, сообщить об этом.

Var  x:byte;
     a:string;
begin
  write('Введите предложение');
  readln(a);
  x:=pos('к',a);
  if x=0 then writeln(' Такой буквы нет') else writeln(x);
  readln
end.


20.3.Процедура удаления части строки

  DELETE(строка, начальный номер, количество символов)
 

  Удаляет из исходной строки указанное количество символов.

  Пример из 19 урока.
  Дано слово, состоящее из четного числа букв. Вывести на экран его первую половину.

Var  i,x:byte;
     a,p:string;
begin
  repeat
    write('Введите слово из четного числа букв');
    readln(a);
    x:=length(a);         {определяем длину слова}
  until (x mod 2 = 0);
  x:= x div 2;         {применяем целочисленное деление}
  delete(a,x+1,x);
  write(а);
  readln
end.


20.4.Процедура вставки подстроки в строку

  INSERT(строка1, строка2, позиция);

  Строка1 вставляется в строку2 начиная с указанной позиции.

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

1. Дано предложение. Определить число вхождений в него некоторого символа.
2. Дано предложение. Заменить в нем все вхождения буквосочетания "ах" на "ух".
3. Дано слово. Проверить, является ли оно "перевертышем", т.е. читается одинаково как с начала, так и с конца.
4. Дано слово:
   a. удалить из него первую из букв "о", если такая буква есть;
   b. удалить из него последнюю из букв "т", если такая буква есть.
5. Дано предложение. Удалить из него все буквы "с".

Разбор заданий урока 19.

1. Дано слово. Получить его часть, образованную идущими подряд буквами, начиная с m-й и кончая n-й (m<n).

Var  i,m,n:byte;
     a,b:string;
begin
  write('Введите слово');
  readln(a);
  write('Введите значения m и n (m<n)');
  readln(m,n);
  b:='';
  if length(a)>=n then for i:=m to n do b:=b+a[I];
  writeln(b);
  readln
end.


2. Дано слово из четного числа букв. Поменять местами его половины.

Var  i,x,y:byte;
     a,b:string;
begin
  repeat
    write('Введите слово из четного числа букв');
   readln(a);
    x:=length(a);         {определяем длину слова}
  until (x mod 2 = 0);
  y:= x div 2;
  b:='';        {применяем целочисленное деление}
  for i:=y+1 to x do b:=b+a[I];
  for i:=1 to y do b:=b+a[i];
  write(a);
  readln
end.


5. Дано предложение. Напечатать все его буквы "и".

Var  i,m,n:byte;
     a:string;
begin
   write('Введите слово');
   readln(a);
   x:=length(a);   {определяем длину слова}
   for i:=1 to x do if a[I]='и' then write('и');
  readln
end.


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

Распространение, переработка и тиражирование только с согласия автора.


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

  Архив предыдущих выпусков рассылки: http://olimpiada.com.ru/learing.php?lesson=all;

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

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

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

В избранное