Структура программы

Структура программы в Pascal

Итак, на предыдущей странице мы определились со следующими понятиями: program, integer, real, const, var, begin, end, write, writeln, read, readln. Давайте напишем простые программы на Паскале с их использованием. Но сначала выясним, из каких частей состоит программа на Паскале.

Любая программа на языке программирования Pascal имеет три составляющие: 1) заголовок; 2) раздел описаний; 3) тело программы.

✎ 1) Заголовок – это слово Program , после которого идет название программы латиницей и точка с запятой в конце. Название не может начинаться с цифры, не должно совпадать с зарезервированными словами (begin, end, integer и т.п.

) или с названиями переменных из раздела описаний (см. ниже), а также недопустимо использование каких бы то ни было символов (‘@’, ‘%’, ‘&’ и т.п.), кроме подчеркивания. Название желательно давать со смыслом, которое отображало бы суть самой программы.

Но заголовок писать не обязательно.

✎ 2) Раздел описаний – Поскольку сначала мы будем рассматривать простейшие задачи, то у нас во втором разделе будет находиться или описание констант, или переменных (см. пп. 4 и 5 статьи Введение в Pascal).

✎ 3) Тело программы – блок операторов, в котором записываются команды для выполнения. Начинается этот блок словом begin («начало»), а заканчивается словом end. («конец») с точкой в конце(пп. 6, 7 той же статьи).

Таким образом, в общем случае программа на Паскале выглядит следующим образом:

1   2   3   4   5   6   7   8   9   10   Program ; begin ; ; . . . . . . . ; end.

При решении простейших задач ограничимся сначала целыми числами. Перед тем как начать программировать, укажем простейшие 4 действия над числами в Паскале: «+» − сложение, «-» − вычитание, «*» − умножение, «/» − деление. Как видим, в программировании и математике элементарные действия над числами обозначаются одинаково. Решим следующую задачу:

Задача. Пусть даны целые числа A и B. Найти их сумму.

Назовем программу нахождения суммы как Summa. Тогда часть кода, отвечающая за название программы, будет иметь вид:

1   Program Summa; { программа называется Summa }

Обозначим сумму чисел A и B через S. Поскольку числа целые, то и сумма будет целым числом. Таким образом, в описании чисел A, B, S будем использовать переменную целого типа integer.

Но как описать эти числа в разделе описаний – как константы (const) или как переменные (var)? Все зависит от условия задачи. Мы можем числа A и B записать и как константы, и как переменные.

Но в любом случае сумма S будет переменного типа, поскольку нам неизвестно её значение.

Итак, пусть дано значение чисел A и B, равное, например, 23 и 76 соответственно. Поскольку мы знаем значения наперед, то A и B будут типа const, а S опишем как var. Учитывая, что описание констант идет перед описанием переменных, раздел описаний в этом случае будет следующим:

1   2   3   4   5   6   Const A = 23; B = 76; var S: integer;

Таким образом, тело программы будет состоять из вычисления суммы S и вывода её на экран. В паскале, чтобы вычислить сумму А и В, нельзя просто записать S = A + B; такая запись возможна, если надо проверить, не равно ли число S сумме A + B.

А чтобы в переменную S записать значение суммы А + В, надо значение этой суммы «присвоить» переменной S, т.е. сумму А + В записать в то место памяти компьютера, которое выделено для переменной S. Это как бы «впихивание» значения одного числа в значение другого.

Записывается присваивание так:

S := A + B;

Для вывода результата используется оператор вывода write с комментарием на экране:

write('Сумма чисел 23 и 76 равна: S = ', S);

Объединяя наши 1)заголовок программы, 2)раздел описаний и 3)тело программы, получим небольшой код, который можно скопировать в PascalABC.Net или в другую версию Pascal:

Источник: https://zdamsam.ru/a942.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}
1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   Program Summa; { программа называется Summa } Const A = 23; B = 76; var S: integer; begin S := A + B; { сумма чисел A и B } writeln('Сумма чисел 23 и 76 равна: S = ', S); readln {

Источник: http://progmatem.ru/pascal/struktura-programmy-v-paskal.html

Структура программы на языке Паскаль

Программа состоит из заголовка и блока.

Заголовок программы

В заголовке указывается имя программы и список параметров. Общий вид:

program n (input, output, x, y,…);

здесь n – имя программы; input – файл ввода; output – файл вывода; x, y – внешние файлы, используемые в программе.

Заголовка может и не быть или он может быть без параметров.

Блок

Блок программы состоит из шести разделов, следующих в строго определенном порядке:

  1. раздел меток (label)
  2. раздел констант (const)
  3. раздел типов (type)
  4. раздел переменных (var)
  5. раздел процедур и функций
  6. раздел действий (операторов).

Раздел действий должен присутствовать всегда, остальные разделы могут отсутствовать.

Каждый из первых четырех разделов начинается с соответствующего ключевого слова (label, const, type, var), которое записывается один раз в начале раздела и отделяется от последующей информации только пробелом, либо концом строки, либо комментарием.

Раздел меток (label)

Любой выполняемый оператор может быть снабжен меткой – целой положительной константой, содержащей не более 4-х цифр. Все метки, встречающиеся в программе, должны быть описаны в разделе label.

Общий вид:

здесь l1, l2, l3 – метки.

Пример. label 5, 10, 100;

Метка отделяется от оператора двоеточием.

Пример. Пусть выражение a := b имеет метку 20. Тогда этот оператор выглядит так:

Раздел констант (const)

Если в программе используются константы, имеющие достаточно громоздкую запись (например, число пи с 8-ю знаками), либо сменные константы (для задания варианта программы), то такие константы обычно обозначаются какими-либо именами и описываются в разделе const, а в программе используются только имена констант. Это делает программу более наглядной и удобной при отладке и внесении изменений.

Общий вид:

const a1 = c1; a2 = c2; …

здесь a1 – имя константы, c1 – значение константы.

Пример. const pi = 3.14; c = 2.7531;

Раздел типов (type)

Если в программе вводится тип, отличный от стандартного, то этот тип описывается в разделе type:

type t1 = вид_типа; t2 = вид_типа;

где t1 и t2 – идентификаторы вводимых типов.

Затем тип используется при объявлении переменных.

Пример использования нестандартных типов:

const len=40;
type year=1930..2010; names=string[len];
var empl: names; y: year;

Раздел описания типов имеет большое значение в программе на языке Pascal. Если в программе не использовать типы, то можно столкнуться с несовместимостью типов переменных, даже если они описаны одинаково.

Раздел переменных (var)

Пусть в программе встречаются переменные v11, v12,…; все они должны быть описаны следующим образом:

var v11, v12,…: type1; v21, v22,…: type2; …

здесь v11, v12,… – имена переменных; type1 – тип переменных v11, v12,…; type2 – тип переменных v21, v22,….

Пример. var k, i, j: integer; a, b: real;

Каждая переменная должна быть описана до ее использования в программе и отнесена к одному и только одному типу. Названия разделов (const, type, var…) указываются только один раз.

Пример.

Таким образом, в разделе var вводится имя каждой переменной и указывается, к какому типу эта переменная принадлежит. Тип переменной можно задать двумя способами: указать имя типа (например, real, color и т.д.), либо описать сам тип, например: array[1..16] of char

Раздел процедур и функций

Здесь присутствуют заголовки и тела пользовательских процедур и функций.

Раздел действий (операторов)

Эта часть программы начинается с ключевого слова begin и заканчивается словом end, после которого должна стоять точка. Раздел действий есть выполняемая часть программы, состоящая из операторов.

Источник: https://pas1.ru/programmstructure

Структура Паскаль-программы (стр. 1 из 5)

Структура Паскаль-программы.

Программа на языке Паскаль состоит из следующих частей:

Заголовок

Подключение модулей

Раздел описаний

Begin

Раздел операторов

End.

Заголовок – необязателен. Начинается с ключевого слова program.

Program ;

Подключение модулей – ключевое слово uses.

Uses , , …, ;

Раздел описаний – состоит из нескольких подразделов.

Подраздел Label – описание меток.

Label , ;

Const– описание констант.

Type – описание типов.

Var– описание переменных.

Function– описание функций.

Procedure – описание процедур.

Раздел операторов – содержит действия, предписанные алгоритмом.

Раздел описаний совместно с разделом операторов называется блоком.

Program My_First_program;

Var n1, n2: integer;

x: real;

Begin

Write(‘n1=’); readln(n1);

Write(‘n2=’); readln(n2);

x := n1 / n2;

Writeln(‘n1/n2= ‘, x);

End.

Процедура – некоторая последовательность операторов языка Паскаль, к которой можно обратиться по имени.

Системы типов языка. Стандартные типы.

В языке Паскаль любая константа, переменная, значение выражения характеризуется своим типом.

Тип данных определяет множество значений, которые может принимать переменная, а также множество операций, допустимых над данной переменной.

Кроме того, тип данных определяет внутреннее представление переменной. Все типы языка Паскаль можно разделить на две категории: стандартные и определяемые программистом.

Системы типов языка Паскаль.

См. рис.1.

Логический (булевский) тип.

Boolean – идентификатор логического типа. Может принимать два значения: False(0) или True (1). Занимает 1 байт.

ByteBool – 1 байт.

WordBool – 2 байта.

LongBool – 4 байта.

Операции отношения: >, =, 1) and (x < 2) – пример логических операций.

Целые типы.

Эта группа типов обозначает множество целых чисел в различных диапазонах.

Integer – длина 2 байта. От -32768 до 32767.

Byte– длина 1 байт. От 0 до 255.

Word– длина 2 байта. От 0 до 65535.

Shortint – длина 1 байт. От -128 до 127.

Longint– длина 4 байта. От -2^31 до 2^31-1.

Операции: +, -, *, /, div, mod.

Все операции, кроме деления, для целых данных дают результат целого типа. Деление всегда даёт результат вещественного типа.

Стандартные процедуры и функции, применимые к данным целого типа.

Odd( x): boolean – функция возвращает True, если число нечётное, и False– в противном случае.

Порядковыми называются типы, значения которых можно перечислить по порядку. Boolean тоже относится к порядковому типу.

Pred( x) – предыдущее значение. Тип результата – целый.

Succ( x) – следующее значение. Тип результата – целый.

Inc( x) – функция увеличения на единицу.

Inc( x, n) – процедура увеличивает значение первого параметра на n.

Dec( x) – функция уменьшения на единицу.

Dec( x, n) – процедура уменьшает первый параметр на n.

Вещественный тип.

Эта группа типов обозначает множество вещественных значений в различных диапазонах.

Real – идентификатор вещественного типа. Длина памяти – 6 байт. Диапазон: от 2,9*10^-39 до 1,7*10^38. В памяти машины величины типа Realпредставляются так: знак порядка, порядок, мантисса.

Single– длина 4 байта. От 1,1*10^-45 до 3,4*10^38. Представляется так: знак порядка, мантисса, порядок.

Double – длина 8 байт. От 5,0*10^-324 до 1,7*10^308.

Extended– длина 10 байт. От 3,4*10^-4932 до 1,1*10^4932.

Comp – длина 8 байт. От -2^63 до 2^63-1.

Операции: Арифметические: +, -, *, /. Результат – вещественного типа.

Операции отношения.

Стандартные процедуры и функции, применимые к данным вещественного типа.

Символьный тип.

Char – идентификатор символьного типа. Символы с кодом от 0 до 127 соответствуют ASCII. Символы с кодом от 128 до 255 не ограничены стандартами. Длина типа Char– 1 байт. Значения – коды символов от 0 до 255. Символы в тексте программы записываются в одиночных апострофах.

Операции: операции отношения.

Символьные типы относятся к порядковому типу.

Стандартные процедуры и функции, применимые к данным символьного типа.

Тип называется скалярным, если он не раскладывается на составные части.

Раздел определения констант.

Константы – это данные, которые в процессе выполнения программы нельзя менять.

Все константы делятся на литеральные и именованные.

Литеральные константы – это все числа, символы и строки символов в тексте программы.

Именованные константы – фиксированное значение, которому даётся имя.

С onst – идентификатор раздела констант.

const = ;

Тип константы определяется её изображением (способом её записи). Константы бывают целые, вещественные, символьные и строковые.

Целые константы – задаются десятеричным или шестнадцатеричным числом (шестнадцатеричные – со знаком $ в начале).

Вещественные константы могут создаваться форматом с фиксированной точкой или с плавающей точкой.

Символьные константы – одиночный символ с апострофами или строка с апострофами.

Раздел описания меток.

Метка в Паскале – это десятичное число или правильный идентификатор. Назначение метки – помечать оператор.

Label – идентификатор раздела меток.

Раздел описания переменных.

Var –идентификатор раздела переменных.

var : ;

x: real;

x, y, z, a: integer;

В Паскале введено понятие типизированных констант . По сути, это – переменная с заданным начальным значением. Типизированные константы описываются в разделе constследующим образом: : = значение;

x: integer= 10;

Значение типизированной константы можно менять в программе.

При описании переменных в одном блоке не может быть одинаковых имён. Для переменных, описанных в блоке, выделяется объём памяти размером 64 кБ.

Определение типов.

Type – идентификатор раздела типов.

type = ;

letters = ‘A’..’Z’;

Тип, который создаётся ограничением диапазона возможных значений какого-либо порядкового типа, называется ограниченным типом. Тип, на который накладываются ограничения, называется базовым типом.

interval = 0..100;

Базовые типы: все целые типы и тип Char.

Перечислимые типы – задаются перечислением тех значений, которые он может получать. Каждое значение именуется идентификатором и располагается в списке, обрамлённом круглыми скобками.

Пример: Color = (Red, Yellow, Green);

За каждым именем из этого списка закреплено определённое значение. Самим задать значение этих констант в Паскале нельзя.

var z: letters;

index: interval;

my_letter: ‘a’..’z’;

Выражения.

Основными объектами, из которых состоит исполняемая часть программы, являются константы, переменные и обращения к функциям. Каждый из этих объектов характеризуется своим значением и принадлежит к какому-либо типу данных.

Выражение – это формальное правило для вычисления нового значения. Выражением может быть одиночный объект (константа, переменная, обращение к функции) или несколько операндов, разделённых знаками операций.

Операции – определяют действие по вычислению новых значений, исходя из значения операндов.

Все операции Паскаля можно разделить на 4 группы по приоритетам: 1) унарные операции (логическое not, операция взятия адреса); 2) мультипликативные операции (умножение, деление, деление нацело, взятие остатка от целочисленного деления, логическое and, операции сдвига – shlи shr); 3) аддитивные операции (сложение, вычитание, логическое or, логическое xor); 4) операции отношения (проверка на равенство или неравенство, операции сравнения, операция проверки принадлежности к множеству – in).

Для логических выражений характерно то, что их значение может стать известным ещё до конца вычисления всего выражения. Такой способ называется усечённым способом вычисления логических выражений.

Options – Compiler – BooleanEvaluation– выбор типа вычисления логических выражений.

Операторы.

Это синтаксические конструкции, предназначенные как для записи действий по преобразованию данных, так и для задания порядка выполнения других действий.

Язык Паскаль содержит всего 11 операторов: 1) оператор присваивания; 2) оператор процедуры; 3) оператор перехода; 4) составной оператор; 5) условный оператор; 6) оператор варианта; 7, 8, 9) операторы цикла; 10) оператор над записями; 11) пустой оператор. Кроме того, существуют операторы машинного кода и ассемблера.

Источник: http://MirZnanii.com/a/310785/struktura-paskal-programmy

Основная структура программы

Правила языка Паскаль предусматривают единую для всех программ форму основной структуры (Презентация 2, слайд 3):

Program ; ; Begin ;

End.

Здесь слова Program, Begin и End являются служебными. Правильное и уместное употребление этих слов является обязательным.

Угловые скобки в формате указывают на то, что вместо них при реальном программировании должно быть подставлено конкретное значение. Сама запись программы в принципе может производиться вообще в одну стоку. Однако, такая запись неудобна для чтения, недостаточно наглядна, поэтому я рекомендую придерживаться приведенной структуры, а в «теле» программы – по одному оператору в строке.

Имя программы выбирается самостоятельно разработчиком в соответствии с правилами построения идентификаторов.

Все объекты (переменные, константы метки, функции, процедуры и т.д.), не являющиеся зарезервированными в Паскале, которые вы используете в программе, должны быть описаны. Это производится для того, чтобы компьютер перед выполнением программы зарезервировал память под соответствующие объекты и поставил в соответствие им идентификаторы. Раздел описаний может состоять из пяти подразделов:

· Описание меток (Label)

· Описание типов (Type).

· Описание констант (Const).

· Описание переменных (Var).

· Описание процедур и функций (Procedure, Function).

При отсутствии таких объектов, соответствующий подраздел может быть опущен.

Алфавит языка

Основу любого языка составляет алфавит, то есть конечный, фиксированный набор символов, используемых для составления текстов на данном языке (в нашем случае – программ). (Презентация 2, слайд 4)

Итак, алфавит языка Паскаль составляют:

· буквы латинского алфавита; (Вопрос: Сколько букв? Ответ: 26)

· арабские цифры; (Вопрос: Сколько цифр? Ответ: 10)

· специальные знаки. (Вопрос: Кто подскажет? Ответ: .,;: и т.д.)

Использование символов первой группы чаще всего вопросов не вызывает, но свои тонкости здесь имеются.

Во-первых, это употребление заглавных и строчных букв. Большинство существующих трансляторов не различают буквы разных регистров. Таким образом, записи “progRaM” и “PROGram” будем считать идентичными.

Во-вторых, некоторые символы латиницы и кириллицы совпадают по начертанию. Нельзя ли вместо буквы “К” латинской написать “K” русскую?
(Ожидаемый ответ: в программе на ЭВМ – ни в коем случае. На вид они может быть и похожи, но уж коды-то у них совершенно разные, а компьютер, как вам известно, оперирует внутри себя не буквами, а их числовыми кодами). (Презентация 2, слайд 5)

По поводу привычных арабских цифр сказать можно только то, что с их помощью записываются не только числа. Цифры могут использоваться в качестве обыкновенных символов.

Сложнее всего обстоит дело со специальными знаками, поэтому их придется разобрать подробно:

