Vaihdoin Pascaliin
Sanokaa vaan, että djgpp:n asennus on helppoa, mutta ei ollut mulle. Latasin mitä http://www.delorie.com/djgpp/zip-picker.html käski ja unzippasin koneelle ja tein pathit.
Sen jälkeen olis pitäny kääntyä käskyllä
gcc oma.c -o oma.exe ,
mutta eihän mulla ollut koko gcc:tä tullut bin hakemistoon!?
jokin gxx oli mikä lie.
Pitääkö se gcc ohjelma siis erikseen jotenkin asentaa?
---------
No vaihdoin jo Pascaliin http://www.bloodshed.net/devpascal.html
Eikä kaduta yhtään. Täysin freeware, gui ympäristö editori, käännokset helppoja.
Pienen grafiikkaa tekevän ohjelman sain heti aikaiseksi.
http://koti.welho.com/pkeckman/temp/
Pascal on ohjelmointikieli, DJGPP on C++ -kääntäjä. Eivät mitenkään verrattavissa.
Ja DJGPP on dos-kääntäjä, joka ei kovin olennaisena osana kuulu nykyaikaan. Tuolta bloodshed.net:stä löydät Dev-C++ -kääntäjän, joka on helppo asentaa ja nykyaikainen, kääntää samaa koodia kuin DJGPP.
No joo se oli dev-pascal (joka siis on pascal kääntäjä (free pascal) ja ympäristö), jonka sain asennettua helposti ja jolla oli mukava lähteä ohjelmoimaan.
Olkoon vaan djgpp pelkkä kääntäjä, mutta en saannut sitä asennettua kaiken vaivannöön jälkeen ollenkaan.
Että tietyn tyypinmuunnoksen jälkeen ovat verrattavissa.
---
Mutta siis että Samasta paikkaa näyttää löytyvän hyvä DevC++ kääntäjäkin? Kun olisin heti tiennyt! Ja äkkiä asentamaan, kokeilemaan...
Kommentoinpa ensin tuota ohjelmaa: jos et pikaisesti opettele sisentämään koodiasi selkeästi, niin voit joskus olla melkoisessa pulassa sen kanssa.
Sittenpä huomautetaan vielä, että viestisi on lievästi asiaton, eikä edes oikeastaan kuulu tänne. Jos olisit kysynyt neuvoa DJGPP:n asennukseen tai toisen kääntäjän löytämiseen, se olisi aivan eri asia, mutta haukkumisen saa tehdä muualla.
Koodissa oli jokaista beginniä vastaava end samassa kohdassa. Mitähän siinä sisennyksessä pahiten oli pielessä?
Olihan siellä ekassa viestissä kysymyskin, eli mistähän voisi johtua että DJGPP:n bin/ hakemistosta jäännyt jostain syystä koko gcc pois? Vaikka ei kiinnosta enää. Dev-C++:n asentaminen oli helppoa, mutta...
---
...ongelmat jatkuu. Paketissa ei ole tukea grafiikalle. graphics.h puuttuu.
Noiden ohjeiden: http://www.geocities.com/uniqueness_template/ seuraaminen ja winbgim.h asennus ei onnistu. Onko onnistunut muilta?
---
Eli jos kerran koen ongelmia C++ kielisten ohjelmointiympäristöjen asentamisen kanssa - en ole vielä saannut ensimmäistäkään grafiikkaa toimimaan - niin voin kai haukkua niitä (vaikka ilmaisia ovatkin) ja kehua Pascalia (tai siis sille löytyviä ohjelmointi/kääntäjä paketteja), kunnes saan C-ohjelmointi ympäristöt toimimaan.
Suosittelen grafiikan puolelta jotakin seuraavista:
Nuo eivät ole mitenkään paremmuusjärjestyksessä tai mitään, mutta kaksi ensimmäistä ovat ainakin helpompia kuin jälkimmäiset, ja jälkimmäiset ovatkin jo järeämpää luokkaa (vaikka kai sitä saa SDL:stäkin irti jos jonkinmoista ihmettä).
Se, että sinulla on ongelmia, ei ole mikään syy täyttää koko viestiä turhalla haukkumisella. Apuakin saa varmasti enemmän, jos hoitaa asiansa asiallisesti ilman turhaa raivoamista.
Tuosta DJGPP:stä veikkaisin, että et vain ole osannut ladata oikeita paketteja. Tulikohan ne C- ja C++-kääntäjä-kohdat rastitettua siitä listasta?
Kyllä tuo Pascal-koodisi on silti aika kammottavaa. Eniten siinä risoo tämä pätkä:
if (error <> grOk) Then begin writeln('m800x600x256 is not supported!'); halt(1) (* puolipiste puuttuu... ja miksei näitä ole sisennetty? *) end; for i:=0 to 255 do (* Miksi ihmeessä tämä ei ole samassa tasossa kuin edellinen if-lause? *) SetRGBPalette (i,0,0,5); tw:=getmaxx; th:=getmaxy; c:=0; (* Miksi edelliset sisennykset häviävät tässä kohti? *) x:=0; y:=0; for r:=0 to 255 do begin
Tässäpä vielä tuo sama pätkä hieman siistittynä:
if (error <> grOk) then begin Writeln('m800x600x256 is not supported!'); Halt(1); end; for i := 0 to 255 do SetRGBPalette (i, 0, 0, 5); tW := GetMaxX; tH := GetMaxY; C := 0; X := 0; Y := 0; for R := 0 to 255 do begin
Halt(1) ei tarvitse puolipistettä peräänsä.
Puoli piste _erottaa_ lauseita ei päätä niitä.
Kun ei tarvita, niin ei saa turhaan laittaa puolipistettä.
Olihan siellä tälläinenkin kohta ilman puolipistettä:
i:=i+1
end;
Jos kerran menee kääntäjästä läpi, niin miksi turhaa laittaa puolipisteitä perään? ;(väleihin kyllä aina)
---
Kiitos noista kolmikirjaimisista lyhenteistä. Täytyy joku päivä tutkia vaikka SDL:lää mikä sitten lieneekään.
petterik kirjoitti:
Kiitos noista kolmikirjaimisista lyhenteistä. Täytyy joku päivä tutkia vaikka SDL:lää mikä sitten lieneekään.
SDL:n asentamiseen löytyy opas, ja jonkinlainen perusopassarja on ollut tekeillä jo jonkin aikaa.
Joo no SDL:n asennus oli helppoa Dev-C++:aan. Kiitos, täytyy tutkiskella sitä. Mutta näytti olevan vähän monimutkaisen näköistä pelkästään pisteen tulostaminen screenille. No, aliohjelmia vaan rakentamaan...
Eli taidan edelleen tyytyä Pascaliin kun tarkoituksena olisi vain "piirtää" kuva:
http://www.mrpbody33.com/archives/images/
Tai oikeastaan muutama tuollainen pikkasen eri kiertovaiheessa ja laittaa vaikka gif-animaatioon pyörimään ne. Siis kun toi kuva ei pyöri vaikka näyttää.
if (error <> grOk) then begin Writeln('m800x600x256 is not supported!'); Halt(1); end; {* miten niin tuo for olisi eri tasossa kuin if? ifhän päättyy tuohon endiin. *} for i := 0 to 255 do SetRGBPalette (i, 0, 0, 5);
Tuo on samassa tasossa Putkan kooditagin takia. Katso alkuperäistä koodia.
petterik kirjoitti:
Jos kerran menee kääntäjästä läpi, niin miksi turhaa laittaa puolipisteitä perään? ;(väleihin kyllä aina)
Siksi, että kun myöhemmin lisää loppuun yhden lauseen, ei tarvitse muistaa laittaa sen edellisen loppuun puolipistettä, kun se on siellä valmiina.
Tarvitsee muistaa laittaa, että ei tarvitse muistaa laittaa? :)
Laita niitä niitä puolipisteitä enemmänkin aina aluksi valmiiksi:
program example;
begin
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end.
Ja sitten lisäät lauseet vain tuonne väleihin, niin ei tarvitse laittaa puolipisteitä ;) Eikä ne koskaan unohdu.
---
Käskyn halt(1) perään ei samaan lohkoon lisätä koskaan yhtään käskyä. halt(2).
Tuo on täysin periaatteellinen kysymys hyvistä ohjelmointitottumuksista. Jos et halua tuota "ylimääräistä" puolipistettä laittaa, omapa on menetyksesi. Oseimmat varmaankin laittavat jokaisen lauseen perään puolipisteen niin automaattisesti, että eivät sitä edes ajattele. Itse pitäisi ihan keskittyä, että saisin jätettyä puolipisteen pois. Jos siitä ei ole mitään haittaa, miksi turhaan ajatella asiaa?
Tuo Blazen kommentti on myös erittäin varteenotettava. Etpä taitaisi ihan hetkessä löytää virhettä koodista, jos joskus jäisi puolipiste pois eikä kääntäjä etsisi virhettä puolestasi. Olettaen tietysti, että olet jotenkin onnistunut kirjoittamaan hieman tuota edellistä pitemmän ohjelman, esimerkiksi 3000 riviä koodia.
Sitten, vaikka tuo onkin Pascalissa mahdollista, niin ainakaan VC++ ei päästä läpi tällaista valittamatta puuttuvasta puolipisteestä ennen }-merkkiä:
{scanf("%i", malloc(4))}
Heh, hassua että C++ asentaminen ja varsinkin lisäosien asentaminen tuppaa epäonnistumaan vähän väliä. Jopa kokeneemman neuvoja noudattaen. Testasin itse kerran asentaa jotain pakettia kolmisen kertaa ja aina meni pieleen. Jopa minua opastanut kokeneempi päätti luovuttaa, kun ei auttanut mitkään uudelleen asennuksetkaan.
Jotenka, voimme vain todeta että tuossa stardardissa on möhlitty jotakin ja pahasti. Paljon parempi olisi jos ne tarvittavat tiedostot vain laitettaisiin johonkin kansioon, mistä sitten kääntäjä löytää ne, ilman että mitään tarvitsee oikeastaan asentaa. Vain purat paketin oikeaan kansioon, niin jo löytyy. Luulisi olevan helppoa.. tai.. noh, enhän minä tiedä että ovatko ne jotkut tarkoittaneetkin C++:n niin vaikeaksi että mikään noob ei sillä tee mitään.. Hm.. Täytynee kai varata riittävästi saunan takaa kohta tilaa ja paljon patruunoita :-D
-Grey-
petterik kirjoitti:
Eli taidan edelleen tyytyä Pascaliin kun tarkoituksena olisi vain "piirtää" kuva:
http://www.mrpbody33.com/archives/images/
2003October/weird.jpg
Sain kuin sainkin rautalangasta väännettyä ohjelman http://koti.welho.com/pkeckman/temp/nakoharha2.
Ensin jostain syystä kuva http://koti.welho.com/pkeckman/temp/nakoharha2.
No, lisäsin sitten hieman spiraalimaisuutta http://koti.welho.com/pkeckman/temp/nakoharha.
Eikös olekin vaikuttava illuusio? ;)
nakoharha.gif 30-Oct-2004 00:10 922k
nakoharha2.jpg 30-Oct-2004 00:20 300k
nakoharha2.exe 30-Oct-2004 00:18 198k
nakoharha2.pas 30-Oct-2004 00:18 6k
Metabolix kirjoitti:
Sitten, vaikka tuo onkin Pascalissa mahdollista, niin ainakaan VC++ ei päästä läpi tällaista valittamatta puuttuvasta puolipisteestä ennen }-merkkiä:
{scanf("%i", malloc(4))}
Mitä ihmettä C++ littyy pascal:iin? Kyseessä ovat kaksi täysin eri kieltä, joilla on eri syntaksi. Erityisesti myös puolipisteellä on kielissä erilainen merkitys. Pascal:issa puolipiste on lauseiden _erottelija_ kun taas c/c++/java:ssa se on lauseen _päätösmerkki_. Se, että pascalissa lisää ylimääräisen puolipisteen jonnekin koodia käytännössä tarkoittaa, että ohjelmoija haluaa suorittaa sen jälkeen vielä yhden käskyn ja periaatteessa kääntäjän pitäisi lisätä NOP kyseiseen kohtaan. En ole tarkistanut lisätäänkö tuota oikeasti, mutta niin ohjelmoija tuossa kertoo haluavansa.
On mielestäni aika hassua, että tottumusten takia asian väärin tekevät parjaavat sitä, joka tekee asian ainoana speksien mukaan oikean. Jos ohjelmoija oikeasti ymmärtää mikä merkitys puolipisteellä pascalissa on, ei sen tekeminen oikein ole suinkaan mahdottomuus, ainoastaan tottumuskysymys. Itse asiassa on aika vastuutonta opettaa ja painostaa ihmisiä tekemään asia väärin. Tuo on vähän sama asia kuin tottua kirjoittamaan virheellistä HTML:lla, koska se kumminkin meneen IE:stä läpi ja sitten opettaa muita kirjoittamaan virheellistä HTML:llää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.