Паскал (програмски језик)

Из Википедије, слободне енциклопедије
ПАСКАЛ
Оригинални назив Pascal
Изговара се Паскал
Модел
Појавио се 1970.
Аутор(и) Никлаус Вирт
Дизајнер(и) Никлаус Вирт
Типови променљивих статички и динамички
Утицаји АЛГОЛ 60,
Утицао на
Оперативни системи Јуникс (Линукс, СунОС, ХП-УКС, АИКС) и Мајкрософт/IBM (ДОС са ЕМКС , ОС / 2, Виндоус)

Паскал (енгл. Pascal) је императивни програмски језик, који је 1970. године развио Никлаус Вирт, као језик погодан за учење структурног програмирања. Именован је по чувеном француском математичару и филозофу Блезу Паскалу, творцу прве рачунске машине која је имала могућност извођења операције сабирања. Стандардизован је 1983. године од стране Међународног комитета за стандардизацију.

Паскал се данас користи као почетни програм за обуку будућих програмера, наручито оних који намеравају да раде на програмском језику C.

снимак екрана

Паскал је развијен по образцу језика АЛГОЛ 60.Вирт је већ развио неколико побољшања овог језика у оквиру АЛГОЛ X предлога, али они нису прихваћени и Паскал је развијен одвојено и објављен 1970. године.Објектни Паскал, грана објектно оријентисаног дела Паскала, дизајниран за објектно оријентисано програмирање је развијен 1985. године. Ово је користио Епл Компјутер и Борланд крајем осамдесетих година, а касније се развио на Делфи на платформи Виндоус.Проширења Паскал концепта довеле су до програмских језика сличним Паскалу Модула-2 и Оберон.

Програмски језик Паскал је непревазиђен на плану обуке у програмирању, тамо где је основни циљ упознавање са програмирањем на логичан и систематичан начин.[1] Крајем 60-их година швајцарски научник Никлаус Вирт имао је за циљ да направи језик у коме би се могла ефикасно реализовати обука програмера. Међутим, данас Паскал има много ширу примену. Он се користи не само за писање програма у разним областима примене рачунара већ и као језик за системско и визуелно програмирање. Визуелни Паскал, реализован пакетом Делфи, данас је један од најпопуларнијих језика за пројектовање Виндоус апликација иако иза њега не стоји моћни Мајкрософт.

То је једноставан језик који се може брзо научити, и у њему се могу писати алгоритамски врло сложени програми. Он на известан начин утиче на начин размишљања програмера, тако да лако усваја основне принципе програмирања.

Блез Паскал

Историја[уреди]

Рани развој[уреди]

Програмски језик Паскал развио је, између 1968 и 1970., швајцарски научник Никлаус Вирт, на темељима тад популарног језика АЛГОЛ-а, ради превазилажења потешкоћа које су се јављале програмирањем у вишим програмским језицима секвенцијалног карактера (ФОРТРАН, КОБОЛ, АЛГОЛ и БЕЈЗИК), као и због потреба увођења стандардног програмског језика за учење у школама и факултетима. Вирт је програмском језику дао име Паскал у част француског филозофа и математичара Блеза Паскала, који је 1641. изумео механички калкулатор. Прва спецификација објављена је 1971, следећа ревизија направљена је 1973. Већ од 1972. Паскал се почиње изучавати на факултетима као језик прикладан за увод у програмирање. Првобитна стандардизација језика догодила се 1983. (ИСО 7185:1983).

Већина историје дизајна рачунарског језика током 1960.тих година траје своју историју према језику АЛГОЛ 60. АЛГОЛ је развијен током педесетих година прошлог века са експлицитним циљем да би могли јасно описати алгоритме. То је укључивало низ функција за структурно програмирање које остаје уобичајено на језицима до данас.

Убрзо након увода, 1962. године Вирт је почео радити на дисертацији са Хелмут Вебером на програмском језику Еулер. Еулер је заснован на синтакси АЛГОЛ-а и многим концептима, али није био дериват. Његов примарни циљ био је додавање динамичких листи и типова, омогућавајући да се она користи у улогама сличним Лисп-у. Језик је објављен 1965.

До тог времена идентификован је велики број проблема у АЛГОЛ-у, посебно недостатак стандардизованог система низа. Група која је задужена за одржавање језика почела је процес АЛГОЛ X да идентификује побољшања. Вирт и Тони Хор су поднели конзервативни скуп модификација за додавање жица и чишћење неке синтаксе. Они су сматрали сувише ситним да би били корисни као нови стандард АЛГОЛ, тако да је Вирт написао компајлер за језик, који је постао познат као АЛГОЛ В.

АЛГОЛ X напори би наставили да бирају драматично сложенији језик, АЛГОЛ 68. Сложеност овог језика довела је до значајних потешкоћа у производњи компилатора високих перформанси и није се широко примјењивала у индустрији. Ово је оставило отвор за нове језике.

Паскал[уреди]

Паскал уводи парадигму структурног и процедуралног програмирања, што значи да се програмски код разлаже на самосталне структуре - податке и подпрограме, који се не извршавају у истом редоследу у ком су наведени, као што је случај код наредби секвенцијалних програмских језика, него се по потреби позивају и изводе. Уводјењем подпрограма избегава се нужност да програм секвенцијално, то јест редоследно, изврши све блокове кода док не додје до наредбе која означава крај програма (ГоТо) до поједине лабеле у коду, што може довести до великих потешкоћа при писању или ревидирању озбиљнијих програма, јер је коришћење ГоТо функције доводило до непрегледног кода с једне стране (феномен такозваног Шпагети-кода), с друге стране захтевало учитавање читавог програма у меморију, уместо позивања појединачних процедура по потреби. За тадашње доба врло скупих меморија и почетка убрзаног развоја софтвера у односу на хардвер, изналажење решења као што је Паскал имало је због наведених разлога велики значај.

У исто време (1972)Американац Денис Ричи развија програмски језик Ц заснован на једнаким процедуралним и структурним поставкама као и Паскал, с већим могућностима већ у стандардној изведби за манипулисање врстама података, а самим тим и већим могућностима за смањење заузећа меморије. Док је програмски језик Ц послужио Кену Томсону и Денису Ричију за програмирање УНИX-а седамдесетих година, УЦСД верзија Паскала коришћена је на Универзитету у Калифорнији, у Сан Дијегу за писање п-Сyстема. п-Сyстем се могао инсталирати на велики број тадашњих компјутера захваљујући чињеници да је требало само програмирати модуле који су преносили и компајловали п-сyстем на дати компјутер. [2]

Седамдесетих година Паскал стиче велику популарност те се у великој мери користи за апликацијско и системско програмирање. Оперативни системи за Епл (Лиса и Макинтош) с краја седамдесетих и почетка осамдесетих били су развијани у Паскалу, због чега писање програма у Ц-у за наведене системе није имало смисла јер су програми морали бити писани тако да раде с типовима података које подржава стандардни Паскал као и сам АПИ, у Паскалу написан Епл оперативни систем. До 1980-их Паскал је изучаван на већини факултета информатичког усмерења у свету.Варијанте Паскала су такође често коришћене за све од истраживачких пројеката до ПЦ игара и уграђених система. Постоје нови компилатори Паскала који се широко користе.

Објектни Паскал[уреди]

Током рада на Лиси, Лери Теслер је почео да се слаже са Вирт-овом идејом o додавању објектно оријентисаних проширења на језик. Ово је у почетку довело до Класкала, уведеног 1983. године. Како је програм Лиса избледио и заменио Мек, направљена је још једна верзија позната као Објектни Паскал. Ово је представљено на Макинтош-у 1985. године, у оквиру МекЕп апликативног оквира, и постао је основни развојни језик компаније Епл почетком деведесетих.

Проширења објеката Паскал касније су додате Турбо Пасkал-у, а током година су постали Делфи систем за Виндоус. Делфи се и даље користи за развијање Виндовс апликација, али такође има могућност да компајлира исти код код Мек, иОС и Андроид. Друга различита платформа под називом Бесплатан Паскал, са Лазарус ИДЕ-ом, популарна је код корисника Линукса, пошто такодје нуди пиши једном, компајлирај било где развој. КодТифон је Лазарус дистрибуција са више унапред инсталираних пакета и унакрсних компајлера.

Борландов Паскал[уреди]

1983. појављује се Турбо Паскал фирме Борланд, прво интегрисано развојно окружење (ИДЕ) за суставе ЦП/М и ДОС. Турбо Паскал обједињује све функције циклуса развоја софтвера у један целовит програм (писање кода, компајловање, линковање, дебуговање), а истовремени приступ свакој од функција без потребе покретања засебних програма и гашења предходно покренутих је допринео још већој популаризацији Паскала у софтверској индустрији, јер су програмери до тад морали покретати засебно неколико различитих програма (едитор, компајлер, линкер, дебуггер) да би довршили коначан програм. ИДЕ Турбо Паскал је масовно коришћен, како због могућности велике уштеде времена при развоју софтвера, тако и због своје ниске цене и лиценце која је омогућивала куповину само једне копије производа без обзира на коликом броју компјутера ће софтвер бити коришћен. Осим Турбо Паскала, Борланд је изпоручивао и скупљу верзију ИДЕ-а под називом Борланд Паскал која се од Турбо Паскала незнатно разликовала по могућностима и имала укључен изворни код стандардних модула. Временом се Турбо Паскал развија као засебна верзија програмског језика и остаје у широкој употреби све до почетка деведесетих, када Паскал губи предност у односу на C++ и Јаву. Већ 1999. Паскал је замењен C++-ом као стандардом на свим америчким факултетима.

Од новина које уводи Борланд у Турбо Паскал значајна је могућност дељења кода на одвојене датотеке, такозване модуле (енглески: unit). Овај концепт преузет је из језика Модула, односно Модула-2 (каснија ревизија језика), за чије је креирање такође заслужан Никлаус Вирт, аутор првобитног Паскала. Могућност је додата почевши с верзијом 4.00 Турбо Паскал ИДЕ-а, а програмски пакет садржавао је и стандардну збирку модула преведених из изворног кода, прво у једној датотеци TURBO.TPL (.TPL = Turbo Pascal Library), а касније у броју одвојених бинарних. TPU (Turbo Pascal Unit) датотека. Седма верзија ТП-а укључивала је следеће модуле: APP, COLORSEL, CRT, CURSU, DIALOGS, DRIVERS, EDITORS, GRAPH, GRAPH3, HISTLIST, MEMORY, MENUS, MSGBOX, OBJECTS, OUTLINE, STDDLG, STRINGS, TEXTVIEW, TGKSI, TURBO3, VALIDATE, VIEWS и WINDOWS.

Последња верзија Турбо Паскала изишла је 1993. под бројем 7.0. Након тога, Борланд напушта даљи развој овог производа и уместо њега 1995. издаје Делфи за 16-битни Windows 3x, RAD окружење за Борланд Паскал који се од тад развија као посебан програмски језик Delphi. Delphi, као објектно-оријентисани Паскал нарочито је погодан за развијање графичких Windows апликација, задржао се у широкој употреби све до данас, а стекао је и широку популарност због лакоће коришћења и визуалног интерфејса за креирање ГУИ-ја. Од 2006. развојем Delphi језика бави се CodeGear, некадашња Борландова сарадница за развојне алате Borland Developers Tool Group (DTG). OpenSource алтернатива Delphi језику су Free Pascal Compiler и Lazarus IDE.

Кратак опис[уреди]

