IPB
ЛогинПароль:

> Прочтите, прежде чем создать тему.

В этом форуме Вы можете предложить изменения на форуме или обсудить действия администрации.

> Написание статей!
сообщение
Сообщение #1


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Есть ли у кого-нибудь из участников желание попробовать себя в сабже? Любые темы связанные с паскалем(но не делфи!).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Нефиг делать. Инфа о символьном типе. Где используеться...

Переменные данного типа хранят один символ, и под каждую из них отводится 1 байт памяти. Нужны такие переменные, в основном, когда от пользователя требуется подтвердить какое-то действие, например, нажать "у" в качестве подтверждения чего-либо. Объявляются переменные данного типа, как и все остальные, в разделе объявлений переменных (var). Объявление выглядит примерно так.

Код

var
name_of_variable:char;
...


Переменной можно, как и любой другой, присвоить какое-либо значение в виде одного символа. Также можно присвоить значение нажатой клавиши. Это делается примерно так:

Код

....
ch:=readkey;{должен быть объявлен модуль Crt}
....


Чтобы всем было понятнее, что я имел в виду, приведу пример проги. Эта прога практически ничего не будет делать, кроме как выводить просьбу о нажатии на 'y' или 'n'.

Код

uses crt;
var
ch:char;
begin
clrscr;
repeat
 textcolor(red);
 writeln('Вы хотите понажимать на кнопки(y/n)?');
 ch:=readkey;
 clrscr;
 if ch='y' then writeln('Мне тоже нравиться нажимать на кнопки!');
until ch='n';
end.


Тут мы читаем то, что нажал пользователь, пока он не нажмёт 'n' или Reset/Power. Если он нажимает 'y', то мы ему ещё одно сообщение выводим. Всё остальное прога игнорирует.
Теперь надо рассмотреть пару функций для работы с переменными данного типа. Дело в том, что переменная хранит не сам символ, а его номер в таблице ASCII. В нашей программе, если мы нажмём, например, какую-то из "стрелочек", то в переменную занесётся код нажатой клавиши. В наших программах мы можем печатать любой символ из этой таблицы. Поэкспериментируйте с такими строчками в своих программах.

Код

....
writeln(#1);
writeln(#100);
....


На экране будут первый и сотый символы таблицы. Но как же мы узнаем, какой код имеет тот или иной символ? Мы можем посмотреть в таблицу символов, а можем сделать для этого программу. Но перед этим рассмотрим пару функций.

1) Ord(x); - возвращает порядковое значение выражения перечисляемого типа. В нашем случае, если в качестве параметра (вместо х) поставить переменную символьного типа, функция возвратит нам код этого символа.
2) Chr(x); - в качестве параметра передаём число от 0 до 255 и получаем соответствующий символ.
А теперь открываем Паскаль и набиваем следующий код

Код

uses crt;
var
c:char;
begin
clrscr;
repeat
 c:=readkey;

 if c=#0 then begin write(ord(c)); c:=readkey;
   writeln(' and ',ord(c));
 end
 else writeln(c,'=',ord(c));
until c=#27;
end.


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

Код

...
for ch:='a' to 'z' do write(ch);
for ch:='z' downto 'a' do write(ch);
...


На экран будет выведен алфавит, а потом алфавит в обратном порядке.
Напишем Paint в текстовом режиме. :D

Код

uses crt;
var x,y:byte;
begin
clrscr;
writeln('esc for exit');
x:=12;
y:=12;
repeat
 gotoxy(x,y);
 write(#1);
 c:=readkey;
 case c of
   #72: dec(y);
   #80: inc(y);
   #77: inc(x);
   #75: dec(x);
 end;
until c=#27;
end.



Объявляем пару переменных для положения "кисти". Чистим экран. Рисуем символ в позиции, заданной координатами х и у. Читаем у Юзверя клавишу. После этого сравниваем то, что он нажал с каждой из "стрелочек". В зависимости от того, что он нажал, увеличиваем\уменьшаем соответствующую координату на 1. Рисуем символ в позиции,... Всё это работает до нажатия Esc.

Вот и поизвращались с символьным типом.


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.06.2024 23:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name