abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 14
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 1
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 5
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 49
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 18
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 777 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Přepis programu z turbo pascalu na céčko

23.5.2011 18:02 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Přepis programu z turbo pascalu na céčko
Přečteno: 955×
Dobrý den, potřeboval bych pomoci s přepisem vlastní aplikace z turbopasclu na cécko. Zatím moc jsem nepochopil práci s poentry. Tak bych potřeboval drobet nakopnout.
program vratnice;
uses crt,graph,printer;
const hlaska ='Stisknete libolny znak ...';
const verze = '1.1.2 (BETA)';
 
type vozidlo = record
spz:string[8];
ridic:string[19];
poznamka:string[7];
end;
 
var
vuz:vozidlo;
f,g:file of vozidlo;
i,vel,gd,gm:integer;
odpoved:char;
zadani:string[19];
soubor:string;
trideno:boolean;
nalezeno:boolean;
 
procedure iniciace;
begin
checkbreak:=false;
clrscr;
window(1,1,20,16);
gd:=1;gm:=1;
assign(f,'vratnice.data');
{$I-}
reset(f); {testuje zda soubor existuje}
{$I+}
if ioresult <> 0 then rewrite(f); { kdyz ne tak ho vytvori}
close(f);
end;
 
procedure pozdrav;
begin
writeln('Vitejte ve vratnici');
writeln('-------------------');
writeln('Verze: ',verze);
writeln('Autor: Jan Brunclik');
writeln('Mobil: 775 384 910');
writeln;
writeln('Pokracujte stiskem libovolne klavesy ...');
repeat until keypressed;
end;
 
procedure cekej;
begin
writeln;
write(hlaska);
repeat until keypressed;
end;
 
procedure trid; {tridi metodou BUBLE SORT}
var
a,b,p:vozidlo;
prohoz:boolean;
begin
reset(f);
vel:=filesize(f);
close(f);
repeat
prohoz:=false;
for i:=0 to (vel-2) do begin
reset(f);
seek(f,i);
read(f,a);
read(f,b);
close(f);
if a.spz>b.spz then begin
p:=b;
b:=a;
a:=p;
prohoz:=true;
end;
reset(f);
seek(f,i);
write(f,a);
write(f,b);
close(f);
end;
until prohoz=false;
trideno:=true;
end;
 
procedure vypis; {vypis obsahu souboru}
var
vuz:vozidlo;
begin
clrscr;
writeln('+----------------+');
writeln('| Pocet vozidel  |');
writeln('+----------------+');
writeln;
reset(f);
writeln('Nalezeno : ',filesize(f),' vozidel.');
close(f);
cekej;
end;
 
procedure pridat; {prida zaznam na konec souboru}
begin
reset(f);
seek(f,filesize(f)); {nastaveni ukazatele na konec souboru}
repeat
clrscr;
writeln('+--------------+');
writeln('| Pridani vozu |');
writeln('+--------------+');
writeln;
with vuz do begin {nacteni dat}
write('SPZ : ');
readln(spz);
write('Ridice : ');
readln(ridic);
write('Poznamku : ');
readln(poznamka);
end;
write(f,vuz); {zapis do souboru}
writeln;
writeln('Vuz s "',vuz.spz,'" byl pridan.');
writeln;
writeln('Dalsi zaznam? A/N');
until upcase(readkey)<>'A';
close(f);
trideno:=false;
end;
 
procedure vyhledat; {vyhleda podle spz vozidla}
var
nvuz:Array[1..9] of vozidlo;
pocet:integer;
 
begin
clrscr;
nalezeno:=false;
writeln('+-------------+');
writeln('| Hledani SPZ |');
writeln('+-------------+');
writeln;
reset(f);
write('SPZ : ');
readln(zadani);
clrscr;
writeln('+------------------+');
writeln('| Vysledek hledani |');
writeln('+------------------+');
writeln;
for i:=1 to filesize(f) do begin
read(f,vuz);
if zadani=copy(vuz.spz,4,4) then
begin
nalezeno:=true;
with vuz do begin
writeln(spz);
writeln(ridic);
writeln(poznamka);
end
end;
end;
if not nalezeno then
writeln('Vuz s "',zadani,'" nenalezen !');
close(f);
writeln;
cekej;
end;
 
procedure odstranit; {odstrani zaznam ze souboru}
begin
clrscr;
nalezeno:=false;
assign(g,'tmp.data'); {pomocny soubor}
writeln('+----------------+');
writeln('| Odstraneni SPZ |');
writeln('+----------------+');
writeln;
write('SPZ : ');
readln(zadani);
writeln;
reset(f);
rewrite(g);
for i:=1 to filesize(f) do begin {do pomocneho souboru se prenesou}
read(f,vuz);                     { vsechny zaznamy, krome toho    }
if ((vuz.spz=zadani)or(length(vuz.spz)>=8)) then       { zadaneho }
begin
writeln('Vuz s "',vuz.spz,'" byl odstranen ze zaznamu.');
nalezeno:=true;
end
else
begin
write(g,vuz);
end;
end;
close(f);
close(g);
rewrite(f);
reset(g);
for i:=1 to filesize(g) do begin
read(g,vuz); {zaznamy se prenesou zpet do hlavniho souboru}
write(f,vuz);
end;
close(f);
close(g);
erase(g); {pomocny soubor se vymaze}
if not nalezeno then
writeln('Vuz s "',zadani,'" nebyl nalezen.');
writeln;
cekej;
end;
 
procedure tisk; {tisk vsech povolenek serazene podle SPZ}
var ft:text;i:integer;
begin
clrscr;
writeln('+--------------+');
writeln('|Tisk povolenek|');
writeln('+--------------+');
writeln;
write('Trideni ... ');trid;write('[ok]');
writeln(lst,'Projekt Vratnice ');
writeln(lst,'Jan Brunclik 2011');
writeln(lst,'737 385 291');
writeln(lst,'');
writeln(lst,'+----------------+');
writeln(lst,'| Tisk povolenek |');
writeln(lst,'+----------------+');
writeln(lst,'');
reset(f);
writeln('Tisknu celkem ',filesize(f),' povolenek');
for i:=1 to filesize(f)-1 do begin
seek(f,i);
read(f,vuz);
with vuz do begin
writeln(lst,spz:8,ridic:20,poznamka:8);
end
end;
close(f);
cekej;
end;
 
procedure import;
var
fe: text;
i : integer;
radek : string;
begin
clrscr;
writeln('+----------------+');
writeln('|Import povolenek|');
writeln('+----------------+');
writeln;
assign(fe,'vratnice.csv');
rewrite(f);reset(fe);
radek:='';
while not eof(fe) do begin
with vuz do begin
readln(fe,radek);
spz:=copy(radek,1,7);
radek:=copy(radek,9,length(radek));
ridic:=copy(radek,1,pos(',',radek)-1);
poznamka:=copy(radek,pos(',',radek)+1,length(radek));
end;
write(f,vuz);
end;
close(f);close(fe);
writeln('Hotovo');cekej;
end;
 
procedure export; {export aut do souboru vratnice.csv}
var
fe : text;
i : integer;
begin
clrscr;
writeln('+----------------+');
writeln('|Export povolenek|');
writeln('+----------------+');
writeln;
assign(fe,'vratnice.csv');
reset(f);rewrite(fe);
for i:=1 to filesize(f)-1 do begin
seek(f,i);
read(f,vuz);
with vuz do begin
writeln(fe,spz,',',ridic,',',poznamka);
end
end;
writeln('Hotovo');
close(fe);close(f);
cekej;
end;
 
{definice jednotlivych funkcich}
procedure hledat_spz;begin;end;
procedure hledat_jmena;begin;end;
procedure hledat_datum;begin;end;
 
procedure evidence_hledat;begin;end;
procedure evidence_pridat;begin;end;
procedure evidence_editovat;begin;end;
procedure evidence_smazat;begin;end;
procedure evidence_opravit;begin;end;
procedure evidence_import;begin;end;
procedure evidence_export;begin;end;
 
procedure kontrola_hledat;begin;end;
procedure kontrola_pridat;begin;end;
procedure kontrola_editovat;begin;end;
procedure kontrola_smazat;begin;end;
procedure kontrola_opravit;begin;end;
procedure kontrola_import;begin;end;
procedure kontrola_export;begin;end;
 
procedure povolenky_hledat;begin;vyhledat;end;
procedure povolenky_pridat;begin;pridat;end;
procedure povolenky_editovat;begin;end;
procedure povolenky_smazat;begin;odstranit;end;
procedure povolenky_opravit;begin;end;
procedure povolenky_import;begin;import;end;
procedure povolenky_export;begin;export;end;
procedure povolenky_vypsat;begin;end;
procedure povolenky_tisk;begin;tisk;end;
 
procedure obedy_hledat;begin;end;
procedure obedy_pridat;begin;end;
procedure obedy_editovat;begin;end;
procedure obedy_smazat;begin;end;
procedure obedy_opravit;begin;end;
procedure obedy_import;begin;end;
procedure obedy_export;begin;end;
 
procedure smeny_hledat;begin;end;
procedure smeny_pridat;begin;end;
procedure smeny_editovat;begin;end;
procedure smeny_smazat;begin;end;
procedure smeny_opravit;begin;end;
procedure smeny_import;begin;end;
procedure smeny_export;begin;end;
 
procedure klice_hledat;begin;end;
procedure klice_pridat;begin;end;
procedure klice_editovat;begin;end;
procedure klice_smazat;begin;end;
procedure klice_opravit;begin;end;
procedure klice_import;begin;end;
procedure klice_export;begin;end;
 
{definice jednotlivych menu}
procedure menu_hledat;begin;end;
procedure menu_evidence;begin;end;
procedure menu_kontrola;begin;end;
 
procedure menu_povolenky;
begin
repeat
clrscr;
writeln('+--------------+');
writeln('|   Povolenky  |');
writeln('+--------------+');
writeln('| 1 - Hledat   |');
writeln('| 2 - Pridat   |');
{writeln('| 3 - Editovat |');}
{writeln('| 4 - Smazat   |');}
{writeln('| 5 - Opravit  |');}
writeln('| 6 - Import   |');
writeln('| 7 - Export   |');
{writeln('| 8 - Vypsat   |');}
writeln('| 9 - Tisk     |');
writeln('+--------------+');
writeln('| 0 - Zpet     |');
writeln('+--------------+');
odpoved:=upcase(readkey);
case odpoved of
'1':povolenky_hledat;
'2':povolenky_pridat;
{'3':povolenky_editovat;}
{'4':povolenky_smazat;}
{'5':povolenky_opravit;}
'6':povolenky_import;
'7':povolenky_export;
{'8':povolenky_vypsat;}
'9':povolenky_tisk;
end;
until odpoved='0';
end;
 
procedure menu_obedy;begin;end;
procedure menu_uzivatele;begin;end;
procedure menu_smena;begin;end;
procedure menu_klice;begin;end;
procedure menu_nastaveni;begin;end;
 
begin {hlavni menu}
iniciace;
trideno:=false;
pozdrav;
repeat
clrscr;
writeln('+--------------+');
writeln('|  Hlavni menu |');
writeln('+--------------+');
{writeln('| 1 - Hledat   |');}
{writeln('| 2 - Evidence |');}
{writeln('| 3 - Kontrola |');}
writeln('| 4 - Povolenky|');
{writeln('| 5 - Obedy    |');}
{writeln('| 6 - Uzivatele|');}
{writeln('| 7 - Smeny    |');}
{writeln('| 8 - Klice    |');}
{writeln('| 9 - Nastaveni|');}
writeln('| . - Pocet    |');
writeln('+--------------+');
writeln('| Q,0 - Konec  |');
writeln('+--------------+');
write('Volba :');
odpoved:=upcase(readkey);
case odpoved of
'1':menu_hledat;
'2':menu_evidence;
'3':menu_kontrola;
'4':menu_povolenky;
'5':menu_obedy;
'6':menu_uzivatele;
'7':menu_smena;
'8':menu_klice;
'Q','0':odpoved:=chr(27);
{'T':trid;}
',','.':vypis;
end;
until odpoved=chr(27);
end.

Řešení dotazu:


Odpovědi

AraxoN avatar 23.5.2011 19:29 AraxoN | skóre: 45 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Ak ovládaš Pascal a chceš sa naučiť C, neexistuje lepšia kniha než Pavel Herout: Učebnice jazyka C - 1. díl.
A fine is a tax for doing wrong. A tax is a fine for doing well.
23.5.2011 23:01 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Ahoj, mám tuto knížku, ale nepochopil jsem jak pracovat s poentry. Zdá se mi to zatím složité.

Cečko potřebuji do své malé linuxové distrubuce, která běží jen v ramdisku. A nechce se mi tam dávat dosbox, abych spoustíl hotovou binárku pro dos.
23.5.2011 21:02 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Tenhle dotaz se sem propadl asi nějakou červí dírou z fidonetu...
In Ada the typical infinite loop would normally be terminated by detonation.
AraxoN avatar 24.5.2011 00:02 AraxoN | skóre: 45 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
:-D
A fine is a tax for doing wrong. A tax is a fine for doing well.
24.5.2011 00:06 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Na co narážíš ?
rADOn avatar 24.5.2011 16:49 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Blast from the past. Tady ve 21. století je Pascal pohřbený stejně hluboko jako fortran a cobol. A zaplaťknuth za to. To co jsi tu vytáhl na světlo není jen kostlivec, ale rovnou zkamenělina. :-)

BTW nakolik je z toho kódu poznat účel a úmysl, dalo by se to přepsat do pár řádků v nějakém skriptovacím jazyce s jednoduchou databází. Ale jestli se chceš naučit C tak držím palce. A když tak koukám na to clrscr;… další věc kterou budeš hledat je knihovna curses.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
24.5.2011 17:46 extremni lama | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
fortran nastesti jeste pohrbeny neni... ;-)
The enemy of my enemy is still my enemy.
24.5.2011 18:30 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Ano vím, že je pascal už dost starý.

Použít raději curses nebo ncurses ?

Přemýšlel jsem že bych použil dialog --menu a další parametry.

Sice to mohu nascriptovat, ale spíše bych to chtěl jako binárku, aby mi do toho BFU uživatel nelezl.
rADOn avatar 25.5.2011 14:01 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Použít raději curses nebo ncurses ?
Curses je název původní knihovny pro unixy, ncurses je GNU implementace. API je stejné a na linuxu afaik nic jiného než ncurses není, takže není co řešit :-)
Přemýšlel jsem že bych použil dialog --menu a další parametry.
Pokud vystačíš s něčím tak primitivním, tak opravdu binárku nepotřebuješ. Parsovat textový výstup z podprocesu se mi zdá víc práce než volat funkce v knihovně, dokonce i s tak hnusným API jako má curses.
Sice to mohu nascriptovat, ale spíše bych to chtěl jako binárku, aby mi do toho BFU uživatel nelezl.
Co myslíš tím "nelezl"? Zní to jako security through obscurity. Když už někdo umí skriptovací jazyk, tak už to u mě není BFU.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
31.10.2011 18:59 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Můžeš prosím uvést příklad ?
24.5.2011 18:48 Matlák
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Blast from the past. Tady ve 21. století je Pascal pohřbený stejně hluboko jako fortran a cobol.

... a přesto je v v pascalu napsána spousta placených drahých aplikací, přesto je v něm napsaný hojně používaný totalcommander, pspad.. a další plno windows aplikací :-)
24.5.2011 20:44 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Na pascalu se mi líbí práce s grafickými knihovnami.