Виртова намера је била стварање ефикасног језика (у односу на брзину компилације и генерисаног кода) на основу структурног програмирања, недавно популаризованог концепта који је промовисао у својој књизи Algorithms + Data Structures = Programs . Паскал има своје корене у језику АЛГОЛ 60, али је такође увео концепте и механизме који су (поред АЛГОЛ-ових скалара и низова) омогућили програмерима да дефинишу своје сложене (структурне) типове података, а такође су олакшали изградњу динамичких и рекурзивних структура података као што су листе , стабла и графикони . Важне карактеристике које су укључене у ово су биле записи , енумерације , подређене , динамички додељене променљиве са придруженим показивачима и скуповима . Да би ово направио могућим и значајним, Паскал има строго типизирање на свим објектима, што значи да се једна врста података не може конвертовати или тумачити као друга без "експлицитних" конверзија. Слични механизми су стандардни у многим програмским језицима данас. Други језици који су утицали на развој Паскала су Симула 67 и Вирт-ов сопствени АЛГОЛ В.

Паскал, као и многи програмски језици данашњице (али за разлику од већине језика из Ц фамилије), дозвољава угнеждене процедуралне дефиниције на било који ниво дубине, а такође дозвољава већину врста дефиниција и декларација унутар подпрограма (процедуре и функције). Ово омогућава веома једноставну и кохерентну синтаксу у којој је потпуни програм синтаксички готово идентичан једној процедури или функцији (осим за наслов, који има једну од ове три кључне речи).

Имплементација[уреди]

Ранији Паскал Компајлери[уреди]

Први Паскал компајлер је дизајниран у Цириху за породицу рачунара ЦДЦ 6000 серије. Никлаус Вирт извештава да је први покушај имплементације у Фортран-у 1969. године био неуспешан због Фортранове неадекватности за изражавање сложених структура података. Други покушај примењен је на Ц-овске језике (Сцалоп од Макса Енглија), а потом ручно преведен (од Р. Шилд-а) у сам Паскал за обртање.[3] Био је оперативан до средине 1970. године. Многи компајлери Паккал-а су, с обзиром на то да су слично само-хостинг, тј. Компајлер је сам написан у Паскал-у, а компилатор је обично способан да се поново компајлира када се додају нове функције на језик или када се компајлер пренесе на ново окружење. ГНУ Паккал компајлер је један изузетан изузетак, који је написан у Ц.

Прва успјешна лука ЦДЦ Паскал компајлера у други меинфрејм (енг. mainframe) завршили су Веш и Квин (Welsh, Quinn) на Краљичином универзитету у Белфасту (КУБ) 1972. Циљ је била серија ИЦЛ 1900. Овај компајлер је, заузврат, био родитељ Паскаловог компајлера за информациони рачунарски систем (ИЦС) Мултум мини рачунар. Мултум порт је развијен - у циљу коришћења Паскал-а као системског програмског језика - од стране Финдлија, Каплса, Кавоураса и Дејвиса (Findlay, Cupples, Cavouras, Davis), који ради на одсеку за рачунарску науку на Универзитету у Глазгову. Сматра се да је Мултум Паскал, који је завршен у лето 1973. године, могао бити прва 16-битна имплементација.

Потпуно нови компајлер је завршио Велш на КУБ-у 1977. Понуђена је дијагностичка функција изворног језика (обухваћена профилирање, праћење и обликовање смерница у облику пост-мортемом (енг. post-mortem) отпадака) које је имплементирао Финдли и Ват (Findlay, Watt) на Универзитету у Глазгову. Ова имплементација је представљена 1980. године серији ИЦЛ 2900 од стране тима са Универзитета Саутамптон и Универзитета Глазгов. Имплементација модела Стандард Паскал такође је заснована на овом компајлеру, након што су адаптирали Велш и Хаи на Универзитету у Манчестеру 1984. године, да се ригорозно провери усклађеност с БСИ 6192 / ИСО 7185 Стандардом и да генерише код за преносиву апстрактну машину.

Први Паскал kомпилатор написан у Северној Америци изграђен је на универзитету у Илиноису од Donald B. Gillies за ПДП-11 и генерисан је изворни код машине.

Паскал - П Систем[уреди]

За брзо пропагирање језика, у Цириху је направљен компајлерски "преносни комплет" који је укључивао компајлер који је генерисао код за "виртуелну" машину, тј. kод који се може разумно и ефикасно тумачити, заједно са тумачем за тај код - систем "Паскал-П". Компилатори П-система називани су Паскал-П1, Паскал-П2, Паскал-П3 и Паскал-П4. Паскал-П1 је прва верзија, а Паскал-П4 је последњи дошао из Цириха. Верзија која се назива Паскал-П1 је сконцентрисана након чињенице за многе различите изворе за Паскал-П који су постојали. Компајлер је редизајниран да би побољшао преносивост и издао се као Паскал-П2. Овај код је касније побољшан како би постао Паскал-П3, са средњим кодом компатибилним са Паскал-П2, и Паскал-П4, који није био компатибилан назад.

Паскал-П4 компилатор/интерпретатор се и даље може покренути и компајлирати на системима компатибилним са оригиналним Паскал-ом. Међутим, он прихвата само подскуп Паскаловог језика.

Паскал-П5, креиран изван групе из Цурицха, прихвата пун Паскал језик и укључује ИСО 7185 компатибилност.

УЦСД Паскал раздвојен од Паскал-П2, где га је Кенет Болс користио за креирање интерпрериран УЦСД ​​П-Систем. УЦСД П-Систем је био један од три оперативна система доступна на лансирању оригиналне IBM Лични Рачунар.[4] УЦСД Паскал је користио средњи код базиран на вредностима бајтова, и стога је био један од најстаријих "компајлера бајтних кодова". Паскал-П1 преко Паскал-П4 није био, већ је заснован на ЦДЦ 6600 60-битној дужини ријечи.

Преводилац заснован на Паскал-П4 компајлеру, који је креирао изворне бинарне датотеке, издала је Аустралијска комисија за атомску енергију за IBM Систем /370; она се звала "ААЕЦ Паскал Компјутер" након скраћенице имена Комисије.[5]

Почетком осамдесетих, развијен је Вотком(енг. Watcom) Паскал, такође и за IBM Систем 370.

У деведесетим годинама, Паскал је и даље радио на терминима ВАКС на Џорџ Мејсон Универзитету за предавање компјутерског програмирања.

Објектни Паскал и Турбо Паскал[уреди]

Епл Компјутер је створио свој Лиса Паскал за Лиса радионицу 1982. године, а 1985. године преносио компајлер на Епл ? Макинтош и МПВ. 1985. Лари Теслер, у консултацији са Никлаус Вирт,су дефинисали Објектни Паскал и ови додаци су укључени у оба Лиса Паскал и Мек Паскал компајлера.

1980-их, Андерс Хелсберг написао је Блу Лејбл Паскал (енг. Blue Label Pascal) комппајлер за Насцом-2. Поновна примена овог компајлера за IBM ПС продата је под именом Компас Паскал и Поли Паскал пре него што је купио Борланд и преименован у Турбо Паскал.

Турбо Паскал постао је веома популаран, захваљујући агресивној стратегији цена, која има једно од првих интегрисаних развојних окружења у целом екрану, и врло брзо време окончања (само секунде за компајлирање, повезивање и покретање) . Писано је и високо оптимизовано у асемблерском језику, чинећи га мањим и бржим.

Године 1986. Андерс је послао Турбо Паскал на Макинтош и инкорпорирао Еплову Објект Паскал екстензију у Турбо Паскал. Ове екстензије су затим додате назад у ПС верзију Турбо Паскала за верзију 5.5. У исто време Мајкрософт је такође имплементирао Објект Паскал компајлер.[6][7] Турбо Паскал 5.5 имао је велики утицај на заједницу Паскала, која је почела да се концентрира углавном на IBM ПС крајем осамдесетих. Многи ПС хобисти у потрази за структурираном заменом за Бејсик су користили овај производ. Такође је почела да их усвајају професионални програмери. У исто време је увезено више концепта из C-а како би Паскал програмерима директно користили апликацију АПИ из Мајкрософт виндоус-а. Ове екстензије укључују нал-терминиране за стринг, показивачку аритметику, показиваче на функције, оператор-адреса и небезбедну конверзију типова.

Турбо Паскал и други деривати са јединице (енг. Unit) или концепти модула су модуларни језици. Међутим, он не пружа концепт уграђеног модула или квалификованог увоза и извоза одређених симбола.

Остале варијанте[уреди]

Супер Паскал је била варијанта која је додала не-нумеричке етикете, повратну изјаву и изразе као имена типова.

Универзитети Вискансин-Медисон, Цирих, Карлсруле и Вупертал су развили Паскал-СЦ и Паскал-КССЦ[8][9] and Pascal-XSC[10][11][12] ( Екстенѕија ѕа научна Израчунавања ) компилатори, намењени програмирању нумеричких израчунавања. ТМТ Паскал први компатибилан компајлер Борланд за 32-битни ДОС заштитни мод, ОС / 2 и Вин32 оперативни системи. Такође је језик ТМТ Паскал био први који је омогућио функцију и преоптерећење оператора.[13] Развој за Паскал-СЦ је започео 1978. године који подржава ИСО 7185 Паскал ниво 0, али подршка нивоа 2 је додата касније. Паскал-СЦ је првобитно циљао на З80 процесор, али је касније поново написан за ДОС (к86) и 68000. Паскал-КССЦ је у разним временским периодима пребачен у Јуникс (Линукс, СунОС, ХП-УКС, АИКС) и Мајкрософт/IBM (ДОС са ЕМКС , ОС / 2, Виндоус) оперативних система. Он ради тако што генерише средњи Ц изворни код који се затим саставља на изворну извршну датотеку. Неке од проширења језика Паскал-СЦ су усвојене од стране ГНУ Паскал.

Паскал Сол је дизајниран око 1983. године од стране француског тима за имплементацију Јуникс система сличних Солама. То је био стандардни ниво Паскал-1 (са параметризираним границама низова), али дефиниција је омогућила алтернативне кључне речи и унапред дефинисане идентификаторе на француском језику, а језик је укључио неколико екстензија како би се олакшало системско програмирање (нпр. енг. equivalent to lseek)[14]>.Сол тим је касније прешао у пројекат КорусОС (енг. ChorusOS) за дизајнирање дистрибуиране оперативне систем.[15]

ИП Паскал била је имплементација програмског језика Паскал користећи Мајкрополис ДОС, али је брзо померен на ЦП / М-80 који се покреће на З80. Премештен је у типове машина 80386 1994. године и данас постоји као имплементација Виндовс / КСП и Линукс. У 2008. години систем је доведен до новог нивоа, а резултујући језик назвао је "Паскалине" (након Паскал калкулатор). Укључује објекте, контроле именог простора, динамички низ, заједно са многим другим екстензијама, и генерално имају исту функционалност и заштиту типа као Ц #. То је једина таква имплементација која је компатибилна и са оригиналном имплементацијом Паскала, која је стандардизована као ИСО 7185.

Смарт Мобиле Студио [16] креирао је Џон Асенден и саставио је свој дијалект објекта Објект Паскал у HTML5 / Јавасцрипт

[Смарт Мобиле Студио] има ИДЕ који укључује визуелни Ц.

Програмирање[уреди]

Пример писања једноставног програма

Следећи једоставан програм уписује "Здраво свете!" у стандардну излазну датотеку output:

PROGRAM Pozdrav(output);
BEGIN
  writeln('Здраво свете!')
END.

Стандардни типови података[уреди]

Тип у Паскал-у иу неколико других популарних програмских језика дефинише променљиву тако да дефинише низ вредности које променљива може садржати и дефинише скуп операција које су дозвољене за извођење на променљива те врсте.Типови података у паскалу могу бити прости и сложени. Предефинисани типови су:

Тип податка Тип вредности које је променљива способна за чување
integer целобројни тип
real реални тип,бројеви y покретном зарезу
boolean логички тип,вредност Тачно или Нетачно (eng True or False)
char знаковни тип,један знак из уређеног скупа знакова
string симболни тип,група или "низ" карактера

Опсег вредности дозвољених за сваку (осим боолеан) је дефинисана имплементацијом. Функције су дате за неке конверзије података.За конверзију из real у integer, доступне су следеће функције: round који се заокружује на цео број користећи банкерово заокруживање) и trunc (заокружује ка нули).

Програматор има слободу да дефинише друге стандардне типове података (нпр. Бајт, стринг, итд.) У смислу унапред дефинисаних типова користећи Паскалов објекат декларације типа, на пример:

type
  byte        = 0..255;
  oznaceni_byte = -128..127;
  string      = packed array[1..255] of char;

(Често коришћени типови као што су бајт и стринг су већ дефинисани у многим имплементацијама.)

Типови подопсега[уреди]

Могући су подопсези било ког ординалног типа података (свих стандардних типова сем реалног):

var
  x : 1..10;
  y : 'a'..'z';

Сет типови[уреди]

За разлику од других програмских језика из тог времена, Паскал подржава сет тип:

var
  Set1 : set of 1..10;
  Set2 : set of 'a'..'z';

Сет је основни појам модерне математике и може се користити у многим алгоритмима. Таква функција је корисна и може бити бржа од еквивалентне конструкције на језику који не подржава скупове. На пример, за многе превођаче Паскала:

if i in [5..10] then ...

се извршава брже него:

if (i > 4) and (i < 11) then ...

Комплети не-суседних вредности могу бити нарочито корисни у погледу перформанси и читљивости:

if i in [0..3, 7, 9, 12..15] then ...

За ове примере, који укључују скупове у малим доменима, побољшане перформансе обично постиже компајлер који представља скуп вриједности као битних вектора. Сет оператора се затим може ефикасно имплементирати као операције кода рачунарских машина.

Декларација типа[уреди]

Типови се могу дефинисати преко других типова користећи декларације типа:

type
  x = integer;
  y = x;
...

Сложени типови могу бити конструисани из једноставних типова:

type
  a = array[1..10] of integer;
  b = record
        x : integer;
        y : char
      end;
  c = file of a;


Датотеке[уреди]

Као што је приказано у претходном примеру, Паскал датотеке су секвенце компоненти. Свака датотека има бафер променљиву која је означена са f ^ . Поступци get (за читање) и put (за писање) померају променљиву бафера на сљедећи елемент. Читање је уведено тако да је read(f, x) исто као и : к: = ф ^; доби (ф); . Писање је уведено тако да је write(f, x) исти као f^ := x; put(f); . Иако би варијабилна варијабла могла бити коришћена за инспекцију следећег знака који ће се користити (проверите цифру пре читања целог броја), то доводи до озбиљних проблема са интерактивним програмима у раним имплементацијама, али је касније ријешено са "лењи И/О" концепт.

У Џенсен и Вирт Паскалу, стрингови су представљени као запаковани низови карактера; стога имају фиксну дужину и обично су просторно обложени.

Показивачки тип[уреди]

Паскал подржава употребу показивача-а:

type
  pNode = ^Node;
  Node  = record
          a : integer;
          b : char;
          c : pNode  {додатна тачка-зарез није потребна}
          end;
var
  NodePtr : pNode;
  IntPtr  : ^integer;

Овде је променљива NodePtr показивач на тип података Node . Показивачи се могу користити пре него што се прогласе. Ово је декларација унапред, изузетак од правила да ствари морају бити деклариране пре него што се користе.

Да креирате нови рекорд и додијелите вриједност 10 и знак А у поља а и б у запису и иницијализирајте показивач ц на NIL, команде би биле:

New(NodePtr);
...

NodePtr^.a := 10;
NodePtr^.b := 'A';
NodePtr^.c := NIL;
...

То се такође може учинити коришћењем израза 'with' :

New(NodePtr);
...
with NodePtr^ do
begin
  a := 10;
  b := 'A';
  c := NIL
end;
...

Унутар обима израза with , а и б се односе на потпоље рекордног показивача NodePtr , а не на рекордни чвор или на показивач типа pNode.

Повезана листа, стек и редови могу бити креирани укључивањем поља типа показивача (c).

За разлику од многих језика који садрже показиваче, Пасkал дозвољава само показивачима да реферишу динамички креиране променљиве који су анонимни и да им не дозвољава да реферишу стандардне статичке или локалне променљиве. Показивачи такође морају имати придружени тип, а показивач једној врсти није компатибилан са показивачем на други тип (нпр. Показивач на знак није компатибилан са показивачем на цео број). Ово помаже у уклањању сигурносних проблема типа који су инхерентни другим имплементацијама показатеља, посебно оних који се користе за ПЛ/И или Ц. Такође уклања одређене ризике које изазивају висећи показивачи, али могућност динамичког деаллоцирања референтног простора користећи функцију dispose (која има исти ефекат као и функција free библиотеке која се налази у Ц) значи да ризик од висећег показивача није у потпуности елиминисан као што је то на језицима као што су Јава и Ц #, који обезбјеђују аутоматско сакупљање смећа (али који у потпуности не уклањају сродни проблем цурења меморије.[17]

Нека од ових ограничења могу се подићи на новије дијалекте.

Контролне структуре[уреди]

Паскал је структурно програмски језик, што значи да је ток контроле структуриран у стандардне изразе, обично без ' ГоТо' команди.

while a <> b do WriteLn('Cekanje');

if a > b then WriteLn('Uslov ispunjen') {није дозвољена тачка-зарез!}
           else WriteLn('Uslov nije ispunjen');

for i := 1 to 10 do {тачка зарез није дозвољена за појединачне изразе!}
  WriteLn('Iteracija: ', i);

repeat
  a := a + 1
until a = 10;

case i of
  0 : Write('nula');
  1 : Write('jedan');
  2 : Write('dva');
  3,4,5,6,7,8,9,10: Write('?')
end;

Процедуре и функције у Паскалу[уреди]

Процедуре су издвојене програмске целине (потпрограми) које на основу одређеног алгоритма трансформишу параметре (податке), али не враћају вредност као функције. Следећи пример приказује изглед синтаксе и структуре процедуре у Паскал програму.

program ProcTest;
var
  x : integer;
 
procedure PrintProc(var y : integer);
begin
  read(y);
  { ... }
end;
 
begin
  { ... }
  PrintProc(x);
  { ... }
end.


Свака процедура или функција може имати своје декларације о ознакама, константама, типовима, променљивама и другим процедурама и функцијама, које морају бити у том редоследу. Овај захтев за наручивање првобитно је био намењен да се омогући ефикасна компилација појединачног пасуса. Међутим, на неким дијалектима (као што је Ембаркадеро Делфи), строго наручивање захтева одељака декларације је опуштено.

Тачка-зарез као сепаратори израза[уреди]

Паскал је усвојио многе значајке синтаксе језика са АЛГОЛ језика, укључујући коришћење тачка-зареза као сепаратор израза. Ово је у супротности са другим језицима, као што су ПЛ / И, Ц итд. Који користе тачка-зарез као терминатор израза. Као што је илустровано у горе наведеним примерима, пре кључне речи end није потребна тачка с иконама декларације типа записа, блок или case израз; пре until кључна реч понављања израза; и пре кључне речи else израз if.

Присуство додатнор тачка-зареза није било дозвољено у ранијим верзијама Паскала. Међутим, додавање АЛГОЛ - као празних израза у ревидираном извештају из 1973. године, а касније и промене језика у ИСО 7185: 1983 сада омогућавају опционалне тачка-зарезе у већини случајева. Преко кључне речи "else'" још увек није допуштена тачка-зарез у ставку "if", јер else прати један израз, а не секвенца израза . У случају угнрждених if-ова, тачка-зарез се не може користити да би се избегао проблем висеће else (где унутрашњи if нема else, али спољашњи if има), путно завршава угњеждени ако је са тачком-зарезом - ово уместо тога прекида оба if. Уместо тога, експлицитни блок begin...end мора бити кориштен.

Програмери обично укључују ове додатне тачка-зарезе из навике и да избегавају промену последње линије секвенци израза када се додају нови кодови.

Основни знакови језика

  • У паскалу се користе ASCII слова
  • A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  • a b c d e f g h i j k l m n o p q r s t u v w x y z
  • бројеви: 0 1 2 3 4 5 6 7 8 9
  • и специјални знакови: + - * / = < > [] . , ; : ^ () ‘ { }

Међу специјалне знакове се убраја и размак (спејс).

Резервисане речи у паскалу

  • Begin - се користи за почетак блока.
  • End - се користи за крај блока.
  • Var - се користи за почетак дефинисања променљивих.
  • Type - се користи за дефинисање типова променљивих.
  • Const - се користи за дефинисање константи.
  • Procedure - се користи за дефинисање процедуре.
  • Function - се користи за дефинисање функције.

Стандардне функције језика паскал

  • Read(а), Readln(а) - је функција која учитава вредност за променљиву а.
  • Write(а), Writeln(а) - је функција која исписује вредност променљиве а.

Паскал не разликује велика и мала слова (тј. није case sensitive).

Оператори[уреди]

Аритметички оператори[уреди]

Аритметички оператори подржани у Паскалу:

Оператор Опис
+ Сабира два операнда
- Одузима други операнд од првог
* Множи два операнда
div Дели бројилац имениоцом
mod Модулус оператор и остатак целобројне поделе

Релациони оператори[уреди]

Релациони оператори подржани у Паскалу:

Оператор Опис
= Проверава да ли су вредности оба операнда једнака и ако јесу онда услов постаје тачан
<> Проверава да ли су вредности оба операнда једнака и ако нису онда услов постаје тачан
> Проверава да ли је вредност левог операнда већа од десног и ако јесте онда услов постаје тачан
< Проверава да ли је вредност левог операнда мања од десног и ако јесте онда услов постаје тачан
>= Проверава да ли је вредност левог операнда бећа или једнака од десног и ако јесте онда услов постаје тачан
<= Проверава да ли је вредност левог операнда мања или једнака од десног и ако јесте онда услов постаје тачан

Логички оператори[уреди]

Логички оператори подржани у Паскалу:

Оператор Опис
and Ако су оба операнда тачна онда услов постаје тачан
and then Слично је оператеру and, међутим, гарантује редослед у којем компајлер процењује логички израз. Лево на десно, и десни операнди су оцењују се само када је то потребно.
or Ако било који од два операнда су тачна онда услов постаје тачан.
or else Слично је оператору or, међутим, гарантује редослед у којем компајлер оцењује логичан израз. Лево на десно, и десни операнди су оцењују се само када је то потребно.
<= Назван boolean NOT оператор. Користи се да се перокрене логичко стање операнда. Ако услов је тачан, а онда ће ЛОГИЧНО НИЈЕ оператор учинити лажним.


Битовни оператори[уреди]

Битовни оператори подржани у Паскалу:

Оператор Опис
& Копира бит у резултат ако постоји у оба операнда.
Копира бит ако постоји у било ком операнду.
~ Има ефекат "обртања" битова.
<< Бинарни леви шифт оператер. Лева вредност операнда се помера лево за број битова који је наведен десним операндом.
>> Бинарни десни сменарски оператор. Лева вредност операнда се помера десно за број битова који је наведен десним операндом.

Таблица приоритета[уреди]

Оператор Опис
1. ~, not
2. *, /, div, mod, and, &
3. , !, +, -, or
4. =, <>, <, <=, >, >=, in
5. or else, and then

Ресурси[уреди]

Компилатори и преводиоци[уреди]

Неколико компилатора и преводилаца Паскала доступно је за општу употребу:

  • Делфи је Ембаркадеров (раније Борланд / КодГир) водећи производ за брз развој апликација (енгл. Rapid Application Development - RAD). Користи Обџект Паскал језик (назван "Делфи" од Борланда), пореклом из Паскала, за креирање апликација за Виндоус, меkОС, иОС и Андроид. Подршка .НЕТ која је постојала од Д8 до Д2005, Д2006 и Д2007 је прекинута и замењена је новим језиком (Присм, који је преименовани Оксиџен, погледајте у наставку) који није потпуно уназад компатибилан(енг. backward compatible). Последњих година је додата подршка и Уникод генерици (Д2009, Д2010, Делфи КСЕ).
  • Слободни (енг. Free) Паскал је мулти-платформни компајлер написан у Објектном паскалу (и селф-хостинг). Његов циљ је да обезбеди згодан и моћан преводилац, који је способан да састави старе програме и да буде средство за развој нових. Дистрибуира се под ГНУ ГПЛ, док пакети и библиотека извршавања потичу од модификованих ГНУ ЛГПЛ. Осим модова компатибилности за Турбо Паскал, Делфи и Мек Паскал, он такође има сопствене процедуралне и објектно оријентиране синтаксне модове са подршком за проширене функције као што је оператор преоптерећења. Подржава многе платформе и оперативне системе. Тренутне верзије такође садрже ИСО мод.
  • Модерн Паскал је мулти-платформни преводилац и п-код компајлер написан у Слободом (енгл. Free) Паскалу. Његов циљ је пружање алтернативних решења за ПХП и ноде.јс, користећи или ИСО стандардни паскални дијалект или хибридно подржавајуће ЈаваСкрипт / Ц операторе. Од ЦЛИ-а користан је као бесплатни Паскал интерпретатор.
  • Турбо51 је бесплатан Паскал компајлер за 8051 породицу микроконтролера, са Турбо Паскал & нбсп; 7 синтаксом.
  • Оксиџен (раније познат као Хром ) је Објектни Паскал компајлер за .НЕТ и Моно платформе. Креиран је и продаје га РемОбџектс Софтвер, а Ембаркадеро га је неко време продао као претставник за Присм.
  • Киликс је био потомак Делпхи, уз подршку оперативног система Линукс и побољшане библиотеке објеката. Више није подржано. Компајлер и ИДЕ су сада доступни за некомерцијалну употребу.
  • ГНУ Паскал Компајлер (ГПЦ) је Паскал компајлер ГНУ колекција компајлера (ГЦЦ). Сам компајлер је написан у Ц, библиотека за извршавање углавном у Паскалу. Дистрибуиран под ГНУ-ова општа јавна лиценца, ради на многим платформама и оперативним системима. Подржава АНСИ / ИСО стандардне језике и има делимичну Турбо Паскал дијалект подршку. Један од болнијих пропуста је одсуство 100% Турбо Паскал-компатибилног (кратког) типа стринга. Подршка за Борланд Делфи и друге језичке варијанте је прилично ограничена. Међутим, постоји Мек-паскал подршка.
  • DWScript ДВСкрипт, од ДелпхиВебСцрипт, је интерпретатор који су створили Маттхиас Ацкерманн и Ханнес Хернлер 2000. Тренутна верзија покреће дијалект Објектног Паскала који је у великој мери компатибилан са Делпхијем, али и подржава језичке конструктивне елементе уведене у Присму. ДВСкрипт код се може уградити у Делфи апликације сличне ПаскалСкрипт-у, састављене у самосталну апликацију користећи СимплМобаилСтудио или компајлиране у ЈаваСцрипт код и стављене на веб страницу. [18]
  • Др. Паскал је интерпретатор који покреће Стандардни Паскал. Значајни су режим "видљиво извршење" који приказује програм који се покреће и његове променљиве, као и опсежну проверу грешке извршавања. Покреће програме, али не емитује посебан бинарни извршни програм. Покреће ДОС, Виндоус у ДОС прозору и стари Макинтош.
  • Др. Паскал Проширени Паскал преводилац тестиран на ДОС-у, Виндоусу 3.1, 95, 98, НТ.
  • Виртуални Паскал је креирао Витали Мирианов 1995. године као изворни ОС / 2 компајлер компатибилан са синтаксом Борланд Паскал. Затим је комерцијално развио фПринт, додавши Вин32 подршку, а 2000. године постао је бесплатан. Данас се може компајлирати за Вин32, ОС / 2 и Линукс, и углавном је компатибилан са Борланд Паскал и Делфи. Развој је отказан 4. априла 2005. године.
  • П4 компајлер, основа за многе наредне Паскал-имплементиране-у-Паскалу компајлере. Примењује подскуп пуног Паскала.
  • П5 компајлер, је ИСО 7185 (пун Паскал) прилагођавање П4.
  • Смарт Мобаил Студио је Паскал за HTML5 / Јаваскрипт компајлер
  • Турбо Паскал је био доминантни Паскал преводилац за ПС рачунаре током 1980-их и раних деведесетих година прошлог века, популаран и због својих моћних продужења и изузетно кратких времена компајлирања. Турбо Паскал је компактно написан и могао је преводити, покренути и дебаговати све из меморије без приступа диску. Спори дискетни дискови били су уобичајени за програмера у то време, додатно повећавајући предност Турбо Паскал-а за брзину. Тренутно, старије верзије Турбо Паскал (до 5,5) су доступне за бесплатно преузимање са Борландовог сајта.
  • ИП Паскал Примењује језик "Паскалина" (именован по Паскаловом калкулатору), који је високо проширен Паскал компатибилан са оригиналним Паскалом према ИСО 7185. То садржи моделе са контролом именског простора(енг. namespace), укључујући паралелне модуле задатака са семафорима, објектима, динамичким низовима свих димензија које се распоређују у време извршавања, преоптерећења, преклапања и многих других екстензија. ИП Паскал има уграђену библиотеку преносивости која је посебно прилагођена језику Паскал. На пример, стандардна апликација за излаз из текста из 1970.их година првобитног Паскала може се поново компајлирати да би радила у прозору са додатим и графичким конструкцијама.
  • Паскал-КСТ је креирао Сименс за своје оперативне системе мејнфрејм БС2000 и СИНИКС.
  • ПокетСтудио је компајлер подскупова Паскал и РАД алатка за Палм ОС и МЦ68xxx процесоре са неким сопственим екстензијама за помоћ у повезивању са Палм ОС АПИ-јем. Личи на Делфи и Лазарус са дизајнером визуелне форме, објектним инспектором и уредником изворног кода].
  • МИДлетПаскал - Паскал компајлер и ИДЕ који генерише мали и брз Јава бајткод специјално дизајниран за креирање софтвера за мобилне уређаје
  • Вектор Паскал Вектор Паскал је језик за СИМД скупове инструкција као што су ММКС и АМД 3д Нау, подржавајући све Интел и АМД процесоре и Сони ПлејСтејшн 2 Емоушн Енџин.
  • Морфик Паскал дозвољава развој Веб апликација које су у потпуности написане у Обџект Паскал-у (и од стране сервера и од стране претраживача).
  • ВДСибил – Визуелно развојно окружење и Паскал компајлер за Вин32 и ОС / 2
  • ПП Компајлер, компајлер за Палм ОС који ради директно на ручном рачунару.
  • ЦДЦ 6000 Паскал компајлер је изворни код за први (ЦДЦ 6000) Паскал компајлер.
  • Паскал-С[19]
  • АмигаПаскал је бесплатан Паскал компајлер за рачунар Амига.

Веома детаљна листа може се наћи на Паскаленду. Сајт је на француском, али у основи је листа са URL-овима за компајлере. Страница, Паскал Централ, садржи информације о Паскал-у са Мек-ом и богату колекцију архива са чланцима, плус линкове за многе компајлере и туторијале који такође могу бити веома корисни.

Интегрисана развојна окружења(ИДЕ)[уреди]

Библиотеке[уреди]

  • WOL Библиотеке за креирање ГУИ апликација помоћу Фрее Паскал Компајлера.

Види још[уреди]

Референце[уреди]

  1. Milan Čabarkapa (2008), ‘’Računarstvo i informatika za 3. razred gimnazije”, Beograd. стр. 1.
  2. Hertzfeld, Andy. "Hungarian folklore.org: Macintosh Stories. Приступљено 06.02.2012.
  3. Рачунари и рачунарство. Лична перспектива. Никлауса Вирта by Niklaus Wirth
  4. "An Interview with JOHN BRACKETT AND DOUG ROSS", p15, Charles Babbage Institute, 2004
  5. "AUSTRALIAN ATOMIC ENERGY COMMISSION RESEARCH ESTABLISHMENT, LUCAS HEIGHTS, NUCLEAR SCIENCE AND TECHNOLOGY BRANCH REPORT 1977, DIVISIONAL RESEARCH", pp. 22, International Atomic Energy Agency (IEAE)
  6. Jon Udell, Crash of the Object-Oriented Pascals, BYTE, Јул, 1989.
  7. M.I.Trofimov, The End of Pascal?, BYTE, Март, 1990, pp. 36.
  8. „An introduction to the scientific computing language Pascal-SC”. Computers. 14: 53—69. doi:10.1016/0898-1221(87)90181-7. 
  9. PI (29. 08. 1986). „Cadmus jetzt mit Kulisch-Arithmetik - Uni Karlsruhe gibt Pascal-Compiler nach München” [Cadmus now comes with Kulisch arithmetic - University Karlsruhe delivers Pascal compiler to Munich]. Computerwoche (на језику: German). Munich / Karlsruhe, Germany: IDG Business Media GmbH. Архивирано из оригинала на датум 30. 05. 2016. Приступљено 30. 05. 2016. 
  10. „PASCAL-XSC: PASCAL for Extended Scientific Computing”. 
  11. „XSC Software”. Приступљено 11. 08. 2015. 
  12. „Universitaet Wuppertal: Wissenschaftliches Rechnen / Softwaretechnologie”. Приступљено 11. 08. 2015. 
  13. Bamberger, Lothar; Davenport, James H.; Fischer, Hans-Christoph; Kok, Jan; Schumacher, Günter; Ullrich, Christian; Wallis, Peter J. L.; Winter, Dik T.; Wolff von Gudenberg, Jürgen (1990). Wallis, Peter J. L., ур. Improving Floating-Point Programming (1st изд.). Bath, United Kingdom: John Wiley & Sons Ltd. ISBN 978-0-471-92437-1. 
  14. Michel Gien, "The SOL Operating System", in Usenix Summer '83 Conference, Toronto, ON, (July 1983). стр. 75-78
  15. cs.berkeley.edu
  16. http://smartmobilestudio.com
  17. J. Welsh, W. J. Sneeringer, and C. A. R. Hoare, "Ambiguities and Insecurities in Pascal", Software Practice and Experience 7. стр. 685–696 (1977)
  18. „Flock-JSCodeGenDemo.7z - dwscript - "Flock" DWScript / JavaScript CodeGen demo - Delphi Web Script general purpose scripting engine - Google Project Hosting”. Приступљено 11. 08. 2015. 
  19. "Pascal-S: A Subset and Its Implementation", N. Wirth in Pascal – The Language and Its Implementation, by D.W. Barron, Wiley 1979.

Литература[уреди]

  • Bamberger, Lothar; Davenport, James H.; Fischer, Hans-Christoph; Kok, Jan; Schumacher, Günter; Ullrich, Christian; Wallis, Peter J. L.; Winter, Dik T.; Wolff von Gudenberg, Jürgen (1990). Wallis, Peter J. L., ур. Improving Floating-Point Programming (1st изд.). Bath, United Kingdom: John Wiley & Sons Ltd. ISBN 978-0-471-92437-1. 
  • Милан Чабаркапа, Основи програмирања у Паскалу (књига 1), Круг, у Београду 2001.

Спољашње везе[уреди]