Теория

§3.3. Программирование линейных алгоритмов

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

3.3.1. Числовые типы данных

Вы уже знакомы с основными числовыми типами данных integer и real. К ним применимы стандартные функции, часть из которых приведена в табл. 4.2.

Стандартные функции Паскаля                Таблица 4.2

Функция
Назначение
Тип аргумента
Тип результата
Abs (х)
Модуль x
integer, real
Такой же, как у аргумента
Sqr (х)
Квадрат х
integer, real
Такой же, как у аргумента
sqrt(x)
Квадратный корень из X
integer, real
real
round(x)
Округление х до ближайшего целого
real

int(x)
Целая часть х
real

frac(x)
Дробная часть х
real

random
Случайное число от 0 до 1
-
real
random(x)
Случайное число от 0 до х:
integer
integer

Исследуем работу функций roundint и frac, применив их к некоторому вещественному х. Соответствующая программа будет иметь вид:

program n_3;
var х: real
begin
        writeln ( 'Исследование функций round, intfгас ' ); 
        write ( 'Введите x>>' ); 
        readln (x) ;
        writeln ( 'Округление - ', round (x)); 
        writeln ( 'Целая часть - ', int (x)); 
        writeln ( 'Дробная часть - ', frac(x)) 
end.
Запустите программу несколько раз для х  {10,2; 10,8; -10,2; -10,8}. Что вы можете сказать о типе результата каждой из этих функций?

3.3.2. Целочисленный тип данных

Над целыми числами в языке Паскаль выполняются следующие операции: сложение (+), вычитание (—), умножение (*), получение целого частного (div), получение целого остатка деления (mod) и деление (/). Результаты первых пяти операций — целые числа. Результатом операции деления может быть вещественное число.

Рассмотрим пример использования операций div и mod, записав на языке Паскаль программу нахождения суммы цифр вводимого с клавиатуры целого трёхзначного числа.
Используем тот факт, что трёхзначное число можно представить в виде следующей суммы: х = а ×100 + b × 10 + с, где а, b, с — цифры числа.

program n_4;
var x, а, b, с, s: integer
begin
        writeln ( 'Нахождение суммы цифр трёхзначного числа' );
        write ( 'Введите исходное число>>' );
        readln (х);
        а := х div 100;
        b := х mod 100 div 10;
        с := х mod 10;
        s : = a + b + c;
        writeln ( 's= ', s) 
end.

3.3.3. Символьный и строковый типы данных

Значением символьной величины (тип char) в языке Паскаль является любой из символов, который можно получить на экране нажатием одной из клавиш или комбинации клавиш, а также некоторых других символов, в том числе и невидимых. Множество таких символов состоит из 256 элементов, каждому из которых в соответствии с используемой кодовой таблицей поставлен в соответствие код — число 0 до 255.

Символы, соответствующие первым 32 кодам, являются управляющими, а остальные — изображаемыми. К изображаемым символам относится и пробел, имеющий код 32.

Знакам препинания, знакам арифметических операций, цифрам, прописным и строчным латинским буквам соответствуют коды от 33 до 127. Буквам национального алфавита соответствуют коды с номерами 128 и далее.

В тексте программы константу символьного типа можно задать, заключив любой изображаемый символ в апострофы: ' 5 ', ' В ', ' * '.

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

Чтобы найти код символа, используют функцию ord, где в качестве параметра задают символ.

Чтобы по коду узнать символ, используют функцию chr, где в качестве параметра указывают код символа.

Значением строковой величины (тип string) является произвольная последовательность символов, заключенная в апострофы. В Паскале (как и в алгоритмическом языке) строки можно сцеплять.

Пример. Запишем на языке Паскаль программу, в которой для введённой с клавиатуры буквы на экран выводится её код. Затем на экран выводится строка, представляющая собой последовательность из трёх букв используемой кодовой таблицы: буквы, предшествующей исходной; исходной буквы; буквы, следующей за исходной.

program n_5;
var a: char; kod: integer; b: string
begin
        writeln ('Код и строка'); 
        write ('Введите исходную букву»'); 
        readln (а); 
        kod := ord (а);
        b := chr (kod - 1) + a + chr (kod + 1); 
        writeln ( 'Код буквы ', a, ' - ', kod); 
        writeln ( 'Строка: ', b)
end.

3.3.4. Логический тип данных

Как известно, величины логического типа принимают всего два значения; в Паскале это false и true. Эти константы определены так,что false < true.

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

Пример. Напишем программу, определяющую истинность высказывания «Число n является чётным» для произвольного целого числа n.

Пусть ans — логическая переменная, а n — целая переменная. Тогда в результате выполнения оператора присваивания 

    ans := n mod 2=0

переменной ans будет присвоено значение true при любом чётном n и false в противном случае.

program n_6;
var n : integer; ans: boolean
begin
        writeln ( 'Определение истинности высказывания о чётности числа'); 
        write ( 'Введите исходное число>>' ); 
        readln (n);
        ans := n mod 2=0;
        writeln ( 'Число ', n,' является четным - ', ans) 
end.

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

Пример. Напишем программу, определяющую истинность высказывания «Треугольник с длинами сторон а, b, с является равнобедренным» для произвольных целых чисел а, b, с.

program n_7;
var а, b, с: integer; ans: boolean;
begin
        writeln ( 'Определение истинности высказывания о равнобедренном треугольнике' ); 
        write ( 'Введите значения а, b, с»'); 
        readln (а, b, с); 
        ans := (a=b) or (а=с) or (b=c);
        writeln ( 'Треугольник с длинами сторон ', а, ',' , b, ',', с, ' является равнобедренным - ', ans)
end.

Комментариев нет:

Отправить комментарий