Раздел: Стандартные функции Паскаля
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее… |
Функция Int вычисляет целую часть значения с плавающей точкой. Синтаксис:
function Int(X: ValReal) : ValReal;
Функция возвращает целую часть вещественного числа Х. Тип данных возвращаемого значения является также вещественным числом.
О типе ValReal я рассказывал здесь.
Функция Frac возвращает дробную часть числа с плавающей точкой. Синтаксис:
function Frac(X: ValReal) : ValReal;
Целая часть числа
Как известно, вещественное число имеет целую часть и дробную часть. Например, число 3,14 можно произнести словами как “три целых, четырнадцать сотых”.
Соответственно, целая часть числа 3,14 – это число 3.
И, как вы теперь уже знаете, получить целую часть числа в Паскале можно с помощью функции Int:
x := Int(3.14);
Дробная часть числа
Если рассмотреть всё то же число 3,14, то его дробной частью будет число 0,14. То есть вещественное число состоит из двух частей, сумма которых и является вещественным числом:
3,14 = 3 + 0,14
Получить дробную часть числа в Паскале можно с помощью функции Frac:
y := Frac(3.14);
Пример программы, которая использует функции Int и Frac, приведён ниже:
program funcintfrac; {$mode objfpc}{$H+} var x, y : real; begin x := Int(3.14); //x = 3.00 WriteLn(x:0:2); y := Frac(3.14); //y = 0.14 WriteLn(y:0:2); ReadLn; end.
ВНИМАНИЕ!
Функции Int и Frac возвращают значение вещественного типа! Если же вы хотите далее
в своей программе работать с целой частью числа как с целочисленным значением,
то вам придётся преобразовать вещественный тип в целый. Сделать это можно, например,
с помощью уже известной нам функции Round:
var x, y : real; z : integer; begin x := Int(3.14); //x = 3.00 z := Round(x); //z = 3 WriteLn(z); ReadLn; end.
|
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… |
|
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение – ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. |
Мастер
(1928),
закрыт
11 лет назад
ВикЕрм
Гуру
(3894)
11 лет назад
Round(12.75) = 13 Округление чисел с плавающей запятой до целого числа
Trunc(12.75) = 12 Возвращает целочисленную часть числа с плавающей запятой
Int(12.75) = 12 то же самое что и Trunc, но возвращает целое число в вещественном значении
Frac(12.75) = 0.75 Возвращает дробную часть числа с плавающей запятой
thesn
Мастер
(1588)
11 лет назад
trunc(12.15) – это для десятичной дроби, результат integer.
int(12.15) – то же самое, но результат остается real.
Для обычной использовать div.
Просмотров 1к. Обновлено 26 ноября 2020
Урок из серии: «Язык программирования Паскаль»
На этом уроке мы остановимся на целых типах данных и алгоритмах их обработки .
Определим для них:
- Зарезервированные слова для описания.
- Диапазон допустимых значений.
- Набор операций.
- Формат внутреннего представления.
В таблице показаны 5 стандартных целых типов, которые отличаются форматами и диапазонами допустимых значений.
Тип |
Диапазон значений |
Длина (байт) |
shortint | -128..127 | 1 |
integer | -32768..32767 | 2 |
longint | -2147483648.. -2147483647 | 4 |
byte | 0..255 | 1 |
word | 0..65535 | 2 |
Для работы с целыми числами используются арифметические операции:
- «+» — сложение;
- » * » — умножение;
- » — » вычитание;
- div — целочисленное деление;
- mod — получение остатка от целочисленного деления.
В языке Паскаль операция возведения в степень отсутствует.
Чтобы остаться в рамках множества целых чисел, вместо обычного математическое деление «/» вводятся операции: »div» — целая часть от деления; »mod» — остаток от деления.
Для работы с целыми типами используются функции, результат которых — целое число.
Функция |
Назначение |
abs(n) | Абсолютная величина n |
sqr(n) | Квадрат числа n |
trunc(x) | Получение целой части вещественного числа x |
round(x) | Округление до целого вещественного числа x |
Содержание
- Оператор присваивания
- Ввод данных
- Вывод данных
- Проверь себя!
Оператор присваивания
Для присваивания значения переменной используется оператор присваивания.
Арифметический оператор присваивания на Паскаль имеет следующий формат:
числовая переменная:= арифметическое выражение
Алгоритм выполнения оператора:
1. Вычисляется значение выражения, стоящего справа от знака присваивания.
2. Полученное значение присваивается переменной , стоящей в левой части.
Следует знать:
Оператор присваивания используется для изменения значений переменных, в том числе и для вычислений по формулам.
Тип результата, полученного при вычислении выражения должен быть совместим по типу с переменной, которой он присваивается.
Ввод данных
Для организации вывода и вывода данных в языке Паскаль предусмотрены следующие операторы: read, readln, write и writeln.
Названия означают «читай», «читай строку» (read line), «пиши», «пиши строку» (write line) соответственно.
Ввод данных — это передача информации от внешних устройств в оперативную память. Обычно вводятся исходные данные для решения задачи.
Оператор ввода можно записать в одной из следующих форм:
read(x1, x2, …, xn);
readln(x1, x2, …, xn);
read;
где x1, x2, …, xn — список ввода, содержащий имена переменных, значения которых будут вводится.
Например:
var x, y: integer;
readln(x, y);
…
Следует знать:
С помощью одного оператора ввода можно вводить значения нескольких переменных. В качестве разделителя при вводе значений можно использовать пробел либо нужно нажимать клавишу Enter после ввода каждого из значений.
Тип данных, вводимых во время работы программы, должен соответствовать типам переменных, указанных в списке ввода. В случае несоответствия типов программа завершает работу и на экран выводится сообщение об ошибке.
Вывод данных
Вывод данных — обратный процесс, когда данные передаются из оперативной памяти на внешние носители (экран, принтер, файл на диске). Обычно вывод осуществляется в конце программы, выводятся результаты решения задачи.
Оператор вывода записывается водной из следующих форм:
write(y1, y2, …, yn);
writeln(y1, y2, …, yn);
writeln;
где y1, y2, …, yn — список вывода.
Например:
writeln(‘Сумма равна: ‘, sum);
Следует знать:
Список вывода может содержать константы, переменные или выражения. Число параметров произвольно.
Из констант наиболее часто выводят строки текста (строковые константы заключаются в апострофы).
Если в списке вывода стоит имя переменной, то на экран выводится значение переменной.
Если в списке вывода стоит выражение, то на экран выводится вычисленное значение выражения.
Оператор writeln аналогичен оператору write. Отличие заключается в том, что после вывода последнего элемента из списка, курсор автоматически переходит в начало новой строки.
Оператор writeln; (без параметров) переводит курсор в начало следующей строки. Таким способом можно, например, отделять результаты работы программы друг от друга одной или несколькими пустыми строками.
Пример 1. Поменять местами значения переменных x и y.
Решение.
Нам нужно изменит значения переменных. Для этого можно использовать оператор присваивания.
Как легко проверить, к цели не приводит выполнение следующих операторов:
x:=y; {переменной x присвоить, значение переменной y}
y:=x; {переменной y присвоить значение переменной х}
Проблема в том, что присваивая переменной x новое значение, мы теряем её старое значение. Нужно сначала сохранить старое значение переменной, а затем присвоить её новое значение. Задачу можно решить с помощью вспомогательной переменной.
Первый способ:
Z:= x; X:=y; Y:=z
Второй способ:
Z:=y; y:=x; x:=z
program _1; var x, y, z: integer; begin writeln('Введите два числа: '); readln(x,y); z:=x; x:=y; y:=z; writeln(x, ' ',y); end.
Пример 2. Найти целую часть и остаток от деления целого числа a на целое число b.
Решение.
program _2; var a, b, p1, p2: integer; begin writeln('Введите a, b: '); readln(a,b); p1:=a div b; p2:=a mod b; writeln('Целая часть: ',p1, ' Остаток: ',p2); end.
Пример 3. Найти сумму цифр заданного трехзначного числа.
Решение.
Сначала научимся разбивать число на отдельные цифры, составляющие его десятичную запись. Это нетрудно сделать, поняв суть позиционной записи: в десятичной записи любого числа последняя цифра показывает количество единиц.
Итак, разделив число на 10, мы получим в остатке его последнюю цифру, а в частном — число, которое получается из исходного вычеркиванием последней цифры. Повторив эту операцию несколько раз, можно по очереди отделить от числа все цифры.
Алгоритм нахождения цифр числа:
1. Находим последнюю цифру в записи числа. Для этого находим остаток от деления заданного числа на 10 с помощью операции mod. Сохраняем её.
2. Вычеркиваем последнюю цифру. Для этого присвоим новое значение числу, разделив старое значение нацело на 10 помощью опрерации div. Число станет двузначным.
3. Находим последнюю цифру теперь уже двузначного числа. Сохраняем её.
4. Зачеркиваем последнюю цифру. Остается первая цифра.
Дважды повторяются действия нахождения остатка и деление нацело. Если цифр в числе будет больше, нужно организовать цикл.
program _3; var a, c1, c2, c3, s:integer; begin writeln('Введите число: '); readln(a); c3:=a mod 10; a:=a div 10; c2:=a mod 10; c1:= a div 10; s:=c1+c2+c3; writeln('Сумма равна: ',s); end.
Проверь себя!
До встречи в следующем уроке.
Стандартные функции.
В программировании, довольно часто приходиться выполнять однотипные действия, причем в задачах разного уровня и класса. И для ускорения процесса написания кода эти действия выносят в специальные подпрограммы – стандартные функции. Обращение к такой подпрограмме происходит по ее имени, а в скобках указывается значение аргумента. В следующей таблице указаны те стандартные функции, которые используются в языке программирования Pascal.
Функция | Назначение |
ABS(x) | Вычисление абсолютного значения x: |х| |
SQR(x) | Вычисление квадрата x: x*x |
SIN(x) | Вычисление синуса x: sin x |
COS(x) | Вычисление косинуса x: cos x |
ARCTAN(x) | Вычисление арктангенса x: arctg x |
EXP(x) | Вычисление экспоненты (числа Е) в степени x |
EXP10(x) | Вычисление 10 в степени x |
LN(x) | Вычисление натурального логарифма x |
LOG(x) | Вычисление десятичного логарифма x |
SQRT(x) | Вычисление квадратного корня из x |
A DIV B | Вычисление частного при делении А на В с отбрасыванием остатка |
A MOD B | Нахождение остатка от делении А на В |
TRUNC(x) | Нахождение целой части x |
RANDOM(x) | Псевдослучайное число в интервале [0, x] |
ROUND(x) | Округление значения x в сторону ближайшего целого |
ODD(x) | Проверяет аргумент на нечетность. Результат TRUE, если аргумент нечетный, FALSE – если четный. |
ORD(x) | Возвращает порядковый номер аргумента и, как следствие, преобразует величину порядкового типа в величину целого типа. |
CHR(x) | Определение символа языка Паскаль по его порядковому номеру |
SUCC(x) | Нахождение элемента, идущего после данного в перечне допустимых элементов |
PRED(x) | Нахождение элемента, идущего перед данным в перечне допустимых элементов |
FRAC(X) | Возвращает дробную часть x |
INT(X) | Возвращает целую часть x |
Pi | Значение математической постоянной π |
EOF(x) | Возвращает TRUE, если файл находится в стоянии “конец файла”, иначе FALSE, если нет конца файла |
Выражения
Выражение состоит из переменных, констант, полей в записях, указателей функций, круглых скобок и знаков операций. Для корректной записи выражений необходимо знать не только как обозначаются те или иные операции, функции и т. п., но также стоит предусмотреть приоритеты их выполнения, математические и логические правила, а также некоторые тонкости самого языка. Для более углубленного изучения выражений, стоит рассмотреть несколько примеров.
1) 12+3*3=21 (12+3)*3=45
Как видите выражения в Pascal, имеют такой же приоритет, как и в математике, а с помощью круглых скобок его можно изменить.
2) (a>1) and (a<=20)
Такое логическое выражение возвращает истину, лишь в том случае, когда истинны оба выражения, т. е. если a входит в диапазон от 1 до 20 включительно. Стоит обратить внимание на скобки, здесь они необходимы для изменения приоритета, так как у операторов сравнения он низший.
3) (a+3>0) and (a+3<15) or (b>1) and (b<10)
Условие вернет истину, тогда когда истинными будут два условия слева или справа от OR, а также если они оба будут истинными.
Логическая операция OR (или) суть дизъюнкция в логики и поэтому имеет следующую таблицу истинности:
X | Y | X or Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Ложь имеет место только когда X и Y ложны (нули). В том случае, чтобы истина возвращалась только тогда, когда одно из условий верно следует применить оператор XOR (исключающее или):
(a+3>0) and (a+3<15) xor (b>1) and (b<10)
4) x^(a) = exp(a*ln(x))
В Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:
1 — умножать число само на себя, какое то количество раз;
2 — воспользоваться функциями экспоненты и натурального логарифма.
В этом примере использованы оба варианта, но если степень, в которую необходимо возвести число, достаточно велика, то предпочтение следует отдать второму способу.