Пятница, 27 Января 2023, 07:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Как за 2 месяца стать АССОМ в Pacla'e???
Как за 2 месяца стать АССОМ в Pacla'e???
vicu2010Дата: Вторник, 28 Февраля 2012, 20:49 | Сообщение # 1
Сейчас нет на сайте
Короче я не особый мастер в pascal'e. Изучаю его около недели, но уже выиграл областную олимпиаду... Но вот взглянул на Республиканскую(по стране) и ужаснулся... Вот сколько надо учится чтобы сделать такую программу?

Program Multimicroprocesor;
var r12, r13, r23,
d12, d13, d23,
a, b, c, Lmin : longint;
procedure Reading;
var Intrare : text;
begin
assign(Intrare, 'MULTI.IN');
reset(Intrare);
readln(Intrare, r12, r13, r23);
readln(Intrare, d12, d13, d23);
close(Intrare);
end;
procedure Writing;
var Iesire : text;
begin
assign(Iesire, 'MULTI.OUT');
rewrite(Iesire);
writeln(Iesire, a, ' ', b, ' ', c);
writeln(Iesire, Lmin);
close(Iesire);
end;
procedure Searching;
var L : longint;
begin
Lmin:=1000000000;
L:=r12*d12+r13*d13+r23*d23;
if L<=Lmin then begin a:=1; b:=2; c:=3; Lmin:=L; end;
L:=r12*d13+r13*d12+r23*d23;
if L<=Lmin then begin a:=1; b:=3; c:=2; Lmin:=L; end;
L:=r12*d12+r13*d23+r23*d13; 8
if L<=Lmin then begin a:=2; b:=1; c:=3; Lmin:=L; end;
L:=r12*d23+r13*d12+r23*d13;
if L<=Lmin then begin a:=2; b:=3; c:=1; Lmin:=L; end;
L:=r12*d13+r13*d23+r23*d12;
if L<=Lmin then begin a:=3; b:=1; c:=2; Lmin:=L; end;
L:=r12*d23+r13*d13+r23*d12;
if L<=Lmin then begin a:=3; b:=2; c:=1; Lmin:=L; end;
end;
begin
Reading;
Writing;
Searching;
end.

Мои знания не заходят дальше простых циклов типа repeat until и работы с if then.



Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
LunarPixelДата: Вторник, 28 Февраля 2012, 20:53 | Сообщение # 2
старожил
Сейчас нет на сайте
Quote (vicu2010)
Вот сколько надо учится чтобы сделать такую программу?

Да в приведенной тобой программе нет абсолютна ничего особенного... ещё недельку поучить и вполне можно такое написать. smile


МорриартеДата: Вторник, 28 Февраля 2012, 21:10 | Сообщение # 3
LINUX ФАНАТ
Сейчас нет на сайте
Главное это развитая логика чтобы придумать структуру, а написать то можно.
anton-garДата: Вторник, 28 Февраля 2012, 21:11 | Сообщение # 4
WEBmaster
Сейчас нет на сайте
Quote (LunarPixel)
Да в приведенной тобой программе нет абсолютна ничего особенного... ещё недельку поучить и вполне можно такое написать.


Согласен. А у нас в школьной олимпиаде задания были посложней *) happy


vicu2010Дата: Вторник, 28 Февраля 2012, 21:16 | Сообщение # 5
Сейчас нет на сайте
anton-gar, бывает) Так-вот проблема в том что задания с олимпиад и те что в учебниках разнятся(( Мой учебник кончается одномерными массивами, а на олимпиаде есть и двумерные(( Где можно найти уроки хорошие?


Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
LunarPixelДата: Вторник, 28 Февраля 2012, 21:19 | Сообщение # 6
старожил
Сейчас нет на сайте
vicu2010, в интернете. На самом деле на данном уровне подойдет практически любая литература. Можно просто вбить в гугл "Массивы паскаль" и первые три ссылки изучить. Так же изучи процедуры и функции. Работу со строками и внешними файлами. smile

vicu2010Дата: Вторник, 28 Февраля 2012, 21:21 | Сообщение # 7
Сейчас нет на сайте
LunarPixel, пасиб, буду зубрить массивы пока-что))


Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
anton-garДата: Вторник, 28 Февраля 2012, 21:27 | Сообщение # 8
WEBmaster
Сейчас нет на сайте
Сейчас поищу у себя в полках - где-то чудная книжечка была.

Добавлено (28.02.2012, 21:26)
---------------------------------------------
Вот эта неплохая. - сам по ней готовился.

Добавлено (28.02.2012, 21:27)
---------------------------------------------
Тык


vicu2010Дата: Вторник, 06 Марта 2012, 16:43 | Сообщение # 9
Сейчас нет на сайте
Спасиб)

Добавлено (06.03.2012, 16:43)
---------------------------------------------
Я нашёл два учебника по паскалю, однако не в них, не в гугле я не нашёл как работать с файлами. Вот например у меня есть файл input.txt с вводными данными и output.txt с выходными. Как сделать чтобы паскаль считывал слово с входного, потом выводил её в выходную? И где по всему этому инфу найти(чтобы потом уже выводить решение формулы)??



Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
anton-garДата: Вторник, 06 Марта 2012, 16:52 | Сообщение # 10
WEBmaster
Сейчас нет на сайте
Клацк
А на какой версии Паскаля работаешь?


vicu2010Дата: Вторник, 06 Марта 2012, 16:56 | Сообщение # 11
Сейчас нет на сайте
turbo pascal 7.1. Спасибо, ща гляну)


Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
Lord_FДата: Вторник, 06 Марта 2012, 17:00 | Сообщение # 12
Любопытный Игродел
Сейчас нет на сайте
Юзай FPC (Free Pascal)
По-моему на всех олимпиадах при тестировании используется именно он.


[quote]Ничто не истина, всё дозволено[/quote]
vicu2010Дата: Вторник, 06 Марта 2012, 18:58 | Сообщение # 13
Сейчас нет на сайте
Quote (Lord_F)
Юзай FPC (Free Pascal)
По-моему на всех олимпиадах при тестировании используется именно он.

Он не так удобен как турбо. В турбо если допустил ошибку то курсор смешяется в место ошибки, в турбо цвета приятнее...

Добавлено (06.03.2012, 18:58)
---------------------------------------------
Прикольно) Я уже научился писать в txt файл cool Всё работает, но появляется такая ошибка: Ошибка выполнения 103 по адресу 0000:0038. В следующей программе:

Code
Program TF1;
var
     filin: text;
begin
  assign(filin, 'output.txt');
  rewrite(filin);
  write(filin,'Ahahah');
  close(filin);
end.

В файл всё нормально записывается.



Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
TimKruzДата: Вторник, 06 Марта 2012, 19:15 | Сообщение # 14
старожил
Сейчас нет на сайте
Quote (vicu2010)
Я нашёл два учебника по паскалю, однако не в них, не в гугле я не нашёл как работать с файлами. Вот например у меня есть файл input.txt с вводными данными и output.txt с выходными. Как сделать чтобы паскаль считывал слово с входного, потом выводил её в выходную? И где по всему этому инфу найти(чтобы потом уже выводить решение формулы)??

Разве так сложно написать "pascal файлы" или "pascal работа с файлами"? Там ведь почти все ссылки - статьи на эту тему. wacko
Вот хорошая книга, (давно как-то купил за полцены) в ней всё подробно описано на уровне, в принципе достаточном для участия в олимпиадах, и даже чуть больше. Правда, там не описано использование объектов и ассемблерных вставок в TP...
Рекомендую читать встроенную справку TurboPascal. Там много полезного можно почерпнуть, если хоть немного разбираться в техническом английском. Можешь поставить курсор на слово в редакторе кода, нажать ctrl+f1 и получить справку об этом элементе - удобно, когда забываешь, как что-то правильно использовать.
Quote (Lord_F)
Юзай FPC (Free Pascal)По-моему на всех олимпиадах при тестировании используется именно он.

Обычно на олимпиадах предоставляют вообще все популярные среды. На некоторых предлагают FPC, на некоторых - TP, но разницы нет, потому что на олимпиадах особенности языков практически не проявляются.
Quote (vicu2010)
Но вот взглянул на Республиканскую(по стране) и ужаснулся...

А чего ужасаться? Отформатировать код, чтобы было приятно читать, и всё понятно станет. Там используются только понятия работы процедур-функций, файлов и конструкций если. А уж накрутить код несложно, если представлять в уме, как он должен выглядеть, видеть примерный план программы.
Quote (vicu2010)
Вот сколько надо учится чтобы сделать такую программу?

Кому-то часа два максимум, кому-то - месяц минимум. Зависит от обучаемости пациента. smile Если иметь хорошую книгу или хорошего учителя и, главное, желание - можно всё быстро изучить и понять... wink

Quote (vicu2010)
в турбо цвета приятнее...

Веский аргумент... biggrin У TurboPascal в настройках вся раскраска настраивается...

***
Quote (vicu2010)
Ошибка выполнения 103 по адресу 0000:0038. В следующей программе:

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




Сообщение отредактировал TimKruz - Вторник, 06 Марта 2012, 19:20
vicu2010Дата: Вторник, 06 Марта 2012, 19:24 | Сообщение # 15
Сейчас нет на сайте
TimKruz, ожидал ответа от тебя ещё когда тему создавал))))

Quote (TimKruz)
А чего ужасаться? Отформатировать код, чтобы было приятно читать, и всё понятно станет. Там используются только понятия работы процедур-функций, файлов и конструкций если. А уж накрутить код несложно, если представлять в уме, как он должен выглядеть, видеть примерный план программы.

Я привёл самую простую прогу с олимаиды)) А с тех пор когда писал тему она стала мне намного понятней))

Поможешь с ошибками 103 и 104 при использовании вывода?
И кстате, известно что char при вводе берёт только первую букву, а как сделать чтобы копировать в ОДНУ переменную всё слово?

Добавлено (06.03.2012, 19:24)
---------------------------------------------

Quote (TimKruz)

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

Нет, вроде ничем не заблокиравано, тем более что ошибка выскакивает, но программа полюбому выполняется.



Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic


Сообщение отредактировал vicu2010 - Вторник, 06 Марта 2012, 19:23
anton-garДата: Вторник, 06 Марта 2012, 19:35 | Сообщение # 16
WEBmaster
Сейчас нет на сайте
Quote (vicu2010)
И кстате, известно что char при вводе берёт только первую букву, а как сделать чтобы копировать в ОДНУ переменную всё слово?


string.


TimKruzДата: Вторник, 06 Марта 2012, 19:40 | Сообщение # 17
старожил
Сейчас нет на сайте
Можешь попробовать так:
Code
Program TF1;
var filin:text; error:byte;
begin
   assign(filin, 'output.txt');
   {$i-} {отключает слежение системы за ошибками ввода-вывода}
   rewrite(filin);
   error:=ioresult; //ioresult возвращает код последней ошибки и сбрасывается
   if error<>0 then
   begin
     writeln('Ошибка открытия файла! Код ошибки: ',error);
     halt(error);
   end;
   write(filin,'Ahahah');
   close(filin);
end.

Ошибки это не исправит, но будет завершать программу, если возникает ошибка. smile
Quote (vicu2010)
И кстате, известно что char при вводе берёт только первую букву, а как сделать чтобы копировать в ОДНУ переменную всё слово?

Для текстовых файлов числовые переменные считывают число между пробелами (если корректно записано), символьная переменная считывает один символ, строковая переменная считывает одну строку либо столько символов, сколько может в себя вместить (если ограничена, не более 255 символов). Стандартных функций чтения "слов" нет. Можешь сделать свою процедуру, типа такой:
Code
procedure readword(var f:text; var str:string);
var ch:char;
begin
   str:='';
   read(f,ch);
   while (ch<>#32) and not eof(f) do
   begin
     str:=str+ch;
     read(f,ch);
   end;
end;

И работаешь с ней также, как с read, то есть передаёшь указатель на файл и строку, в которую нужно записать "слово" (буквы между пробелами).


vicu2010Дата: Вторник, 06 Марта 2012, 19:44 | Сообщение # 18
Сейчас нет на сайте
TimKruz, anton-gar, спасибо) Попробую сначала с стрингом, чем свой тип придумывать.


Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Как за 2 месяца стать АССОМ в Pacla'e???
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2023 Рейтинг