25.5.2011 00:15 l4m4
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Knihovnami? Jakými? Pokud si vzpomnám, tak v Pascalu jsme vždy zapisovali přímo do paměti grafické karty, pokud se mělo něco rozumného vykreslit...
rADOn avatar 25.5.2011 14:05 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Soudě podle kódu má Drak asi na mysli nejzbytečnější knihovnu v historii informatiky: EGAVGA.BGI :-)
"2^24 comments ought to be enough for anyone" -- CmdrTaco
25.5.2011 14:59 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
No když to srovnám s DirectX…, tak nevím :-)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
26.5.2011 16:10 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Existuje něco podného pro cecko ? Myslím, když člověk má pustěný x server.
rADOn avatar 26.5.2011 16:44 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Človíčku ty jsi sem fakt propadl z minulého století :-)

Jestli chceš psát hry, hledáš nejspíš knihovnu SDL. Djgpp taky nebývala špatná a přenositelná na wydle. Jestli si chceš jen nakreslit nějaký graf nebo schéma, toolkity mívají nějaký prvek na který se dá kreslit. O komunikaci s X serverem se stará knihovna xlib nebo xcb ale to už je hodně low-level, nic pro obyčejné smrtelníky :-). OpenGL bych raději pro jednoduchost taky vynechal.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
24.5.2011 19:36 rastos | skóre: 60 | blog: rastos
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Tady ve 21. století je Pascal pohřbený stejně hluboko jako fortran a cobol.
Priateľu, realita je taká, že Pascal (Delphi), Fortran aj Cobol sa majú čulo k svetu. Len je to (hlavne v prípade Fortranu a Cobolu) iná liga.
24.5.2011 22:00 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Moje původní poznámka nenaráží na programovací jazyk, ale programovací techniku. A jen pro úplnost, Turbo Pascal a Delphi jsou dva dost odlišné světy.
In Ada the typical infinite loop would normally be terminated by detonation.
24.5.2011 20:31 JS
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Nekoho ty zkameneliny bavi.. JCL, to je teprve neco. ;-)
25.5.2011 00:21 extremni lama | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Ony to nejsou az takovy zkameneliny jak by se nekomu nezasvecenymu mohlo zdat... ;-)

Treba fortran se pouziva na vypocty a pouzivat se bude, protoze C a spol obsahuje urcity veci (napr. pointery) kvuli kterym je prakticky nemozny napsat rozumny optimalizator...
The enemy of my enemy is still my enemy.
rADOn avatar 25.5.2011 14:24 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
AFAIK optimalizátor C už existuje a jmenuje se kompiler :-) A ukazatele se moc neoptimalizují proto, že už jsou zoptimalizované až na kost. Co chceš optimalizovat na adrese v paměti?

O přetrvávání fortranu jsem slyšel dost, ale spíše jako ukázku zatvrzelého konzervativismu :-) Chápu že přepisovat speciální knihovny na drcení čísel asi nemá moc smysl, ale pochybuju že by dnes někdo ve fortranu začal nový projekt. Dobře, není mrtvý, ale v zaslouženém důchodu.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
25.5.2011 14:48 extremni lama | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Adresu neni potreba optimalizovat. Problem je ze ta adresa muze ukazovat na cokoli, coz je sice super z pohledu programatora ale uz ne z pohledu optimalizatoru. Treba kdyz pres ukazatel nekam zapises tak je problem rozhodnout ktery promenny nacteny v registrech jsou porad platny a ktery se musi nacist znovu...

C/C++ se tohle snazi castecne resit pomoci strict aliasing rule, nebo pomoci klicoveho slova __restrict, ale stejne to neni ono.

Fortran prave proto ze mu chybi nektery bezny vlastnosti dnesnich jazyku, tak se da lip optimalizovat a programy ve fortranu jsou rychlejsi...
The enemy of my enemy is still my enemy.
rADOn avatar 25.5.2011 18:42 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Problem je ze ta adresa muze ukazovat na cokoli, coz je sice super z pohledu programatora ale uz ne z pohledu optimalizatoru. Treba kdyz pres ukazatel nekam zapises tak je problem rozhodnout ktery promenny nacteny v registrech jsou porad platny a ktery se musi nacist znovu...
Pokud vyjdu z odvážného předpokladu, že většina programátorů dnes nepíše ovladače a nepotřebuje se hrabat v IO portech nebo jiné mapované paměti – čemu to vadí? Pokud bych vymyslel architekturu a kompiler který by něco takového umožňoval, byl by tedy mnohem rychlejší než "neoptimalizovaný" kód na takové architektuře. Jenže byl by taky rychlejší než klasické ukazatele, které jsou "optimální" v jiných ohledech? Například zapomenutí registru je na dnešním železe AFAIK menší problém protože máš slušnou šanci trefit interni cache. Ktera je účinná kromě jiného i proto že prosté adresy jsou jednoduche na, ehm, optimalizaci :-)

Nebo na něco zapomínám?
"2^24 comments ought to be enough for anyone" -- CmdrTaco
25.5.2011 22:16 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko

IMHO měl kolega na mysli spíš tohle:

uint64_t data; uint64_t* p8 = &data; uint32_t* p4 = (uint32_t*) &data;

Teď budete chvíli pracovat s p8, chvíli s p4… Překladač neví, jestli když něco zapíšete do *p8, očekáváte, že následně hodnota *p4 bude záviset na tom, co jste tam zapsal. Pro optimalizátor by bylo ideální, kdyby mohl předpokládat, že ne, ale řada programů spoléhá na to, že ano (a musejí se překládat s -fno-strict-aliasing).

25.5.2011 22:19 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Omlouvám se za code místo pre, snad je to srozumitelné i takhle.
rADOn avatar 26.5.2011 11:56 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
To je totéž v bledě modrém. Co zapíšu skrz jeden pointer by mělo uvíznout v cache procesoru a být čitelné skrz druhý. "Optimalizace" možná ušetří instrukci ale ne moc skutečného času protože L1 je rychlá. A naopak přidá indirekci která se na optimalizacích prováděných CPU může projevit negativně.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
26.5.2011 12:09 extremni lama | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Aha, takze precist to z pameti do registru a provest operaci bude nakonec rychlejsi nez primo provest operaci :-)

I pokud by cteni z cache bylo stejne rychly jako provedeni operace, coz se obavam ze neni, tak ve vysledku to bude 2x pomalejsi... ;) A ted si predstav ze neco takovyho mas ve vnitrni smycce.

btw. samozrejme se bavime o aplikacich ktery potrebuji hruby vypocetni vykon, ne o scriptech v bashi kde te par instrukci (milionu instrukci) nemusi zajimat...
The enemy of my enemy is still my enemy.
rADOn avatar 26.5.2011 13:20 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
I pokud by cteni z cache bylo stejne rychly jako provedeni operace, coz se obavam ze neni, tak ve vysledku to bude 2x pomalejsi... ;)
Chyba, nejsi na PDP-10 :-) Čtení z paměti je na x86 mnohem pomalejší než samotná operace, čtení z cache je ve srovnání s tím zanedbatelné. Ergo pokud čekáš hromadu taktů na paměť, instrukce navíc není velký rozdíl. Všimni si že v kernel trafficu tady na abíčku se často zmiňuje že lidi od kernelu se nerozpakují přidat kód jen aby udrželi hardwarové cache pořádně nažhavené.

Pokud by ta operace navíc musela (často) taky čekat na paměť, bylo by to samozřejmě o něčem jiném. Prostě tím že jsou věci jednoušší se ztížila práce kompileru, ale zase ulehčila CPU. A kompiler se taky nefláká, i když nemůže instrukce zahodit, může je řadit tak aby se cache co nejvíc využívaly. Nějaký rozdíl v tom bude, ale rozhodně to nebude 2x pomalejší.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
26.5.2011 12:28 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Jenže při troše štěstí se může stát, že se hodnota *p4 nakonec nikde v paměti neobjeví a celou dobu svého života může být jen v registru (a ten pointer bude jen fiktivní pointer kvůli předávání odkazem do nějaké inline funkce), zatímco *p8 bude regulérní 64-bitová hodnota v paměti a p8 regulérní pointer na ni. Bez strict aliasing rules takovou optimalizaci udělat nemůžete.
23.5.2011 23:06 rastos | skóre: 60 | blog: rastos
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Zatím moc jsem nepochopil práci s poentry. Tak bych potřeboval drobet nakopnout.

Po zbežnom prečítaní:

A kde tam máš nejaké pointre? Tie budeš potrebovať akurát tak pri čítaní zo súboru. Napr namiesto

read(f,vuz);

budeš mať

read(f,&vuz, sizeof(vuz));

Čo ešte iné potrebuješ?
24.5.2011 00:00 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Akorád stále přemýšlím, jak vytvořit a pracovat se strukturou.
24.5.2011 00:01 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Viz řádek 6 až 20.
24.5.2011 00:14 rastos | skóre: 60 | blog: rastos
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
type vozidlo = record
spz:string[8];
ridic:string[19];
poznamka:string[7];
end;
  
var
vuz:vozidlo;
f,g:file of vozidlo;
i,vel,gd,gm:integer;
odpoved:char;
zadani:string[19];
soubor:string;
trideno:boolean;
nalezeno:boolean;
typedef struct
{
  char spz[9];
  char ridic[20];
  poznamka string[8];
} vozidlo;

vozidlo vuz;
int f,g;
int i,vel,gd,gm;
char odpoved;
char zadani[20];
char *soubor; // ??
int trideno;
int nalezeno;
24.5.2011 00:19 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Díky za postrčení.
24.5.2011 20:35 Xerces
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
A co kdybys to nepřepisoval a normálně používal Free Pascal? Ten se dál vyvíjí myslím. A máš snad jedno jakej compiler máš nainstalovanej jestli gcc nebo tc.
24.5.2011 21:45 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Sice by to šlo, ale chci to kompilovat tcc.

Jen si nedokáži představit ten binární přístupu do souboru. Počítám, že si spočítám přes sizeof velikos struktury a vynásobím jí pozici a od toho místa načtu data ?
26.5.2011 16:11 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Zatím jsem se všiml, že gcc vytváří větší binární soubor než tcc.
26.5.2011 16:22 Radovan
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Tak zkus po kompilaci udělat strip zkompilovany_program aby se odstranilo všechno nepotřebné ;-)
26.5.2011 17:10 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Zkusím , to mě nenapadlo.
26.5.2011 17:12 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Drobet pomohlo ,jen o necelych 700B .
27.5.2011 00:10 Radovan
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Tak nic, mě to obvykle skrouhne kolem 4 KB.
27.5.2011 15:03 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Jesli chápu dobře, smaže to jen ladicí informace.
27.5.2011 19:20 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Těch "jen" ladících informací může být i několikanásobek toho, co zbyde. Záleží na tom, co a jak překládáte.
25.5.2011 06:51 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Nevím, co jsou poentry, ani Google nepomohl (did you mean poetry?), ale držím palce při studiu těch... věcí.
25.5.2011 13:47 LINUXDRAK | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Vyjádřil jsem se špatně. Česky řečeno - ukazatele.
25.5.2011 20:56 ext3fs
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko
Pointer nebo-li ukazatel nebo-li smernik je vysvetlen v jakekoli ucebnici jazyka C.

int i; /* je promenna typu int (vyhrazene misto v pameti vetsinou 4 byte pro celociselnou hodnotu)*/

int *i; /*je ukazatel na typ int (ukazuje na adresu (relativni adresa), ktera ukazuje na misto vyhrazene v pameti (absolutni adresa) pro int...)*/

To je podle mne cely zaklad vedy ukazatelu.
Řešení 1× (mich)
pepe_ avatar 31.10.2011 21:51 pepe_ | skóre: 46
Rozbalit Rozbalit vše Re: Přepis programu z turbo pascalu na céčko

Co to prepsat do bashe ?

Bude to snad jen o malo delsi... (ale nevim jak se v nem tiskne) ...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.