Как сделать знаки после запятой в паскале

Добавил пользователь Morpheus
Обновлено: 04.10.2024

Символы имеют тип char, занимают 2 байта и хранятся в кодировке Unicode (UTF-16).

Для преобразования символа c в код используется функция Ord(c) , для обратного преобразования кода i в символ используется функция Chr(i) .

Классический способ определить символ, следующий за данным в кодовой таблице, - это преобразовать символ в код, прибавить к коду число и потом преобразовать полученный код снова в символ:

Аналогично определяется предыдущий символ

Методы типа char

Методы, встроенные в тип char, делятся на две категории:

  • проверяющие, принадлежит ли символ указанной категории: c.IsDigit , c.IsLetter , c.IsLower , c.IsUpper
  • преобразующие символ: c.ToUpper , c.ToLower , c.ToDigit .

Отметим, что c.IsDigit эквивалентно (c >= '0') and (c и эквивалентно c in '0'..'9' Для c.IsLower , c.IsLower , c.IsUpper такой простой аналогии нет. Дело в том, что в этих методах проверяются все символы, являющиеся буквами в каком-то алфавите народов мира (в частности, английские и русские)

Отметим также, что c.IsLower возвращает True только если это буква в нижнем регистре - для не букв возвращается False .

Строки

Введение

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

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

Индексация строк

Строки в Паскале индексируются с 1. К символам строк можно обращаться по индексам - s[i] .

Символы строк можно менять:

Можно использовать индексацию с конца: s[^i] обозначает i-тый символ с конца

Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины:

  • Общая длина строки, которая характеризует размер памяти, выделяемый строке при описании;
  • Текущая длина строки (всегда меньше или равна общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени.

Строка в Паскале – упорядоченная последовательность символов. Количество символов в строке называется ее длиной. Длина строки в Паскале может лежать в диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт памяти и имеет числовой код в соответствии с таблицей кодов ASCII.

Код ASCII (American Code for Information Interchange – Американский стандартный код для обмена информацией) имеет основной стандарт и его расширение. Основной стандарт использует шестнадцатеричные коды 00-7F, расширение стандарта – 80-FF. Основной стандарт является международным и используется для кодирования управляющих символов, цифр и букв латинского алфавита; в расширении стандарта используются символы псевдографики и буквы национальных алфавитов.

Строковая константа Паскаля – последовательность символов, заключенная в апострофы. Например, 'строковая константа', '243'. Два следующих друг за другом апострофа ('') обозначают пустую строку, т.е. строку с нулевой длиной.

Описание строковой переменной Паскаля

Для описания строковых переменных в Паскале существует предопределенный тип string.

В общем виде описание строковой переменной будет выглядеть следующим образом:

Пример описания строковой переменной в Паскале:

В приведенном выше описании строковая переменная s1 может содержать не более 10 символов, переменная s2 – не более 20 символов. Если же при описании строки ее максимальная длина не указывается, то по умолчанию принимается максимально допустимая длина, равная 255 символам (переменная smax)..

Символы в строке упорядочены, каждый из них имеет порядковый номер, начиная с первого. Имеется возможность обратиться к любому элементу строки, указав его номер, так же как это делается в одномерных массивах. Например, s1[2] позволяет обратиться ко второму символу в строке s1, при этом мы можем поменять это значение, выполнив оператор присваивания s1[2]:= 'r', можем вывести на экран это значение или присвоить его другой переменной.

Действия со строками в Паскале

Операции отношения позволяют сравнивать строки на отношение равенства (=), неравенства (<>), больше (>), меньше ( =), меньше или равно ( 'строки' (верно, т.к. не совпадают последние символы);

'Abc' 'век' (отношение верно, т.к. буква 'г' в алфавите стоит после буквы 'в', а, следовательно, имеет больший код).

Стандартные функции для работы со строками в Паскале

Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения.

Значение S Выражение Результат
'строка символов' Copy(S,3,3) рок

Concat (s1, s2. sn) выполняет слияние строк s1, s2. sn в одну строку.

Выражение Результат
Concat('язык', '', 'Pascal') 'язык Pascal'

Length(S) определяет текущую длину строкового выражения S. Результат – значение целого типа.

Значение S Выражение Результат
'(а+в)*с' Length(s) 7

Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0.

Значение S Выражение Результат
'предложение' Pos('е', S) 3
'предложение' Pos('a', S) 0

Стандартные процедуры для работы со строками в Паскале

Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – строковая переменная (в данном случае нельзя записать никакое другое строковое выражение, кроме имени строковой переменной, т.к. только с именем переменной связана область памяти, куда будет помещен результат выполнения процедуры); poz, n – любые целочисленные выражения.

Исходное значение S Оператор процедуры Конечное зн-е S
'abcdefg' Delete(s, 2, 3) 'aefg'

Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS – любое строковое выражение, S – строковая переменная (именно ей будет присвоен результат выполнения процедуры), poz – целочисленное выражение.

Исходное значение S Оператор процедуры Конечное зн-е S
'рис. 2' Insert('№', S, 6) 'рис. №2'

Процедуры преобразования типов в Паскале

Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа x. Например, str(x: 8: 3, S), где 8 – общее число знаков в числе x, а 3 – число знаков после запятой.

Оператор процедуры Значение S
Str (sin(1):6:4, S) '0.0175'
Str (3456, S) '3456'

Val(S, x, kod) преобразует строку символов S в число x. Здесь S – строковое выражение, x – числовая переменная (именно туда будет помещен результат), kod – целочисленная переменная (типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0.

Тип X Оператор процедуры Значение X Значение kod
Real Val('12.34', x, kod) 12.34 0
Integer Val('12.34', x, kod) 12 3

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

1. Повторение.
Строковые величины. Замена символов. Подсчет количества символов. Накопление литерных величин. Цикл While.
2. Функции преобразования строковых величин.
Многие операции с числами гораздо проще выполнять, если предварительно их перевести в строковую величину. Для этого в Паскале используют стандартные процедуры Str и Val.
ВНИМАНИЕ! До этого дня мы в программа использовали функции, которые записывались справа от знака присваивания (sqrt(x), length(x), a mod b и др.) Процедура в отличии от функции – это отдельный оператор, который не нуждается ни в знаках присваивания, ни в дополнительных конструкциях языка. После процедур ставится точка с запятой. Примеры процедур: readln(x), writeln('X=').
STR(X,S); – процедура преобразования целого числа Х в строковую величину S.
STR(X:0:2,S); – процедура преобразования действительного числа Х (Х-real) в строковую величину S.
Заметим, что при преобразовании действительных чисел необходимо использовать форматированный вид действительного числа - X:0:2, где первое число удобно всегда ставить 0, а второе - количество знаков после запятой.
VAL(S,X,K); - процедура преобразования строковой величины S в число Х. K – признак, переменная ЦЕЛОГО типа, которая остается равна 0, если преобразование удалось или, если преобразование не состоялось, ей присваивается номер первого символа, который не удалось преобразовать.
Например, после выполнения процедуры:
VAL('35',X,K); - X=35,K=0
S:='3.4'; VAL(S,X,K); - S='3.4', X=3.4, K=0
S:='3:4'; VAL(S,X,K); - S='3:4', X не определено, K=2
С числами в виде строки удобно:
- заменять цифры на указанные;
- подсчитывать количество цифр в числе;
- подсчитывать количество указанных цифр;
- находить сумму цифр;
- менять цифры местами (зная их порядковые номера);
С числами в виде строки нельзя:
- выполнять арифметические операции;
- вычислять значение математических функций.

Пример 1.
С клавиатуры вводится набор символов. Можно ли сказать, что это число? Пример 2.
Вычислить сумму цифр целого числа. Обратите внимание на то, что исходное число мы вводим как строковую величину, а затем процедурой VAL преобразуем каждый символ, то есть каждую цифру этой строковой величины в число, которое прибавляем к предыдущей сумме.
Пример 3.
С С клавиатуры вводится целое число. Возведите его в квадрат и затем замените все цифры в записи полученного числа, большие пяти, на единицы. 3. Решение задач.Pascal.
1. С клавиатуры вводятся два целых числа. Сколько раз в записи их суммы встречается цифра 1?
2. С клавиатуры вводится целое число. Запишите его наоборот (справа налево) и результат умножьте на 3.
3. С клавиатуры вводится целое число N (N>1000). Замените вторую и последнюю цифры на 3. Результат увеличьте в два раза. Сколько в полученном числе шестерок?

Михаил Окатьев

Добрый вечер..Что-то я не могу понять..Подскажите, пожалуйста, есть ли в паскале такие типы данных, которые позволяют получить результат в виде нормальной десятичной дроби? дело в том, что если пользоваться типом integer, то, если к примеру разделить 51 на 2 то он, естественно, пишет 25. тип Real пишет в таком случае 2.550000000000000E+00001. А есть ли способ получить Истинный результат 25,5 и вычитать/плюсовать к нему числа с десятичной дробью?

Владимир Уханов

Real - это нужный и правильный тип данных (для вас). Просто при выводе результата на экран нужно указать какое кол-во символов после запятой необходимо вывести. writeln ("переменная":"кол-во знаков отступа":"кол-во знаков после запятой") Пример writeln(x:7:4)

Елена Калаш

ну вобщем то вам и выводится 25.5. real - вещественный тип данных, именно им обозначаются десятичные дроби в паскале

Читайте также: