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.
Я думаю вы поняли)) если непонятно спрашивайте в разделе «Ваши вопросы.»