. конец программы, разделение целой и дробной частей вещественного числа (десятичная точка), разделение полей в переменной типа Record
, разделение элементов списков
.. указание диапазона
: используется в составе оператора присваивания :=, а также для указания формата вывода в операторе Writeln
; отделяет один раздел программы от другого, разделяет операторы
' используется для ограничения строковых констант
– + * / ( ) арифметические знаки
< > знаки отношений
= используется в составе оператора присваивания, в разделах описаний констант и типов, используется как знак отношения (равно)
^ используется для именования динамических переменных
{} ограничение комментариев в программе
[ ] заключают в себе индексы элементов массивов
_ символ подчеркивания используется также как любая буква, например, в идентификаторах – вместо пробела

В процессе изучения языка мы познакомимся с этими знаками.

Возникает вопрос, а как же быть с русскими буквами и другими знаками, имеющимися на клавиатуре? Некоторые версии Паскаля допускают их использование в программе, но стандарт языка этого не подразумевает. Поэтому включать эти символы в программу можно только в качестве строковых констант или внутри комментария, то есть там, где транслятор при компиляции их игнорирует.

Идентификаторы

Имена операторов, переменных, констант, типов величин, имя самой программы назначаются разработчиком и называются в Паскале идентификаторами. Существуют правила, которым должны отвечать все идентификаторы:

· идентификатор должен быть уникальным, то есть одним и тем же именем разные объекты не могут быть названы;

· идентификатор имеет ограничение по длине (зависит от конкретной реализации языка на компьютере);

· идентификатор может состоять только из символов латинского алфавита, цифр и знака подчеркивания (“_”);

· идентификатор не может начинаться с цифры.

Например, можно записать имя программы (Презентация 2, слайд 6): Iwanow_Petr_10a, но нельзя: 10а-Иванов Петр (допущены три ошибки: имя начинается цифрой, использовано тире и слова разделены пробелом).

Нельзя использовать как идентификаторы слова, предназначенные для обозначения операторов программы, но можно программу оставить без заголовка.
Понятие переменной и типы данных рассмотрим на следующих уроках.

Раздел операторов

Это основной раздел программы – выполнение программы сводится к выполнению раздела операторов, т.е. к выполнению последовательности операторов, заключенных в операторные скобки begin….. end.

Оператор вывода (Презентация 2, слайд 7)

Для вывода информации в Паскале используется оператор:

Write (b1, b2, b3,…, bn);

выводится на экран значения переменных b1, b2, b3,…, bn
Writeln (b1, b2, b3,…, bn);

выводится на экран значения переменных b1, b2, b3,…, bn и после этого осуществляется переход на новую строку Writeln;

переход на новую строку Write (‘значения переменных’, b1, b2, b3,…, bn);

выводится на экран сообщение «значения переменных», затем соответствующие значения переменных b1, b2, b3,…, bn и после этого осуществляется переход на новую строку.

Источник: https://megaobuchalka.ru/8/19310.html

Структура программы

Тема: Структура программы

Цели:

Образовательные:

Узнать, что такое структура программ

Научиться работать с разными структурой алгоритма

Развивающие:

способность анализа сообщений ПО и умение принятия соответствующих решений;

интерес к учению, потребность в самоутверждении;

Воспитательные:

внимательность, сосредоточенность, аккуратность при работе с ПО;

интерес к самостоятельной работе, творчеству;

Тип урока: Объяснение + практика

План урока

Орг.момент

Проверка д/з

Новая тема

Закрепление

Домашнее задание

Программа на языке Паскаль имеет следующую структуру:

Декларативная (описательная часть);

PROGRAM … ;

    CONST … ;

    VAR … ;

BEGIN

   …

END .

Разделы

описаний

Указание имени программы ;

Описание констант ;

Описание переменных ;

Раздел операторов .

Выполняемая часть;

 1. В действительности, тело программы может состоять из большего количества разделов описаний. С некоторыми из них Вы познакомитесь позже.

2. В программе может отсутствовать любой раздел, кроме раздела операторов.

Заголовок программы: PROGRAM  название ;

PROGRAM – ключевое слово заголовка программы;

название – идентификатор пользователя;

CONST – ключевое слово описания констант;

VAR – ключевое слово описания переменных, используемых в программе;

BEGIN – начало исполняемых операторов;

END. – конец программы (обратите внимание на синтаксис: операторы разделяются символом “;”, программа заканчивается символом “.”).

№ п/п

Примеры описаний

Результаты описаний

1

констант:

CONST V=10 ; A=4.6E-4 ;

              Y=17.3 ; ALFA=pi ;

              K=-5 ;

V, K – константы целого типа;

А, Y, ALFA – константы вещественного типа

2

переменных:

VAR XX, V0 : Real ;

         K, N, Pr : Integer ;

XX, V0 – переменные вещественного типа; K, N, Pr – переменные целого типа

3

CONST  Time = 31.5 ;

               G = 1.9 ;

               P = 15 ;

VAR  Year : Word ;

          Money : LongInt ;

          S1, S2 : Real ;

Объявление констант Time и G со значениями 31,5 и 1,9 вещественного типа, P со значением 15 – целого типа.

Переменные Year, Money – целого тіпа; S1, S2 – вещественного типа

В результате последнего объявления идентификаторы Time, G, P будут в дальнейшем в программе использоваться как константы, а Year, Money, S1, S2 – как переменные указанных выше типов. Возможные значения этих переменных определяются соответствующим типом:

Year:          0 .. 65535                               (например, 2007; 123)

Money:                -2147483648 .. 2147483647  (например, 1000500; -150)

S1, S2:                               (например, 15.3; -4Е-21)

 Всякий объявленный в программе идентификатор должен быть уникальным. Так, например, недопустимым является объявление:

Var X : Real ; X : Integer ;

Итак, описание констант осуществляется в разделе описания констант CONST, а описание переменных – в разделе описания переменных VAR:

Описание констант

Описание переменных

CONST имя1 = значение1 ;

              имя2 = значение2 ;

                   . . .

VAR имя1 : тип1 ;

         имя2 : тип2 ;

                   . . .

имя1, имя2, … – имена констант, по которым будет осуществляться обращение к ним в программе

