7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Pascal ABC

Содержание

Pascal ABC

Sultan Amangeldinov запись закреплена
Салават Зиганшин запись закреплена
Елена Гудкова запись закреплена

Помогите!!
Все это делать модулями GraphABC и ABCObject
Создать круг
По нажатию на цифры дополнительной клавиатуры (от 1 до 9) программа изменяет цвет заливки объекта (9 разных цветов на выбор)

Показать полностью.
Виртуальные коды клавиш:
VK_NumPad1
VK_NumPad2
VK_NumPad3
VK_NumPad4
VK_NumPad5
VK_NumPad6
VK_NumPad7
VK_NumPad8
VK_NumPad9

uses graphabc, abcobjects;
var
a:integer;

begin
Показать полностью.
a:=0;
while true do
begin
readln(a);
circle(200,100,50);
if a=1 then floodfill(200,100,clgreen);
if a=2 then floodfill(200,100,clred);
if a=3 then floodfill(200,100,clyellow);
if a=4 then floodfill(200,100,clblack);
if a=5 then floodfill(200,100,clwhite);
if a=6 then floodfill(200,100,clpink);
if a=7 then floodfill(200,100,clorange);
if a=8 then floodfill(200,100,clmoneygreen);
if a=9 then floodfill(200,100,clblue);
end;
end.
Не лучший и не худший вариант.

Елизавета Свец запись закреплена
Pascal ABC запись закреплена

Доброго дня всем.

Если пишите в личные сообщения кому-либо из администрации группы и хотите получить ответ — проверьте возможность написать вам в ответ.

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

Поэтому, не получится ответить в таком случае.

Арсений Малько запись закреплена

Шура Колесников запись закреплена

Помогите, прошу. Pascal ABC
1. Дан массив из n чисел. Вывести на экран количество отрицательных элементов в данном массиве, а так же сами эти элементы.
(Пример: ввод: n=5, a=<2, 5, -6, 4, -9>; вывод: 2, -6, -9)

2. Дан массив из n чисел. Вывести на экран количество элементов кратных 4, а так же сами эти элементы.
(Пример: ввод: n=6, a=<2, 5, 8, 4, 12>; вывод: 3, 8, 4, 12)

Кристина Нестерова запись закреплена

Артём Сухоленцев запись закреплена

Георгий Бульбенко запись закреплена

Подскажите пожалуйста. Проблема в сортировке записи. Нужно отсортировать по фамилии. Но идёт сортировка максимум первых 2-х фамилий. Желательно с применением пузырька.

Pascal ABC запись закреплена

Pascal ABC запись закреплена
Pascal ABC запись закреплена

РАБОТА С ФАЙЛАМИ.

Ну я решил по результатам немногочисленного голосования выложить урок по работе с файлами на Pascal.

Итак, хотим мы например сделать какую-нибудь игру, но что нам делать если мы играем — играем прошли уже половину игры, но нам нужно срочно куда-то уйти. Результаты сохранённые в обычные переменные как известно удаляются после закрытия программы.
Показать полностью. А для долговременного хранения информации нам — то и нужны файлы. В них мы можем записать и текст и цифровые значения, которые будут например являться сохранением нашей игры т.е. хранить какие-то цифровые значения.

И как-же работать с файлами?

Ну никаких дополнительных модулей слава богу подключать не нужно. Нужно лишь создать файловую переменную:

Далее мы можем выполнить некоторые манипуляции с файлом. Но для начала нам нужно его создать:

Assign(F,’название файла (например file1.txt)’); //готовит программу к работе с файлом. (типо BEGIN в процедуре или цикле)

Reawrite(F); //создаём наш файл на диске, при этом если файл уже был создан, то он удалится и создастся новый, пустой.

После того как мы подготовили программу к работе с файлом и открыли его на запись, соответственно нам надо что-либо в него записать.
Записывается это так:

WriteLn(F,’текст который записываем’); //Можно использовать и Write

Мы записали в файл строку «текст который записываем» 🙂 далее если мы закроем нашу программу, то запись не сохранится. Поэтому надо всегда закрывать наш файл строкой:

Close(F); //закрываем файл (типо END в процедуре или цикле)

Ну приведу весь код полностью:

assign(F,’file1.txt’);
rewrite(F);
writeln(F,’текст который записываем’);
Close(F);

Ну вот мы и создали файл рядом с сохранённой нами программой (Program1.pas) и записали в него некую строку.

____________________________________________________
Дополнительная информация:
Для создания файла в какой-то папке рядом с нашей программой на нужно прописать путь, например: assign(F,’graph/file1.txt’);
предполагается что рядом с нашей программой уже существует папка «graph» в которой будет создан файл «file1.txt».
если на нужно создать файл скажем в корне диска «C» тогда пишем так: assign(F,’C:/file1.txt’); В место С можно указать хоть название любого диска (E,D,I и т.д).
_____________________________________________________

Ну раз мы записали текст в файл, значит нам когда-нибудь его придётся и прочитать для загрузки нашего сохранения. Для начала нам нужно подготовить программу к тому, что мы будем читать файл. Делдает это строка:

Reset(F); //подготавливаем файл к чтению

Далее собственно само чтение:

ReadLn(F,string); //string — переменная типра string. Мы так-же можем использовать и переменные типа Real, Integer и другие, но это если вы точно уверенны что в файле записана именно цифровая строка.

Ну и собственно нам надо всё это дело завершить, а правильнее закрыть:

uses crt;
var
F : text;
S : string;

assign(F,’file1.txt’); //запись
rewrite(F);
writeln(F,’любой текст который записываем’);
Close(F);

assign(F,’file1.txt’); //чтение
reset(F);
readln(F,S);
Close(F); //закрытие потока. Не забываем! Иначе ошибка.

writeln(S); //выводим прочитанную строку.

Если мы например составляем какой-либо список, и нам не нужно каждый раз перезаписывать файл, а нам нужно дописывать в него какие-то строки. Тогда делаем так:

assign(F,’file1.txt’) //предпологается что файл file1.txt уже существует, иначе будет ошибка. (создайте его с помощью rewrite)

Далее готовим к записи:

append(F); //в отличие от Rewrite не перезаписывает файл а ставит курсор в конец файла и дописывает его.

Полный код (С чтением):

uses crt;
var
F : text;
S : string;

rewrite(F); //обнуляем файл

append(F); //допись в файл

writeln(F,’текст1′); //построковая запись
writeln(F,’текст2′);
writeln(F,’текст3′);

readln(F,S); //построковое чтение
writeln(S);

Ну вот и основная часть закончилась, теперь нюансы:

1) если файл длинный и мы не знаем сколько в нём строк, но при этом нам нужно считать его весь, то есть такая команда, которая позволяет узнать закончился файл или нет. Делаем так:

uses crt;
var
F : text;
S : string;

while not eof(F) do begin //eof(F) позволяет узнать стоит ли курсор в конце файла или нет, если нет, то продолжаем чтение.

Ну вот вроде и всё. Если вспомню ещё, допишу 🙂
Надеюсь я вам помог.
Спасибо за внимание.

Pascal ABC запись закреплена

Иной раз возникает необходимость перевода из одного типа данных в другой, давайте поговорим об этом.

Например у вас такая ситуация: Вам нужно вывести число переменной на экран используя команду «textout(x,y,’string’);» но данная команда выводи на экран только тип string. Для того что бы перевести тип integer в string используется команда: «STRING:=inttostr(INTEGER);»
Показать полностью.
т.е. теперь значение которое у вас было в переменной INTEGER плавно перетечёт в тип STRING, который в последствии вы сможете вывести на экран командой «textout».

(Про команду «Textout»: данную команду можно сравнить с такими командами как: write,writeln. Эта команда подключается только в месте с модулем GRAPHABC. Она позволяет выводить текст на экран, для того что-бы вывести текст вам надо:
textout(кордината Х,кордината У,’текст для вывода’);
для того что-бы сложить к данному тексту переменную типа стринг надо написать:
textout(X,Y,’текст’+STRING); (как переводить в string вы знаете).)

Аналогичным способом можно перевести из STRING в INTEGER командой «INTEGER:=strtoint(STRING);».

Теперь ещё один перевод который будет довольно хорошо сочетаться с модулем EVENTS а в частности когда вы будете использовать клавиатуру. Часто бывает, что во всяких играх можно настроить клавиши на нужную команду. Используется перевод с типа CHAR в INTEGER, но данный перевод не совсем обычный, т.е. если вы в типе CHAR запишите число 8 и попытаетесь перевести в INTEGER то вам там выдаст число 56, что-бы перевести его в нормальное число нужно отнять 48. для перевода используется оператор «INTEGER:=ord(CHAR);» Ну вот пример если кому не понятно:

uses crt;
var
I : integer;
C : char;

writeln(‘введите любую цифру:’);
readln(C);

Ну на самом деле можно вводить не только цифры, но и знаки. Почему-же мы отнимали 48? Дело в том, что команда «ord» переводит знак в его ID номер, который мы сможем вставить в нашу игру. Для того что-бы назначить клавишу, нам сначала нужно спросить её:

uses crt,graphabc,events;
var
C : char;
I : integer;

procedure keydown(key: integer);
begin

if (key=I) then begin writeln(всё работает!’); end;

writeln(‘используйте клавишу: ‘,C,’ ‘,I);

Надеюсь вы поняли. Можно осуществлять обратный перевод: «CHAR:=chr(INTEGER);».
Можно узнавать предыдущий и следующий знаки: «CHAR:=succ(CHAR2);» узнаёт следующий знак после CHAR2. «CHAR:=pred(CHAR2);» узнаёт предыдущий знак перед CHAR2.

Pascal ABC запись закреплена

Давайте немного поговорим о модуле EVENTS.

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

USES crt,graphabc,abcobjects,EVENTS;
Показать полностью.
VAR
A,B,C,D,E : integer;
PROCEDURE keydown(key: integer); <�ОБЯЗАТЕЛЬНО!>
BEGIN

IF key=Vk_left then A:=A-1;
IF key=Vk_right then A:=A+1;

Здесь мы можем с помощью стрелок ( влево и вправо ) управлять шариком. Что-бы управлять им ещё и в верх , вниз , нужно дописать ещё такие строки:

IF key=vk_up then B:=B-1;
IF key=vk_down then B:=B+1;

и всё, вы сможете двигать шарик во все стороны. Вот список кнопок:

ну это основные, теперь про мышь.

procedure keydown(key: integer);
begin

if key=Vk_up then S:=S+1;
if key=Vk_down then S:=S-1;

if key=Vk_left then A:=A-1;
if key=Vk_right then A:=A+1;

if A=0 then A:=A+1;
if A=11 then A:=A-1;
// это типо предохранитель, чтоб вы не вышли за рамки дозволенного))).
if S=0 then S:=S+1;
if S=10 then S:=S-1;

end;
procedure MouseDown(x,y,mb: integer); // отслеживает нажатие клавишь мыши.
begin
MoveTo(x,y);
end;
procedure MouseMove(x,y,mb: integer); // отслеживает местонахождения мыши.
begin

if S=1 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblack); setbrushcolor(clblack); circle(7,7,A); end;
if S=2 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clgreen); setbrushcolor(clgreen); circle(7,7,A); end;
if S=3 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clred); setbrushcolor(clred); circle(7,7,A); end;
if S=4 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clblue); setbrushcolor(clblue); circle(7,7,A); end;
if S=5 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clyellow); setbrushcolor(clyellow); circle(7,7,A); end;
if S=6 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clbrown); setbrushcolor(clbrown); circle(7,7,A); end;
if S=7 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clsilver); setbrushcolor(clsilver); circle(7,7,A); end;
if S=8 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(clpurple); setbrushcolor(clpurple); circle(7,7,A); end;
if S=9 then begin setbrushcolor(clwhite); circle(7,7,12); setpencolor(cllime); setbrushcolor(cllime); circle(7,7,A); end;

if mb=1 then circle(X,Y,A);
setbrushcolor(clwhite);
setpencolor(clwhite);
if mb=2 then circle(X,Y,A);
end;
begin
gotoxy(1,2);
write(‘меняйте цвет стрелками на клавиатуре вверх и вниз. стирать пкм, рисовать лкм.’);
gotoxy(5,1);
write(‘менять размер кисти стрелками влево и вправо.’);

Onkeydown:=keyDown;
OnMouseDown:=MouseDown;
OnMouseMove:=MouseMove
end.

В данном случае для работы с мышью надо обязательно прописать эти строки:

end;
procedure MouseDown(x,y,mb: integer);
begin
MoveTo(x,y);
end;
procedure MouseMove(x,y,mb: integer);
begin

end;
begin
Onkeydown:=keyDown;
OnMouseDown:=MouseDown;
OnMouseMove:=MouseMove
end.

Я думаю вы поняли)) если непонятно спрашивайте в разделе «Ваши вопросы.»

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector