From Wikipedia, the free encyclopedia
Pascal (транскр. Паскал) је императивни програмски језик, који је 1970. године развио Никлаус Вирт, као језик погодан за учење структурног програмирања. Именован је по чувеном француском математичару и филозофу Блезу Паскалу, творцу прве рачунске машине која је имала могућност извођења операције сабирања. Стандардизован је 1983. године од стране Међународног комитета за стандардизацију.
Изговара се | Паскал |
---|---|
Модел |
|
Појавио се | 1970. |
Аутор(и) | |
Дизајнер(и) | |
Систем типова | статички и динамички |
Утицаји | , |
Утицао на |
|
Оперативни системи | Јуникс (Линукс, СунОС, ХП-УКС, АИКС) и Мајкрософт/IBM (ДОС са ЕМКС , ОС / 2, Windows) |
Паскал се данас користи као почетни програм за обуку будућих програмера, нарочито оних који намеравају да раде на програмском језику .
Паскал је развијен по обрасцу језика АЛГОЛ 60.Вирт је већ развио неколико побољшања овог језика у оквиру АЛГОЛ X предлога, али они нису прихваћени и Паскал је развијен одвојено и објављен 1970. године.Објектни Паскал, грана објектно оријентисаног дела Паскала, дизајниран за објектно оријентисано програмирање је развијен 1985. године. Ово је користио Епл Компјутер и Борланд крајем осамдесетих година, а касније се развио на Делфи на платформи Windows.Проширења Паскал концепта довеле су до програмских језика сличним Паскалу Модула-2 и Оберон.
Програмски језик Паскал је непревазиђен на плану обуке у програмирању, тамо где је основни циљ упознавање са програмирањем на логичан и систематичан начин.[1] Крајем 60-их година швајцарски научник Никлаус Вирт имао је за циљ да направи језик у коме би се могла ефикасно реализовати обука програмера. Међутим, данас Паскал има много ширу примену. Он се користи не само за писање програма у разним областима примене рачунара већ и као језик за системско и визуелно програмирање. Визуелни Паскал, реализован пакетом Делфи, данас је један од најпопуларнијих језика за пројектовање Windows апликација иако иза њега не стоји моћни Мајкрософт.
То је једноставан језик који се може брзо научити, и у њему се могу писати алгоритамски врло сложени програми. Он на известан начин утиче на начин размишљања програмера, тако да лако усваја основне принципе програмирања.
Програмски језик Паскал развио је, између 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. године, у оквиру МекЕп апликативног оквира, и постао је основни развојни језик компаније Епл почетком деведесетих.
Проширења објеката Паскал касније су додате Турбо Паскал-у, а током година су постали Делфи систем за Windows. Делфи се и даље користи за развијање Windows апликација, али такође има могућност да компајлира исти код код Мек, иОС и Андроид. Друга различита платформа под називом Бесплатан Паскал, са Лазарус ИДЕ-ом, популарна је код корисника Линукса, пошто такође нуди пиши једном, компајлирај било где развој. КодТифон је Лазарус дистрибуција са више унапред инсталираних пакета и унакрсних компајлера.
Године 1983, појављује се Турбо Паскал фирме Борланд, прво интегрисано развојно окружење (ИДЕ) за системе ЦП/М и ДОС. Турбо Паскал обједињује све функције циклуса развоја софтвера у један целовит програм (писање кода, компајловање, линковање, дебуговање), а истовремени приступ свакој од функција без потребе покретања засебних програма и гашења претходно покренутих је допринео још већој популаризацији Паскала у софтверској индустрији, јер су програмери до тад морали покретати засебно неколико различитих програма (едитор, компајлер, линкер, дебугер) да би довршили коначан програм. ИДЕ Турбо Паскал је масовно коришћен, како због могућности велике уштеде времена при развоју софтвера, тако и због своје ниске цене и лиценце која је омогућивала куповину само једне копије производа без обзира на коликом броју компјутера ће софтвер бити коришћен. Осим Турбо Паскала, Борланд је испоручивао и скупљу верзију ИДЕ-а под називом Борланд Паскал која се од Турбо Паскала незнатно разликовала по могућностима и имала укључен изворни код стандардних модула. Временом се Турбо Паскал развија као засебна верзија програмског језика и остаје у широкој употреби све до почетка деведесетих, када Паскал губи предност у односу на C++ и Јаву. Већ 1999. Паскал је замењен C++-ом као стандардом на свим америчким факултетима.
Од новина које уводи Борланд у Турбо Паскал значајна је могућност дељења кода на одвојене датотеке, такозване модуле (енглески: ). Овај концепт преузет је из језика Модула, односно Модула-2 (каснија ревизија језика), за чије је креирање такође заслужан Никлаус Вирт, аутор првобитног Паскала. Могућност је додата почевши с верзијом 4.00 Турбо Паскал ИДЕ-а, а програмски пакет садржавао је и стандардну збирку модула преведених из изворног кода, прво у једној датотеци (), а касније у броју одвојених бинарних. датотека. Седма верзија ТП-а укључивала је следеће модуле: и .
Последња верзија Турбо Паскала изишла је 1993. под бројем 7.0. Након тога, Борланд напушта даљи развој овог производа и уместо њега 1995. издаје Делфи за 16-битни 3x, окружење за Борланд Паскал који се од тад развија као посебан програмски језик . , као објектно-оријентисани Паскал нарочито је погодан за развијање графичких апликација, задржао се у широкој употреби све до данас, а стекао је и широку популарност због лакоће коришћења и визуелног интерфејса за креирање ГУИ-ја. Од 2006. развојем језика бави се , некадашња Борландова сарадница за развојне алате . алтернатива језику су и .
Виртова намера је била стварање ефикасног језика (у односу на брзину компилације и генерисаног кода) на основу структурног програмирања, недавно популаризованог концепта који је промовисао у својој књизи 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 Стандардом и да генерише код за преносиву апстрактну машину.
Први Паскал компилатор написан у Северној Америци изграђен је на универзитету у Илиноису од Donald B. Gillies за ПДП-11 и генерисан је изворни код машине.
За брзо пропагирање језика, у Цириху је направљен компајлерски "преносни комплет" који је укључивао компајлер који је генерисао код за "виртуелну" машину, тј. код који се може разумно и ефикасно тумачити, заједно са тумачем за тај код - систем "Паскал-П". Компилатори П-система називани су Паскал-П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-а како би Паскал програмерима директно користили апликацију АПИ из Microsoft Windows-а. Ове екстензије укључују нал-терминиране за стринг, показивачку аритметику, показиваче на функције, оператор-адреса и небезбедну конверзију типова.
Турбо Паскал и други деривати са јединице (енг. Unit) или концепти модула су модуларни језици. Међутим, он не пружа концепт уграђеног модула или квалификованог увоза и извоза одређених симбола.
Супер Паскал је била варијанта која је додала не-нумеричке етикете, повратну изјаву и изразе као имена типова.
Универзитети Вискансин-Медисон, Цирих, Карлсруле и Вупертал су развили Паскал-СЦ и Паскал-КССЦ[8][9] and Pascal-XSC[10][11][12] ( Екстенѕија ѕа научна Израчунавања ) компилатори, намењени програмирању нумеричких израчунавања. ТМТ Паскал први компатибилан компајлер Борланд за 32-битни ДОС заштитни мод, ОС / 2 и Вин32 оперативни системи. Такође је језик ТМТ Паскал био први који је омогућио функцију и преоптерећење оператора.[13] Развој за Паскал-СЦ је започео 1978. године који подржава ИСО 7185 Паскал ниво 0, али подршка нивоа 2 је додата касније. Паскал-СЦ је првобитно циљао на З80 процесор, али је касније поново написан за ДОС (к86) и 68000. Паскал-КССЦ је у разним временским периодима пребачен у Јуникс (Линукс, СунОС, ХП-УКС, АИКС) и Мајкрософт/IBM (ДОС са ЕМКС , ОС / 2, Windows) оперативних система. Он ради тако што генерише средњи Ц изворни код који се затим саставља на изворну извршну датотеку. Неке од проширења језика Паскал-СЦ су усвојене од стране ГНУ Паскал.
Паскал Сол је дизајниран око 1983. године од стране француског тима за имплементацију Јуникс система сличних Солама. То је био стандардни ниво Паскал-1 (са параметризираним границама низова), али дефиниција је омогућила алтернативне кључне речи и унапред дефинисане идентификаторе на француском језику, а језик је укључио неколико екстензија како би се олакшало системско програмирање (нпр. енг. equivalent to lseek)[14]>.Сол тим је касније прешао у пројекат КорусОС (енг. ChorusOS) за дизајнирање дистрибуиране оперативне систем.[15]
ИП Паскал била је имплементација програмског језика Паскал користећи Мајкрополис ДОС, али је брзо померен на ЦП / М-80 који се покреће на З80. Премештен је у типове машина 80386. 1994. године и данас постоји као имплементација Windows / КСП и Линукс. У 2008. години систем је доведен до новог нивоа, а резултујући језик назвао је "Паскалина" (по Паскаловом калкулатору). Укључује објекте, контроле именског простора, динамички низ, заједно са многим другим екстензијама, и генерално имају исту функционалност и заштиту типа као C Sharp. То је једина таква имплементација која је компатибилна и са оригиналном имплементацијом Паскала, која је стандардизована као ИСО 7185.
Смарт Мобиле Студио[16] креирао је Џон Асенден и саставио је свој дијалект објекта Објект Паскал у HTML5 / Јавасцрипт
[Смарт Мобиле Студио] има ИДЕ који укључује визуелни Ц.
Следећи једоставан програм уписује "!" у стандардну излазну датотеку output
:
PROGRAM Pozdrav(output);
BEGIN
writeln('Здраво свете!')
END.
Тип у Паскал-у иу неколико других популарних програмских језика дефинише променљиву тако да дефинише низ вредности које променљива може садржати и дефинише скуп операција које су дозвољене за извођење на променљива те врсте.Типови података у паскалу могу бити прости и сложени. Предефинисани типови су:
Тип податка | Тип вредности које је променљива способна за чување |
---|---|
integer | целобројни тип |
real | реални тип, бројеви у покретном зарезу |
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
мора бити кориштен.
Програмери обично укључују ове додатне тачка-зарезе из навике и да избегавају промену последње линије секвенци израза када се додају нови кодови.
Основни знакови језика
Међу специјалне знакове се убраја и размак (спејс).
Резервисане речи у паскалу
Стандардне функције језика паскал
Паскал не разликује велика и мала слова (тј. није 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 |
Неколико компилатора и преводилаца Паскала доступно је за општу употребу:
Веома детаљна листа може се наћи на Паскаленду Архивирано на сајту (5. септембар 2020). Сајт је на француском, али у основи је листа са URL-овима за компајлере. Страница, Паскал Централ Архивирано на сајту (10. март 2010), садржи информације о Паскал-у са Мек-ом и богату колекцију архива са чланцима, плус линкове за многе компајлере и туторијале који такође могу бити веома корисни.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.