имя1, имя2, … – имена переменных, по которым будет осуществляться обращение к ним в программе; тип1, тип2, … – их типы.  Несколько величин одного типа перечисляются через запятую: Var a, b, c : Real;

В тексте программы могут присутствовать комментарии, которые важны для документирования (пояснения) программы.

Комментарий – произвольный текст, ограниченный с обеих сторон фигурными скобками, или круглыми скобками и символом *, например,

{ Это комментарий }  и  (* Это комментарий *).

Ограничивая некоторый оператор символами комментария, можно при выполнении программы осуществлять обход этого оператора, делая его не выполняемым.

Комментарий может размещаться в любом месте программы.

Пример программы с комментариями:

{Программа сравнения физических характеристик Солнца и Земли}

Program Astronomy;

             {Объявление констант}

CONST MS = 2E30;        {Солнце : масса        }

                       PS = 1.416;        {                плотность}

                       MZ = 5.976E24;  {Земля :  масса          }

                       PZ = 5.518;        {             плотность   }

             {Объявление переменных}

  VAR

            dsZ, Om, Op : Real;   {dsZ – длительность суток на Земле}

             {Om – отношение масс, Ор – отношение плотностей}

         …

Begin

      …

End.

Операторы выполняемой части программы рекомендуется записывать в отдельных строчках с отступами (ступенчатообразно). Это способствует наглядности программы и упрощает понимание отдельных элементов оператора.

Закрепление

Какова общая структура программы на языке Паскаль?

Какие служебные (зарезервированные) слова Вы знаете?

Что является заголовком, символом начала и конца программы?

Каково назначение разделов Var, Const?

Как компилятор определяет тип константы? тип переменной?

Домашнее задание

Тема: Структура и команды алгоритма

Цели:

Образовательные:

Узнать, что такое структура и команды алгоритма

Научиться работать с линейными, разветвляющиеся,сложные, циклическими алгоритмами

Развивающие:

способность анализа сообщений ПО и умение принятия соответствующих решений;

интерес к учению, потребность в самоутверждении;

Воспитательные:

внимательность, сосредоточенность, аккуратность при работе с ПО;

интерес к самостоятельной работе, творчеству;

Тип урока: Объяснение + практика

План урока

Орг.момент

Проверка д/з

Новая тема

Закрепление

Домашнее задание

Формы же пред­ставления этих алгоритмов могут быть разными, например: на естественном языке, на специальном языке, формулами, в виде геометри­ ческих фигур. На предыдущих уроках мы изучали эти алгоритмы на естественном языке.

Способ описания алгоритма на естественном языке, как мы это делали в предыдущих параграфах, называют словесным. Он очень удо­бен, когда следует приближенно описать суть алгоритма. Однако при словесном описании не всегда удается ясно и точно выразить идею.

Для более наглядного представления алгоритма широко использу­ ется графическая форма — блок-схема, которая составляется из стандартных графических объектов.

Опишем с помощью блок-схем линейный, циклический и разветвляющийся .

Линейный алгоритм.

Для примера опишем с помощью блок-схем следующий план: пойду на реку, буду купаться и ловить рыбу.

Разветвляющийся алгоритм.

Для примера опишем с помощью блок-схем следующий план: если встречу друга, то спрошу у него мою книгу, иначе зайду к нему.

Циклический алгоритм.

Для примера опишем с помощью блок-схем следующий план: пока есть примеры, буду решать.

Закрепление

Класс 7

Тема: Структура программы

Цели:

Образовательные:

Узнать, что такое структура программ

Научиться работать с разными структурой алгоритма

Развивающие:

способность анализа сообщений ПО и умение принятия соответствующих решений;

интерес к учению, потребность в самоутверждении;

Воспитательные:

внимательность, сосредоточенность, аккуратность при работе с ПО;

интерес к самостоятельной работе, творчеству;

Тип урока: Объяснение + практика

План урока

Орг.момент

Проверка д/з

Новая тема

Закрепление

Домашнее задание

Программа на языке Паскаль имеет следующую структуру:

Декларативная (описательная часть);
Выполняемая часть;

1. В действительности, тело программы может состоять из большего количества разделов описаний. С некоторыми из них Вы познакомитесь позже.

2. В программе может отсутствовать любой раздел, кроме раздела операторов.

Заголовок программы: PROGRAM название ;

PROGRAM – ключевое слово заголовка программы;

название – идентификатор пользователя;

CONST – ключевое слово описания констант;

VAR – ключевое слово описания переменных, используемых в программе;

BEGIN – начало исполняемых операторов;

END. – конец программы (обратите внимание на синтаксис: операторы разделяются символом “;”, программа заканчивается символом “.”).

п/п Примеры описаний Результаты описаний
1 констант:
CONST V=10 ; A=4.6E-4 ;Y=17.3 ; ALFA=pi ;K=-5 ; V, K – константы целого типа;А, Y, ALFA – константы вещественного типа
2 переменных:
VAR XX, V0 : Real ;K, N, Pr : Integer ; XX, V0 – переменные вещественного типа; K, N, Pr – переменные целого типа
3 CONST Time = 31.5 ;G = 1.9 ;P = 15 ;VAR Year : Word ;Money : LongInt ;S1, S2 : Real ; Объявление констант Time и G со значениями 31,5 и 1,9 вещественного типа, P со значением 15 – целого типа.Переменные Year, Money – целого тіпа; S1, S2 – вещественного типа

В результате последнего объявления идентификаторы Time, G, P будут в дальнейшем в программе использоваться как константы, а Year, Money, S1, S2 – как переменные указанных выше типов. Возможные значения этих переменных определяются соответствующим типом:

Year: 0 .. 65535 (например, 2007; 123)

Money: -2147483648 .. 2147483647 (например, 1000500; -150)

S1, S2:(например, 15.3; -4Е-21)

Итак, описание констант осуществляется в разделе описания констант CONST, а описание переменных – в разделе описания переменных VAR:

Всякий объявленный в программе идентификатор должен быть уникальным. Так, например, недопустимым является объявление:

Var X : Real ; X : Integer ;

Описание констант Описание переменных
CONST имя1 = значение1 ;имя2 = значение2 ;. . . VAR имя1 : тип1 ;имя2 : тип2 ;. . .
имя1, имя2, … – имена констант, по которым будет осуществляться обращение к ним в программе имя1, имя2, … – имена переменных, по которым будет осуществляться обращение к ним в программе; тип1, тип2, … – их типы. Несколько величин одного типа перечисляются через запятую: Var a, b, c : Real;

В тексте программы могут присутствовать комментарии, которые важны для документирования (пояснения) программы.

Комментарий – произвольный текст, ограниченный с обеих сторон фигурными скобками, или круглыми скобками и символом *, например,

{ Это комментарий } и (* Это комментарий *).

Ограничивая некоторый оператор символами комментария, можно при выполнении программы осуществлять обход этого оператора, делая его не выполняемым.

Комментарий может размещаться в любом месте программы.

Пример программы с комментариями:

{Программа сравнения физических характеристик Солнца и Земли}

Program Astronomy;

{Объявление констант}

CONST MS = 2E30; {Солнце : масса }

PS = 1.416; { плотность}

MZ = 5.976E24; {Земля : масса }

PZ = 5.518; { плотность }

{Объявление переменных}

VAR

dsZ, Om, Op : Real; {dsZ – длительность суток на Земле}

{Om – отношение масс, Ор – отношение плотностей}

Begin

End.

Операторы выполняемой части программы рекомендуется записывать в отдельных строчках с отступами (ступенчатообразно). Это способствует наглядности программы и упрощает понимание отдельных элементов оператора.

Закрепление

Какова общая структура программы на языке Паскаль?

Какие служебные (зарезервированные) слова Вы знаете?

Что является заголовком, символом начала и концапрограммы?

Каково назначение разделов Var, Const?

Как компилятор определяет тип константы? тип переменной?

Домашнее задание

Источник: https://kopilkaurokov.ru/informatika/uroki/struktura-proghrammy

Структура программы на языке Паскаль

На занятии рассматривается понятие «структура программы на языке Паскаль», происходит знакомство с основными компиляторами для работы: turboPascal и pascal abc

В сети Интернет Вы найдете большое количество информации, посвященной языку Pascal. Цель нашего портала заключается в последовательном логичном изложении кратких теоретических сведений по теме с обязательным закреплением материала в виде практических заданий на основе решенных примеров.

Представленные на сайте labs.org.ru задания и уроки по Паскалю выстроены последовательно по мере увеличения сложности, а готовые решенные примеры позволят с легкостью пройти материал даже новичку.

Сайт можно использовать в качестве вспомогательного наглядного пособия для учителей и преподавателей.

Паскаль — язык структурного программирования. Это означает, что для написания программы, необходимо предварительно составить алгоритм ее решения для компьютера. Синтаксисом предусмотрена определенная структура программы на языке Паскаль:

program Primer;

1
2
3
4
раздел меток ( label )
раздел констант ( const )
раздел типов ( type )
раздел переменных ( var )

раздел меток ( label ) раздел констант ( const ) раздел типов ( type ) раздел переменных ( var )

  • [ Раздел процедур и функций ]

(раздел может быть пропущен, если в программе не предусмотрено использование процедур или функций)

1
2
3
begin
операторы;
end.

begin операторы; end.

Заголовок со служебным словом program в программе можно опускать.

Структура программы на языке Паскаль

Переменная – это величина, имеющая имя, тип и значение. Значение переменной может быть изменено во время работы программы.

 

В разделе описаний наиболее важная часть начинается после служебного слова var (сокращ. от англ. variable — переменная), именно здесь указываются типы переменных в Паскале, которые будут описаны дальше.

Раздел меток, типов и описание констант происходит, естественно, только при их наличии в программе.

Раздел операторов — основная часть программы, которая всегда начинается со служебного слова begin в Паскале (begin — в переводе с англ. начало). Соответственно заканчивается этот раздел служебным словом end (с англ. конец).

Рассмотрим примеры из раздела описаний:
Раздел меток ( label ):

label l1, l2, l3…;

Раздел констант ( const ):

1 const a1 = 55; a2 = 3.14; …

const a1 = 55; a2 = 3.14; …

Раздел типов ( type ):

1
2
type t1 = вид_типа; t2 = вид_типа;

type t1 = вид_типа; t2 = вид_типа;

Раздел переменных ( var ):

1
2
var v11, v12,…: type1; v21, v22,…: type2; …

var v11, v12,…: type1; v21, v22,…: type2; …

Таким образом, порядок составления программ на Pascal должен соответствовать указанной структуре программы.

Рекомендуемые компиляторы Паскаля

Известно, что программы не могут быть сразу обработаны процессором. Сначала они переводятся на машинный язык при помощи специальных программ-трансляторов.

Для языка Pascal (и ряда других) такая программа называется компилятором (другой вид трансляторов — интерпретаторы), которых существует достаточно много.

Но все они действуют примерно по одному принципу: необходимо сначала написать целую программу от начала до конца, затем, если имеются ошибки — исправить их, и только потом запустить работу компилятора, и программа выдаст результат.

Первые компиляторы были разработаны в 1992 г. фирмой Borland International: выпущены два пакета программирования — Borland Pascal 7.0 и Turbo Pascal 7.0.

Наиболее популярным транслятором до недавнего времени, используемым во всех школах и вузах, являлся компилятор Turbo Pascal или по-русски Турбо Паскаль, который имел англоязычный интерфейс и стандартное окно которого выглядело примерно так:

На современных компьютерах некоторые модули Turbo Pascal 7.0 (например, модуль CRT) работают некорректно. Служебное слово uses подключает к программе тот или иной модуль. Uses crt в Паскале — модуль, позволяющий выводить цветные символы на цветном экране при использовании текстового режима.

Для очистки окна в компиляторе Турбо Паскаль используется функция ClrScr (с англ. colorScreen — покрасить экран). Интегрированная среда Турбо Паскаль постепенно вымещается более современными компиляторами.

Сегодня всё большую популярность набирает русскоязычный компилятор PascalABC и его новая версия PascalABC net, скачать которую можно на официальном сайте.

Среда разработки Паскаль abc или, как часто ее называют, Паскаль абс (и даже так: авс и абц), выгодно отличается замечательным справочным материалом, синтаксической подсветкой и, как уже было сказано, русским языком.

Кроме того, это целая платформа (framework), позволяющая работать в визуальном редакторе с элементами управления.

Модуль crt в pascal abc не подключается, и в целом работа с модулями значительно упрощена по сравнению с Turbo pascal.

Таким образом, среда программирования Pascal abc выгодно отличается от всех своих предшественников.

Источник: http://labs.org.ru/struktara-programm-operator-writeln-readln/

Общая структура программы

Программы в Cache

Типы программ

При создании программного кода на языке Cache Object Script известно в общей сложности четыре различных типа программ, обзор которых дает следующая таблица.

Таблица 1. Различные типы программ.

Окончание Тип программы Пояснение
.MAC Макрокод Макрокод может содержать код Cache ObjectScript, макродирективы, макросы, встроенный SQL и встроенный HTML. Он компилируется в промежуточный код, а тот уже в объектный код.
.INC Включаемая макропро-грамма Включаемые макропрограммы могут содержать любой код, разрешенный в .МАС-программах. Они применяются для построения макробиблиотек и могут быть включены в макропрограмму с помощью директивы Include -отсюда и их название.
.INT Промежу-точный код Промежуточный код – это рабочий код Cache ObjectScript. Макросы и встроенный SQL сначала преобразуются в промежуточный код.
.OBJ Объектный код Прежде чем выполнить промежуточный код, необходимо откомпилировать его во внутренний объектный код. Это происходит автоматически при сохранении отредактированной программы. Во время выполнения используется только объектный код; Фирмы-разработчики программного обеспечения тиражируют свои приложения, большей частью, только в объектном коде.

Создание программ с помощью Cache Studio

Cache Studio — это одно из приложений, вызываемых из меню Cache-куба. Для разработки программ предлагается графический редактор, позволяющий комфортно создавать классы (включая создание кода методов), CSP-страницы Cache (Cache Server Pages), программы на макроязыке, включаемые файлы и программы на промежуточном коде, а также компилировать их в выполняемый объектный код.

Cache Studio предоставляет программисту такое вспомогательное средство, как автоматический синтаксический контроль; различные элементы языка помечаются разным цветом и в случае нарушения синтаксических правил выводятся сообщения об ошибках.

Cache Studio также содержит встроенный отладчик, который может быть использован для поиска ошибок в приложениях.

Программисты часто используют Cache Studio совместно с проводником Cache, который предоставляет богатейшие возможности по управлению программами, включая их импорт/экспорт, а также контекстный поиск.

Основные структуры в программе

Программы в Cache состоят из индивидуальных блоков кода, создаваемых и редактируемых как исходный код, при сохранении автоматически компилируемых в особую объектную форму, не являющуюся машинным кодом и независимую от платформы — это так называемый р-код.

В качестве имени программы допустима любая комбинация буквенно-цифровых символов 7-битного набора ASCII, с тем лишь ограничением, что имя не должно начинаться с цифры, и с тем дополнением, что первым символом может быть знак процента, а также в любой позиции имени кроме первой и последней может использоваться символ точки. Программы, имена которых начинаются с процента, считаются библиотечными программами, эти имена предусмотрены для системных программ Cache, которые могут вызываться из любых областей Cache. В отношении максимальной длины имени каких-либо ограничений нет, однако распознаются лишь символы с первого по 31.

Строение программной строки

Строка является основной структурной единицей программы. Вообще говоря, в Cache различают четыре вида программных строк:

Строки с метками

Метка отмечает строку внутри программы. Она всегда должна начинаться в первом столбце строки.

Соглашения для меток соответствуют соглашениям для имен программ, кроме того, метку можно начинать с цифры. Общая длина не должна превосходить 31 символ.

Вслед за меткой в любом случае идет пробел, называемый также признак начала строки. За ним могут (но не обязаны) следовать выполняемые команды Cache.

Строки кода

Они всегда начинаются, по меньшей мере, одним пробелом (то есть признаком начала строки). За ним могут (но не обязаны) следовать выполняемые команды Cache.

Строки комментария

Имеются два различных метода комментирования:

– Комментарий с точкой с запятой (;). Все символы, идущие за точкой с запятой, не выполняются. При компиляции программы в объектный код комментарии удаляются.

– Комментарий с двумя точками с запятой (;;). Некоторые элементы языка (в особенности функция $Text) могут ссылаться на текст программной строки.

Часто комментарии служат для хранения параметров или констант в тексте программы. Чтобы это было возможно и в случае отсутствия исходного кода программы во время выполнения, отделенные двумя точками с запятой комментарии из объектного кода не удаляются, другими словами, при компиляции в отличие от простой точки с запятой они сохраняются.

С-совместимые комментарии

– Два слэша (//), аналогично точке с запятой.

– Комментарий, расположенный на нескольких строках программы начинается с символов /* и заканчивается */.

Между последней командой в строке и началом комментария /* должен присутствовать минимум один пробел (два пробела для команды без аргументов). Эта форма комментария может быть также использована внутри списка аргументов функции, например:

Write $Char(65 /* 65 соответствует букве “А” */)

Пустые строки применяются для визуального деления программы и ее лучшей читаемости. Первая строка программы не может быть пустой строкой.

Выражение или команда могут быть расположены в нескольких строках. Очевидно, действует правило, что команда не может быть разделена на командное слово и первый символ аргумента команды.

Set sum = x + у // comment I

+ z , // comment 2

mue = sum /3 // comment 3

В этом примере комментарии расположены в конце каждой «подстроки».

В дополнение к этому надо учитывать, что строка всегда рассматривается как единое целое в строчных формах команд For, If и Else и поэтому не может быть разбита на несколько.

Максимальная длина строки программы 4К.

Блоки в программе

Следующую по размеру структурную единицу представляют собой блоки.

В Cache различают три типа блоков:

1. «Точечные» блоки, вызываемые при помощи команды Do без аргументов.

2. Процедурные блоки, которые заключены в фигурные скобки и поэтому могут располагаться на нескольких строках.

3. Командные конструкции условного выполнения программы, в которых исполняемый программный код также заключен в фигурные скобки.

«Точечные» блоки

«Точечные» блоки начинаются одной или несколькими точками в каждой строке, поэтому они так и называются. Вызывают их с помощью безаргументной команды Do.

Точечные блоки расширяют область действия программной строки. Инициализация такого блока происходит посредством команды Do без аргумента, при этом ожидается, что этот блок начинается в следующей строке после Do.

Эта область должна начинаться с точки (после признака начала строки). При этом аналогично команде Do с аргументом Do-стек увеличивается на единицу (уровень 1).

Если в этой области встречается еще одна безаргументная команда DO, следующая строка должна начинаться с двух точек (уровень 2) и так далее.

Отдельные блоки не обязаны, но могут завершаться командой Quit. Они заканчиваются неявно, если вслед за блоком с n-ным количеством точек идет строка, в начале которой содержится отличное от n число точек.

Заметим, что из заданного уровня с помощью команды Goto или Do невозможно перейти на другой уровень, однако из блока локально или глобально могут вызываться программы, в нем не находящиеся.

В следующем примере поясняются основные структуры блоков.

// Эта (основная) область относится к уровню 0,

// который не содержит точек

Do // безаргументная Do

. // Внешний блок, одна точка, уровень 1

.

. Do // еще безаргументная Do

.. // внутренний блок, две точки, уровень 2

..

. // вновь блок первого уровня —

. // неявное завершение 2-го уровня блока

.

// Отсутствие точки, основной блок

Quit

В заключение необходимо сделать еще два важных замечания.

Во-первых, каждый уровень блока имеет собственную служебную переменную $Test, другими словами, изменение $Test не передается наружу. (Это существенное отличие от вызова подпрограммы с помощью команды Do с аргументом!).

Во-вторых, как это происходит в нашей программе-примере, точки должны проставляться и у строк комментария с тем, чтобы блок не завершился автоматически.

Общая структура программы

Программа в Caché состоит из индивидуальных блоков, создаваемых и редактируемых как исходный код. Программа состоит из подпрограмм, процедур и функций.

Имя программы – определяется именем MAC-файла, в котором она хранится, это любая комбинация буквенно-цифровых символов ASCII, имя не должно начинаться с цифры. При сохранении программы в файле ее имя не должно содержать символы: _(подчерк), – (минус), ; (точка с запятой).

Имя, включающее эти символы, не является верным.

Вызов программы:

Do ^RoutineName

Первой строкой программы может быть оператор с меткой (тегом), метка может сопровождаться списком входных параметров, заключенных в круглые скобки.

Программа – это контейнер для подпрограмм, методов, процедур и функций. Программы, имена которых начинаются с %(процента), считаются библиотечными программами.

Программы в Cache состоят из входной метки, отдельных программных строк, содержащих код, и заключительной команды Quit. Эта структура внутри программы может повторяться.

Строение программной строки:

[метка] [код команды] [комментарий]

В программах в основном используются процедурные блоки, которые заключены в фигурные скобки и поэтому могут располагаться на нескольких строках, а также командные конструкции условного выполнения программы, в которых исполняемый программный код также заключен в фигурные скобки.

Р1 // первая строка программы

Set a=l

Do Р2

Quit

Р2 // первая строка подпрограммы Р2

Set х=2,у=3

Quit

Эта программа состоит из двух фрагментов, программы Р1 и вызываемой из Р1 программы Р2. Из совершенно другой программы можно было бы «глобально» вызвать Р1 с помощью команды Do ^P1. Это означает, что программа будет загружена из каталога программ в память и далее последует ее выполнение.

Если циркумфлекс («знак глобала») при вызове Do P2 отсутствует, то ожидается, что метку следует искать в текущей программе. Р2 можно назвать также подпрограммой Р1.

Вход в «глобально» вызываемую программу может совершаться и с определенной метки. К примеру, вызов Do P2^P1 вызывал бы (локальную) подпрограмму Р2 в программе Р1.

Наконец, имеется возможность, используя так называемый синтаксис метка+смещение, войти в n-ную строку (n равно смещению) после метки в вызываемой программе.

Так, например, в нашей программе вызов Do Р1+3^Р1 означал бы, что вход в программу совершается через вторую строку после метки Р1, и там начинается обработка. В этом случае строка Set a=1 была бы пропущена.

Эта возможность весьма гибка, и применяется в самых разных ситуациях (например, при тестировании программ), но все же требуется соблюдать достаточную осторожность, особенно тогда, когда в программу будут добавляться строки, и таким образом смещение будет изменяться.

Не касаясь заранее передачи значений вызываемой программе, хотелось бы подчеркнуть, что метки можно снабдить заключенным в скобки списком переменных, служащих формальными параметрами подпрограммы, которая будет вызвана с этой метки.

Invert(xl,x2,x3) // Метка со списком формальных параметров

Метки могут быть public (общедоступными) и private (внутренними), что определяется соответствующим ключевым словом. Если его нет, то по умолчанию они public.

Метки public могут быть вызваны из любой программы, private — только из текущей.

Move(x) Private /* метка private, может быть использована

только внутри этой программы */

Rotate(x) Public /* это метка public, может быть вызвана из

любой программы */

Invert(х) /* аналогично */

Прежде чем закончить рассмотрение меток, давайте остановимся на неявной команде Quit перед меткой с параметрами.

Start //

Write “Hello World”,!

// Здесь неявная команда Quit

MySub(a) //

Write a,!

// Здесь неявная команда Quit

MyProc(){

Write “This is my procedure”

// Неявная команда Quit в конце процедуры

}

Неявная команда Quit предотвращает «сквозное продолжение» программы в том случае, если опущена явная команда Quit и следующая строка начинается с метки с параметрами. Это обусловлено тем, что параметры могут быть не определены.

В случае ошибки выполнения программы выдается имя метки+ смещение, где произошла ошибка.

Например:

SAMPLES>do ^badroutine

start+3^badroutine

SAMPLES 2do>quit

SAMPLES>

Строка программы может иметь метку в начале, называемую тегом, код команды и комментарий, но все эти элементы являются необязательными. Все эти элементы отделяются друг от друга табуляцией или пробелами.

Например:

end quit ; конец

Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте: