Temp в паскале что это
Pascal: Занятие №1. Часть 3: Типы данных в Паскаль
Типы данных в Паскале
Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.
Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.
Рассмотрим наиболее распространенные в Pascal типы данных.
Целочисленные типы данных в Паскаль
Тип | Диапазон | Требуемая память (байт) |
byte | 0..255 | 1 |
shortint | -128..127 | 1 |
integer | -32768.. 32767 | 2 |
word | 0..65535 | 2 |
longint | -2147483648..2147483647 | 4 |
Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
Pascal | PascalABC.NET | |||||||||||||||||||||||||||||||||||||
Pascal | PascalABC.NET | ||||||||||||||||
ДЕЙСТВИЕ | РЕЗУЛЬТАТ | СМЫСЛ |
---|---|---|
2 + 3 | 5 | плюс |
4 — 1 | 3 | минус |
2 * 3 | 6 | умножить |
17 div 5 | 3 | целочисленное деление |
17 mod 5 | 2 | остаток от целочисленного деления |
Порядок выполнения операций
var a: integer; b: real; begin a := 1; writeln(‘a := 1; a = ‘,a); a += 2; // Увеличение на 2 writeln(‘a += 2; a = ‘,a); a *= 3; // Умножение на 3 writeln(‘a *= 3; a = ‘,a); writeln; b := 6; writeln(‘b := 6; b = ‘,b); r /= 2; writeln(‘b /= 2; b = ‘,b); end.
Стандартные арифметические процедуры и функции Pascal
Здесь стоит более подробно остановиться на некоторых арифметических операциях.
Пример операции inc:
Более сложное использование процедуры inc:
Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.
Пример использования функции odd:
begin WriteLn(Odd(5));
Пример использования процедуры sqr в Pascal:
var x:integer; begin x:=3; writeln(sqr(x)); <ответ 9>end.
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
Пример использования процедуры sqrt в Pascal:
var x:integer; begin x:=9; writeln(sqrt(x)); <ответ 3>end.
Temp в паскале что это
Знаток
Группа: Пользователи
Сообщений: 408
Пол: Мужской
Репутация: 3
Се начнем повесть сию.
Итак, уважаемые, позвольте мне представить мой туториал №1. 😀
Внимание: Данные эксперименты не совсем совместимы с модулем Graph, поэтому крайне нежелательно его включать.
Для использования примеров вам необходима карточка VGA, имеющая режим 320*200, TP версии 6.0 и выше, и желание разобраться.
В сегодняшней, первой части, я расскажу о том, что из себя представляет режим 320*200 8 бит, как его врубить, и как с ним работать.
Этот режим имеет номер 13 в шеснацатеричной системе счисления или 19 в десятичной. В дальнейшем 16-теричный вид будет отмечаться буквой h (Например 13h) а десятичный отмечатся не будет (19).
2.Мы можем работать с 2^8=256 цветами (в отличие от 16 в пасе).
3. Базовый адрес памяти, начиная с которого изображение в графических режимах выводится на монитор, равен 0A000:0000h. следующие 64000(320*200) байта в данном режиме как раз и выводятся на экран.
5. Для возврата из графического режима я буду использовать текстовый режим № 3(80*25*16)
Ну так вот, для того, чтобы менять режимы будем использовать функцию BIOS установки режима:
Ну. для начала давайте очистим экран
А теперь, давайте я пасскажу о ней поподробнее.
В языках программирования используют несколько переменных, которые содержат сегменты, это cs,ds,es,ss,gs,fs. В паскале реально используются лишь первые 4.
Обычно, для адресации я.п. используют индексные регистры di и si, но можно использовать и любые другие.
Сегмент и смещение занимают по 16 бит(2 байта) и преобразуются в 20-ти битный адрес.
Двумя этими командами мы помещаем в регистр es сегмент адреса видеопамяти(A000). Напрямую помещать адрес нельзя, т.е. запись типа mov es,0a000h является неверной!! По-моему это связано с отсутсвием кода команд в системе операций процессора.
Эта команда очищает регистр индекса di, для того, чтобы в es:di лежал полный адрес начала выводимой памяти. Индекс di используется для «скольжения» по сегменту, т.е. он адресует ячейку памяти с номером, указанную в нем.
Внимание!
Запись вида mov di,5 обозначает адресацию 5-ой ячейки, а
запись вида mov [di],5 обозначает что в ячейку es:di будет помещено значение 5. Правда, в паскале это не так. В паскале для помещения значения 5 по адресу es:di оное значение помещается в регистр, допустим, аl и используется запись вида mov es:[di],al.
Здесь я помещаю в al номер цвета закраски фона.
команда цикла rep повторяет следующую команду. количество повторов лежит в регистре CX.
Ее можно заменить на команду цикла loop:
Команда rep сначала проверяет регистр cx на равенство 0, а затем, если он не равен, убавляет его на 1, если равен, то цикл прекращается и программа идет дальше, в отличие от команды loop, которая сначала уменьшает cx на 1, а затем проверяет его на 0. Т.е. если вы поместите в cx 0, то команда rep не выполнится ни разу, а команда loop будет выполняться 65535 раз(по максимальному размеру cx)
команда StosW: es[di]=ax; di=di+2;
З.Ы.Ы. Если вы хотите посмотреть, как будет выполнятся программа, можете ее прогнать пошагово, открыв окно Debug->Registers и нажимая F7.
Copyright by Dark.
Моя почта: darkmaze@yandex.ru ;D
Бывалый
Группа: Пользователи
Сообщений: 282
Репутация: 0
Профи
Группа: Пользователи
Сообщений: 775
Пол: Мужской
Репутация: 0
Знаток
Группа: Пользователи
Сообщений: 408
Пол: Мужской
Репутация: 3
А вот что я думаю: Сегмент и смещение ВМЕСТЕ составляют ЛОГИЧЕСКИЙ адрес, который в результате сдвига сегмента на 4 бита и сложения со смещением дает РЕАЛЬНЫЙ адрес объекта(20 бит).
А может есть 2 понятия слова сегмент? ;D ;D ;D
Знаток
Группа: Пользователи
Сообщений: 408
Пол: Мужской
Репутация: 3
Мне не сложно переписывать туториал столько раз, сколько это понадобится, главное, чтобы это не превратилось в манию ;D
Знаток
Группа: Пользователи
Сообщений: 408
Пол: Мужской
Репутация: 3
Профи
Группа: Пользователи
Сообщений: 775
Пол: Мужской
Репутация: 0
Иногда, просто нужно нажраться.
Держи.
Се начнем повесть сию.
Не начнем, а продолжим. 😉
Внимание: Данные эксперименты не совсем совместимы с модулем Graph, поэтому крайне нежелательно его включать.
В каком месте??
Для использования примеров вам необходима карточка VGA, имеющая режим 320*200, TP версии 6.0 и выше, и желание разобраться.
Не думаю, что сейчас хоть у кого-нибудь есть чиста VGA-адаптер; напиши совместимый.
В сегодняшней, первой части, я расскажу о том, что из себя представляет режим 320*200 8 бит, как его врубить, и как с ним работать.
Этот режим имеет номер 13 в шеснацатеричной системе счисления или 19 в десятичной. В дальнейшем 16-теричный вид будет отмечаться буквой h (Например 13h) а десятичный отмечатся не будет (19).
Не надо думать, что все на свете такие валенки; хотя также на твое усмотрение.
Немного теории:
Ну так вот, для того, чтобы менять режимы будем использовать функцию BIOS установки режима:
Здесь я помещаю в al номер цвета закраски фона.
mov cx,64000
rep StosB
команда цикла rep повторяет следующую команду. количество повторов лежит в регистре CX.
Ее можно заменить на команду цикла loop:
Команда rep сначала проверяет регистр cx на равенство 0, а затем, если он не равен, убавляет его на 1, если равен, то цикл прекращается и программа идет дальше, в отличие от команды loop, которая сначала уменьшает cx на 1, а затем проверяет его на 0. Т.е. если вы поместите в cx 0, то команда rep не выполнится ни разу, а команда loop будет выполняться 65535 раз(по максимальному размеру cx)
procedure set13h;
begin
asm
mov ax,0013h
int 10h
cld
end;
end;
procedure close13h;
begin
asm
mov ax,0003h
int 10h
end;
end;
procedure clscr(col:byte);
begin
asm
push 0a000h
pop es
xor di,di
mov cx,64000
mov al,col
rep stosb
end;
end;
begin
randomize;
set13h;
repeat
clscr(random(256));
delay(20000);
until keypressed;
close13h;
end.
Copyright by Dark.
Моя почта: darkmaze@yandex.ru
Debugged & corrected by GLuk
Бывалый
Группа: Пользователи
Сообщений: 282
Репутация: 0
пример для туториала:
если начиная с адреса ds:di в ОП находится следующая
последовательность байт: DF 10 01 FA CD 13
то после выполнения команды | память изменится следующим образом
mov byte ptr [di],5 05 10 01 FA CD 13
mov word ptr [di],5 05 00 01 FA CD 13
mov dword ptr [di],5 05 00 00 00 CD 13
Народ кто-нибудь кроме нас это читает?
Lonely_Raven
Группа: Пользователи
Сообщений: 640
Пол: Мужской
Репутация: 1
Бывалый
Группа: Пользователи
Сообщений: 282
Репутация: 0
Профи
Группа: Пользователи
Сообщений: 775
Пол: Мужской
Репутация: 0
2 ___Alex___: По поводу цитаты: это в плане я неправильно что-то подправил.
Бывалый
Группа: Пользователи
Сообщений: 282
Репутация: 0
Профи
Группа: Пользователи
Сообщений: 775
Пол: Мужской
Репутация: 0
Можно попробовать; Только где народу набрать. 🙂
А по поводу ерунды, ты написал то же самое что и я, поэтому и возник квестчин
Бывалый
Группа: Пользователи
Сообщений: 282
Репутация: 0
Профи
Группа: Пользователи
Сообщений: 775
Пол: Мужской
Репутация: 0
Бывалый
Группа: Пользователи
Сообщений: 282
Репутация: 0
Бывалый
Группа: Пользователи
Сообщений: 282
Репутация: 0
Знаток
Группа: Пользователи
Сообщений: 408
Пол: Мужской
Репутация: 3
Знаток
Группа: Пользователи
Сообщений: 408
Пол: Мужской
Репутация: 3
Профи
Группа: Пользователи
Сообщений: 775
Пол: Мужской
- Temp в кондиционере что это
- Temp кнопка на пульте кондиционера что означает