С чего начать ?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: С чего начать ?

Сообщение Vadim » 11.10.2008 16:04:37

toxin
http://www.sources.ru/pascal/index.htm - здесь исходники исключительно на Паскале. :)
Сразу предупреждаю, что не все они будут работать, т.к. на сегодняшний день то что там хранится сильно устарело с точки зрения работы с устройствами компьютера и операционной системой. Метод научного тыка Вам поможет разобраться. :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: С чего начать ?

Сообщение toxin » 11.10.2008 17:09:26

Vadim писал(а):Метод научного тыка Вам поможет разобраться.

Это плохо, но бум разбираться ! Пасиба !
toxin
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.10.2008 00:39:59

Re: С чего начать ?

Сообщение B4rr4cuda » 12.10.2008 07:18:00

toxin писал(а):пака

Напомнило: "-Эээ, как там по старо-русски... Пака...пака..
-Какое пака-пака, на колени смерд!" :)

toxin писал(а):Да может у каво есть архивы исходников на паскале, а то пака различать код не сильно получаетсо =(

Вот тебе пару моих старых програмок, все работают и спокойно компилируются с FPC :
Код: Выделить всё
uses crt;
var i,j,k,l:integer;
     x,z:char;
     s:string;
begin randomize; clrscr;
j:=1;
while j<>0 do begin
textcolor(13);
write('Автор- ');textcolor(15);writeln('B4rr4cuda');
textcolor(9);
writeln('Дата создания - 21.6.02');
textcolor(2);
writeln('Действие: Эта прога генерирует 1-255 -значные пароли из случайных символов');
Textcolor(14);
writeln('Для выхода нажмите 0 и два раза клавишу Enter');

textcolor(15);

writeln('Кол-во символов?');
readln(j);
while length(s)<j do begin
k:=random(88)+37;
if (k<>96) and (k<>94) then
s:=s+chr(k);
l:=random(16);
if (l<12) and (l>6) then begin
k:=random(23)+32;
if (k<>37) and (k<>39) then
s:=s+chr(k);
end; end;
while length(s)>j do delete(s,j+1,1);
writeln('Ваш пароль: ',s);
readkey;
clrscr;
s:='';
end;
end.

Код: Выделить всё
uses crt;
var  K,i,j,kl:integer;
     s1,s2,s3:string;

fa : record
  name:string[20];
  d,m,g:byte;
  adress:record
          street:string[30];
          num,kv:word;
         end{of adress};
  Tel:String[20];
  end{of rec};

begin
clrscr;
with fa do begin
write('Введите имя:');
readln(name);
write('Введите День,месяц,год рождения:');
readln(D,m,g);
with adress do begin
write('Введите Улицу:');
readln(Street);
write('Введите №: Дома: ');
readln(Num);
write('Введите Квартиру:');
readln(kv);
end;
write('Введите tel:');
readln(tel);
end;  i:=0;
{CLRSCR;}
repeat   CLRSCR;
wRITE('Введите № поля   ');
Readln(k);
with fa do
case k of
1:writeln('имя:',name);
2:writeln('День,месяц,год рождения:',d,' ',m,' ',g);
3:writeln('Улица:',adress.street);
4:writeln('Дом:',adress.num);
5:writeln('Kv:',adress.kv);
6:writeln('Tel:',tel);
end; i:=i+1;  readkey;
until i>10;
readkey;
end.

Код: Выделить всё
program list;          uses crt;
type tip=Integer;
     Tnod=^nod;
     nod=record info:tip;
                next:Tnod;
         end;
function Dln(var Lis:Tnod):integer;
VAR c:Tnod;  i:integer;
begin  i:=0; c:=Lis;
  while c<>nil do begin c:=c^.next; inc(i) end;
  Dln:=i;
end;   { of Dln }

procedure Sozd(Var Lis: Tnod);
var lit:char;  c,n:Tnod;
begin   new(Lis);  Lis^.next:=nil;
  write(' Информация: ');  read(Lis^.info);  c:=Lis;
  repeat write(' Ещё? (d/n) '); Lit:=ReadKey;
   if lit in ['N','n'] then exit
                               else
     begin new(n);
       write(' Информация: ');  read{ln}(n^.info);
       c^.next:=n;  c:=n; n^.next:=nil;
     end;
  until upcase(lit)='N'; writeln;
end;  {of Sozd}

procedure PrintRec1(c:Tnod);
Begin
   If c^.Next<>nil Then PrintRec1(c^.Next); {Else} write('  ',c^.info)
End;    { of PrintRec1 }

procedure PrintRec2(c:Tnod);
Begin       write('  ',c^.info);
   If c^.Next<>nil Then PrintRec2(c^.Next); {Else}
End;    { of PrintRec1 }

procedure Print(var Lis:Tnod; nv: Word);
Const  Tx: Array [1..2] Of String = ('прямой вывод','обратный вывод');
VAR c:Tnod; L: Integer;
begin L:=Dln(Lis); write(Tx[nv],' Элементы: ');   c:=Lis;
  If L<=0 Then Writeln('отсутствуют!!!') Else
  If nv=1 then PrintRec2(c) else PrintRec1(c);
  writeln(#13#10' Длина списка: ',L);
end;  { of Print }

procedure insrt(Var Lis:Tnod);
var Poz,i:integer;    temp:Tnod;  el:tip;
VAR c,n:Tnod;
begin write('элемент: ');readln(el);  write(' позиция: '); readln(Poz);
  if poz=1 then
     begin     new(n);    n^.info:=el;
      n^.next:=Lis; Lis:=n; writeln;
     end
           else
     begin  i:=2;  c:=Lis;
      while i<>poz do
           begin  c:=c^.next; inc(i) end;
      new(n); n^.info:=el; n^.next:=c^.next; c^.next:=n;
     end;            writeln;
end;        {of insrt  1/03/2000}

procedure dlt(Ps:integer; var P:Tnod);
var i,L: integer;   S,C,R: Tnod;
begin write(' позиция: '); readln(Ps);
if Ps=1 then {Del1(P)}
   begin
     NEW(R); R:=P;  P:=P^.NEXT; R^.Next:=Nil; DISPOSE(R)
   end   else
   begin  i:=2;  C:=P; L:=Dln(C);
     while (i<>Ps) and (i<L) do begin  C:=C^.next; inc(i); end;
     {If i<L Then} begin S:=C^.next; C^.next:=S^.next; DISPOSE(S) end;
   end;
end;  { of dlt }

procedure init(var Lis: Tnod; Elem: Tip);
VAR c,n:Tnod;
begin
  n^.info:=elem; n^.next:=c^.next; c^.next:=n
end;  { of Init }

VAR Lis:Tnod;   el,elem:tip;   f,l,Ps:integer;
BEGIN  clrscr;  (* init(Lis,-1{ELEM}); *)
  repeat   writeln;
    writeln(' 1:ПечатьПр  2:Создать  3:ПечатьОб  4:Вставка  5:Удалить  0:Выйти');
    write('  Выбери - от 0 до 5: '); readln(f);
   case f of
   1: Print(Lis,1); 2: Sozd(Lis); 3: Print(Lis,2);  4: insrt(Lis); 5: dlt(Ps,Lis);
   end;
  until f=0;
END.     {1/03/2000}   

Код: Выделить всё
Program minimum;
const n=5;
type vector=array [1..n] of real;

function min(a:vector;i:integer;x:integer;var minim:real):real;
var ix:integer;
begin
ix:=i;

if (ix=1) and (ix<>x) then ix:=x;
if i>n then exit;

if a[ix]<minim then
begin
  minim:=a[ix];
  min:=min(a,ix+1,x,minim);
end else  min:=min(a,ix+1,x,minim);

min:=minim;
end;

var a:vector;
  minim:real;
  i,x:integer;
begin
for i:=1 to n do
begin
  writeln('Введите элемент вектора N:',i);
  readln(a[i]);
end;

writeln('Введите элемент х с которого начинать проверку:');
readln(x);

writeln('minimum=',min(a,1,x,a[x]):5:2);
end.                         


Код: Выделить всё
Program TwoToOne;
var textfile1,textfile2,textfile3:text;
    s,path1,path2:string;
begin
writeln('Введите путь к первому файлу:');
readln(path1);

writeln('Введите путь ко второму файлу:');
readln(path2);

assign(textfile1,path1);
assign(textfile2,path2);
assign(textfile3,'new.txt');
reset(textfile1);
reset(textfile2);
rewrite(textfile3);

while not eof(textfile1) do
begin
readln(textfile1,s);
writeln(textfile3,s);
end;

while not eof(textfile2) do
begin
readln(textfile2,s);
writeln(textfile3,s);
end;



close(textfile1);
close(textfile2);
close(textfile3);
end.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: С чего начать ?

Сообщение Deepthroat » 15.10.2008 00:05:40

По-моему, после этой темы у человека в голове каша. Хотел дать ссылку на википедию, но там такая же каша. А потом удивляемся, почему люди не понимают, что такое паскаль...

Использовать TurboPascal для обучения я бы сейчас не советовал. Это примерно то же самое, как сейчас учить PHP 3. Скачайте FreePascal, без лазаруса, и используйте командную строку для компиляции программ, а Notepad++ для написания. Ты говорил, что знаешь PHP, так вот такой подход разработки (а именно, все ручками) напоминает разработку PHP-приложений, только программы надо компилировать.

Документация от FreePascal. Полное описание языка, библиотеки и компилятора. Но это сухой справочник, не учебник. Есть еще DRKB 30-мегабайтный, очень рекомендую. Ну и пара-тройка учебников по Delphi, только чтобы язык был описан, а не процесс рисования окошек.

Теперь свои пять копеек о паскале и делфи. Pascal - это язык программирования, разработанный Виртом еще давным-давно. Object Pascal - это расширенная версия языка Pascal, поддерживающая ООП. Delphi - это название диалекта языка Object Pascal, по сути, тот же Object Pascal, но с парой-тройкой не всегда очевидных прибамбасов. Также, Delphi - это среда разработки ПО, включающая компилятор. FreePascal - это свободный компилятор еще одного диалекта языка Object Pascal. Так или иначе, и Delphi, и реализация языка от FreePascal - это, по сути, Object Pascal, и даже под Pascal'ем очень часто имеют ввиду Object Pascal. Собственно, потому и нет разделения на Pascal и Delphi - часто имеется ввиду один и тот же язык, а если и нет, то указывают, каким компилятором программа компилируется.
Аватара пользователя
Deepthroat
постоялец
 
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven

Re: С чего начать ?

Сообщение bw » 15.10.2008 10:43:30

> Ты говорил, что знаешь PHP, так вот такой подход разработки (а именно, все ручками) напоминает разработку PHP-приложений, только программы надо компилировать.
Автор темы также упомянал Java. Так что процесс сборки программ больше напоминает Java'вский. Разве что выходом будут не паветы .class, требующие интерпретатора, а исполняемые файлы, не требующие ничего кроме понимающей их операционной системы.

> Нужен компилятор !?
> Вооружился Turbo Pascal 7.0

> Нужна литература !?
> Нашел краткое и понятное изложение языка Pascal (в процессе чтения)

> Исходники
> Ну естественный разбор исходников на pascal'e

Это вполне нормальный план. Если у тебя полный Turbo Pascal, то с ним идет приличный объем примеров, хороший способ начать изучать Pascal и приучиться к традиционному оформлению кода. Хотя Borland Pascal, максимум, сможет собирать код под третью винду, 16 бит. Сейчас мало где найдешь применения таким приложениям.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: С чего начать ?

Сообщение VirtUX » 20.08.2010 16:01:49

Существует-ли перевод на русский этого справочника?
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: MailRu[bot] и гости: 23

Рейтинг@Mail.ru