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

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


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


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

Подписчиков на 2002-08-22 - 1887 человек(а).

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


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

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


  Надеюсь, что мои уроки помогают вам в освоении трудной, но увлекательной науки программирования. Итак, продолжим.


Урок 12


  Вычислительные машины имеют дело не только с числами. Едва ли не больше времени они бывают заняты обработкой текста. В Паскале для этого есть специальный тип данных, который называется CHAR (от слова character - символ).

12.1.Тип CHAR (символьный или строковый или литерный).
  Его значениями являются отдельные символы: буквы, цифры, знаки. Символьные константы заключаются в кавычки, например, 'A', 'B', 'C', '4', '7', ' '(пробел).

  Символьные переменные описываются предложением:

  Var имя переменной: char;

  Символьные значения можно вводить и выводить, присваивать, сравнивать. Ниже приведен пример, где выполняются все эти действия.

Var  x,y:char;
Begin
  Write('Введите символ');   
  Readln(x);
  Y:='A';
  If x<y then write ('X') else write ('y');

  {на экран буде выдан символ хранящийся в переменной
  Х или Y в зависимости от проверки условия}
  Readln;
End.


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

'A'<'B'<...<'Z'
'a'<'b'<...<'z'
'0'<'1'<...<'9'
'а'<'б'<...<'я'
'А'<'Б'<...<'Я'

Для символов допустимы все шесть операций сравнения: =, <=,>=,<,>,<>.

12.2.Стандартные символьные функции.
  В Паскале имеются стандартные символьные функции:

  CHR(N) - возвращает в программу символ с кодом N,
  ORD(S) - возвращает код символа S,
  PRED(S) -возвращает предыдущий символ
  SUCC(S) - возвращает следующий символ

  Примеры:
  CHR(128) = Б
  ORD(':') = 58
  PRED('Б') = А
  SUCC('Г') = Д

  Каждый символ имеет свой уникальный двоичный код. Коды всех символов сведены в таблицу. Первая половина таблицы стала международным стандартом, который называется ASCII - American Standard Code Information Interchange ( читается "аски код") в ней кроме прочего содержится латинский алфавит, вторая имеет разные варианты для разных языков. Кириллица (русский алфавит) имеет несколько стандартов. В Паскале используется стандарт КОИ-8.

Пример использования переменной символьного типа.
  Составить программу, по которой компьютер многократно вычисляет сумму А+В при различных значениях А и В. в конце каждого этапа появляется запрос о продолжении или прекращении вычислений: "Завершить программу?(Д/Н)".

Var A,B:real; { PROGRAM имя; не обязательное предложение}
    C : char;
Begin
  repeat
    Write('Введите два числа'); Readln(a,b);    
    Writeln(a+b:0:2);
    Writeln('Завершить программу?(Д/Н)');
    Readln(с);
  Until с='Д'; {программа завершит работу если будет введено Д}
  Readln
End.


Тренировочные задания.
1. Что вернет функция CHR(ORD(X))?
2. Определить значения следующих функций (как правило таблица аски кодов есть в любом справочнике по программированию):
   CHR(68)
   ORD('d')
   PRED(1)
   SUCC('Я')
3. С клавиатуры вводится два числа. Составить программу сравнивающую эти числа и в зависимости от результата сравнения выводящую на экран нужный знак. Например: 3<5 или 3=3 или 3>2. Процедуру WRITE для вывода результата разрешается использовать только один раз.
4. Составить программу, по которой компьютер находит произведение нечетных чисел, начиная с единицы, и до тех пор, пока на вопрос, задаваемый после каждого шага вычислений: "Продолжить вычисления? (Д/Н)", отвечают 'Д'.

Разбор заданий урока 11.
2. Напишите программу, которая вводит целые числа с клавиатуры и складывает их, пока не будет введено число 0.

Program sum;
Var N,s: integer;
Begin
  S:=0;
  repeat
    Write('Введите число');    Readln(n);
    S:=s+n;
  Until n=0;
  Writeln('S=',s);
  Readln
End.


3. Напечатайте 20 первых степеней числа 2.

Var N,s:longint;
Begin
  S:=1; n:=1; {Начальное значение S присваиваем 1, при нулевом
       начальном значении умножение всегда даст в результате 0}
  repeat
    s:=s*2;
    Write(s,' ');   
    N:=n+1;
  Until n>20;
  Readln
End.


5. Дано натуральное число. Выяснить, является ли оно простым, т.е. делится только на 1 и на само себя.
Для решения этой задачи надо исходное число делить последовательно на 2, 3,4 и т.д. до тех пор, пока исходное число не разделится без остатка. После выхода из цикла мы проверим, чему равен делитель, на который разделилось число. Если исходное число простое, то оно разделится без остатка только само на себя (единицу исключаем сразу).

Program pr_11_5;
Var N, k: word;
Begin
  Write('Введите число');       
  Readln(n);
  k:=1;
  repeat
    K:=k+1;
  Until n mod k = 0;
  If k=n then Writeln('число простое') else write('число не простое');
  Readln
End.


Желаю успехов!
Ганилова Татьяна Евгеньевна school6@rikt.ru


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

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

Урок 1 Урок 2 Урок 3 Урок 4 Урок 5
Урок 6 Урок 7 Урок 8 Урок 9 Урок 10
Урок 11

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

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

В избранное