Как сделать знаки после запятой в паскале
Добавил пользователь 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 - вещественный тип данных, именно им обозначаются десятичные дроби в паскале
Читайте также: