Компиляция и исправление синтаксических ошибок
После подготовки текста программы необходимо откомпилировать программу, связать ее с библиотекой стандартных процедур и функций, загрузить в оперативную память и передать ей управление. Эта последовательность действий называется исполнением программы и реализуется командой Ctrl-F9. Этап компиляции может быть произведен командой F9. Компиляция (трансляция программы, записанной на исходном языке, в объектный модуль осуществляется опциями Compile, Make и Build меню раздела COMPILE. В опции Compile компиляция заканчивается созданием объектного модуля с расширением .OBJ. а компиляция в режимах Make и Build - созданием исполняемого файла с расширением .ЕХЕ. Вызов компилятора в режиме Compile-(Alt-F9) приводит к компиляции программного модуля, находящегося в редакционном окне. Этап компиляции позволяет определить наличие или отсутствие синтаксических ошибок в программе. При их обнаружении среда автоматически загружает в окно редактора исходный файл и помещает курсор в ту строку программы, при компиляции которой найдена ошибка. Во многих случаях такие ошибки возникают из-за неправильного набора текста на клавиатуре, пропуска запятых, двоеточий и т.п. Найденная ошибка исправляется и производится повторная компиляция программы. Если в программе нет синтаксических ошибок, то на экране высвечивается сообщение о количестве строк в откомпилированной программе и объеме доступной оперативной памяти (окно Compiling). Окно редактора на экране восстанавливается нажатием клавиши Esc. Далее, производится отладка с тестированием программы, в процессе которой выявляются семантические и алгоритмические ошибки. В оставшейся части программы – между служебными словами Begin и End (содержится её тело (или раздел операторов). Здесь описанные средствами Turbo Pascal представлены все действия, позволяющие получить нужные результаты. Первая строка тела программы в примере представляет собой оператор чтения Read, который служит для ввода значений переменных A, B и С. На практике это выглядит так: Дойдя до оператора Read, программа приостанавливает работу и от пользователя программы требуется ввести значения соответствующих переменных. Пользователь вводит значение переменной A и нажимает клавишу Enter, азатем аналогично вводит значения переменныхB и C. После операторов, позволяющих ввести значения переменных, следует оператор присваивания x1:=(-b+sqrt(sqr(b)-4*a*c))/(2*a); Знак присваивания делит его на две части. В правой части представлено выражение, которое необходимо вычислить. Затем полученное значение присваивается переменной, содержащейся в левой части оператора. Данный оператор вычисляет значения одного из корней (x1) квадратного уравнения и присваивает его переменной x1. Если в традиционной форме записи, принятой в математике, это выражение выглядит как
то представление на языке программирования Турбо Паскаль оно имеет несколько иной вид: x1:=(-b+sqrt(sqr(b)-4*a*c))/(2*a); x2:=(-b-sqrt(sqr(b)-4*a*c))/(2*a); К сказанному можно добавить, что операторы в теле программы следует располагать определённым образом и при этом в меру использовать отступы и пустые строки. Отступы предназначены для того, чтобы показать, где одна структура включается в другую – для отделения основных разделов программы. В принципе, текст программы можно записать и в одну строку – для компилятора это безразлично. И эта программа будет работать. Однако, если данную программу потребуется когда-нибудь изменить или усовершенствовать, разобраться в таком исходном тексте будет непросто. Чтобы повысить их читабельность, при написании текстов программ следует придерживаться определённого стиля. (см. Правила оформления программ ) Кроме того, отладка (удаление ошибок) программы проводится построчно. Если в программе, записанной в одну строку, компилятор обнаружит ошибку, будет зафиксирован сам факт, но не выявлен оператор, содержащий ошибку. А если в строках программы содержатся по два-три оператора, при обнаружении ошибки программисту придётся предпринимать дополнительные действия, чтобы выявить её местонахождение. Иными словами, целесообразно исходный текст программы максимально вытягивать по вертикали – стремиться в каждой строке иметь не более одного оператора. Теперь попробуем выполнить нашу программу. Для этого в меню Runвыберем одноименный пункт Run(Ctrl+F9) После запуска на выполнение нашей программы (свободной от ошибок) экран имеет вид: Turbo Pascal Version 7.0 Copyright (c) 1983,92 Borland International -2.76889002637745E-0001-7.22311099736544E+0000
Здесь мы имеем дело с представлением чисел с плавающей запятой, известное также как экспоненциальный формат чисел. -2.76889002637745 - мантисса -0001 – порядок Т.е. это число равносильно числу -2.76889002637745·10-1 или -0.276889002637745 Это не наглядно и не совсем понятно. Во-первых, не помешало бы сделать так, чтобы программа отображала текстовое сообщение, приглашающее ввести значение каждой из переменной. Во-вторых, значения корней уравнения здесь представлены в одну строку, и не разделены даже пробелом. Было бы лучше вывести их в отдельных строках и как-нибудь обозначить. Для этого вместо одного оператора Write, обеспечивающего вывод на экран значений обоих корней уравнений, введём в программу два оператора Writeln, чтобы значения корней отображались в разных строках. Процедура Write осуществляет вывод заданного значения и переводит курсор на следующую позицию в той же строке, процедура Writeln осуществляет вывод заданного значения и переводит курсор в начало следующей строки. Кроме того, сделаем так, чтобы значения корней, выводимые на экран, предварялись соответствующими обозначениями. Наконец, неплохо бы весь вывод на экран как-нибудь озаглавить. Получим программу: Program kvadr2; var d,a,b,c,x1,x2:real; begin writeln('Вычисление корней квадратного уравнения'); {Процедура вывода текста} writeln('введите значение A'); {Процедура вывода текста} read(a); {Процедура ввода} writeln('введите значение B'); {Процедура вывода текста} read(b); {Процедура ввода} writeln('введите значение C'); {Процедура вывода текста} read(c); {Процедура ввода} d:=sqrt(sqr(b)-4*a*c); x1:=(-b+d)/(2*a); x2:=(-b-d)/(2*a); writeln('x1=',x1:6:2); {Процедура вывода} writeln('x2=',x2:6:2); {Процедура вывода} end.
x1:6:2 – означает, что после вывода выражения ‘x1=’ курсор должен сдвинуться на шесть позиций от края экрана, :2– оставить два числа после запятой (т.к. тип real) В результате на экране получим (после последовательности действий: (F9 → ctrl+F9 → ввели данные → enter → alt+F5) Debug(отладка) - User screen – Alt+F5(экран пользователя) В результате выполнения программы (ctrl+F9)на экран выводится сообщение: Вычисление корней квадратного уравнения введите значение A введите значение B введите значение C x1= -0.12 x2=-21.88
Кстати, можно сделать так, чтобы на экране одновременно были видны исходный текст программы и результаты её работы. Для этого в меню Debug (отладка) среды разработчика выберем пункт Output(вывод). На экране появилось окно Outputс отображением результатов работы программы. Если не видна вся информация – воспользоваться полосами прокрутки окна Output.
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1085)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |