placal: jestli ti vyučující nebyli schopni říct proč se někdy píše středník a někdy ne, není to chyba jazyka, ale těch vyučujících. A jestli se booleovské výrazy vyhodnocují zkráceně nebo ne se nastaví ve vlastnostech projektu (pokud to pak někdo změní direktivou překladače kdesi v kódu, to už je jeho boj). Blbě indentovat ti dovolí prakticky každý jazyk. A pointerům v seznamech apod. se dnes klidně vyhneš, např. přes generické listy (ať už listy objektů, nebo jen paměťových struktur).
Bavíme se stále o Pascalu nebo o Object Pascalu (Delphi)? Jinak s těmi Booleovskými výrazy to býval problém, protože to skutečně bylo rozhodnuto při překladu projektu a nebylo to nikde součástí zdrojového kódu. Jinak podobnou kravinu měl i MS Basic (Quick, Q...) s volbou, jestli pole začínají od 0 nebo 1, good luck při používání cizích funkcí, které počítaly s jedním nebo s druhým.
Podle mého názoru, já bych klidně začínal s něčím na první pohled sice jednodušším, ale ve skutečnosti mocnějším - Lua nebo Python. Ale to je samozřejmě věčný boj, protože v současně nastaveném školském systému to samozřejmě na SŠ učit s velkou pravděpodobností nepůjdu (důvodů je víc a asi bych to nerad rozebíral zrovna tady).
Tak já myslel, že to tady je o dnešním Pascalu (Delphi nebo alespoň Lazarus)... používat původní Pascal by byla nekrofilie, ten už je mrtvý snad desítky let.
S těmi booleovskými výrazy mě to buď nějak minulo, nebo už patřím do generace, která tohle nezažila. Dnes to prostě buď neřeším a vím, že překladač defaultně používá zkrácené vyhodnocování, nebo si to nastavím v projektu, nebo si to pořeším v kódu direktivou. Už dávno to prostě není problém.
Jinak když jsi nakousl ty pole - to je zrovna věc, co se mi na Pascalu líbí - můžu si je indexovat v jakém rozsahu chci, třeba i přes výčtový typ. Tohle moc jazyků nemá.
Nevím tedy, jak to mají Pascalisti, ale u jiných jazyků, když se řekne jméno, tak se tím většinou myslí implementace podle standardu toho jazyka. U Pascalu existují AFAIK dvě specifikace - ISO 7185, ISO 10206. Object Pascal je Object Pascal, tuším normu ani nemá (takže až to někdo v Delphi nebo FPC změní, tak se moc nedivte, ostatně Delphi ani neodpovídá ISO 7185 -
https://en.wikipedia.org/wiki/Comparison_of_Pascal_and_Delphi#Differences_between_Standard_Pascal_and_Delphi).
Analogicky když mluvíme o Céčku, myslí se tím skutečně C a ne C++, dtto bych čekal u Pascalu, ať do toho nevnášíte ještě větší zmatky, než už jsou (a že je jich ten současný jazyk plný - minimálně čtyři typy stringů, dva objektové systémy (no jeden asi už umřel s Turbo Pascalem).
Jinak k těm pravdivostním výrazům - norma Extended Pascalu mluví jasně:
Short Circuit Boolean Evaluation . The operators and_then and or_else are logically
equivalent to and and or , except that evaluation order is de ned as left-to-right, and the right
operand is not evaluated if the value of the expression can be determined solely from the value
of the left operand.
Takže pokud tvůj překladač pro and a or používá chování vyhrazené operátorům and_then a or_else, je to jistě super, ale není to korektní a ten překladač porušuje normu (asi to ve světě Pascalu nevadí, u jiných jazyků by ale lidi ten překladač nepoužívali).
S poli souhlas - pěkné a mnohdy velmi praktické chování.