Что значит структура программы

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

Скоро, однако, выяснилось, что по крайней мере для вычислений по обычным алгебраическим формулам (а на решение задач подобного рода и были в основном ориентированы первые компьютеры) выполнение этой работы легко поддается формализации, т.е. может производиться по определенному алгоритму, что и позволило фактическое ее выполнение поручить самому компьютеру с помощью специальной программы, называемой транслятором. Так появился один из первых алгоритмических языков — его название FORTRAN (сокращение слов FORmula TRANslation) отражает основное назначение этого языка. При его использовании программисту достаточно было выписать соответствующую последовательность формул с соблюдением некоторых формальных требований, предъявляемых языком и связанных с необходимостью ввода программы в память машины в целях ее трансляции.

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

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

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

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

В связи с массовым выпуском компьютеров, расширением области решаемых задач и круга пользователей ситуация резко изменилась. Теперь много программ или целых программных комплексов предназначено не для решения отдельной задачи, а для широкого и систематического применения в различных организациях как рабочего инструмента в управлении технологическими процессами или объектами, в информационно-справочном обслуживании, в системах резервирования билетов на транспорте, в автоматизированных системах обучения и т.п. Ясно, что изготовление таких программ заново каждый раз, как только в них возникает необходимость, приводило бы к слишком большим непроизводительным затратам общественного труда, финансовых и материальных ресурсов. Отсюда и возникло понятие «программное изделие» или «программный продукт» — программа, изготовленная в одном коллективе, отчуждается от него и передается для использования другим коллективам, точно также, как и обычное промышленное изделие (станок, компьютер, автомашина, самолет и т.д.).

Как работает язык программирования(Компилятор)? Основы программирования.

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

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

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

Читайте также:
Программа формат фактори как пользоваться

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

Одна из трудностей получения надежных программ связана со спецификой самого компьютера, в частности его памяти. Как известно, и программа и обрабатываемые данные хранятся в одной и той же памяти машины и записываются в ней в одинаковой форме — в виде машинных слов, представляющих собой последовательности цифр 0 и 1. При этом аппаратура обычно не анализирует то или иное машинное слово, а интерпретирует его в соответствии с тем, где это слово используется. Так что одно и то же машинное слово может интерпретироваться и как команда (если это слово будет выбрано в устройство управления), и как обрабатываемое данное, например вещественное число (если это же слово будет выбрано в арифметическое устройство в качестве аргумента арифметической операции). Поэтому при составлении машинной программы надо внимательно следить за размещением команд и данных в памяти машины, чтобы не заставить машину проинтерпретировать какое-либо данное как команду, и наоборот.

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

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

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

В связи с этим паскаль предусматривает ряд мер организационного, «структурного» характера, для того чтобы предоставить транслятору возможность проконтролировать корректность использования в программе тех или иных программных объектов и как можно раньше — желательно еще на этапе трансляции — выявить допущенные ошибки подобного рода.

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

По этой же причине в паскале предусмотрены меры, исключающие возможность выработки неоднозначно получаемого результата. Так, если / — целочисленная переменная, то паскаль запрещает присваивать ей значение, вычисленное в виде вещественного числа. Например, при выполнении оператора присваивания вида i := А (где А — выражение, задающее правило вычисления вещественного значения) в случае значения А = 2.5 переменная i может получить либо значение 2, либо значение 3 в зависимости от точности вычисления значения А, что может привести к совершенно разным окончательным результатам. Поэтому паскаль требует, чтобы подобного рода преобразования были заданы в программе в явном виде, для чего в языке предусмотрены специальные стандартные функции.

Читайте также:
Какая программа предназначена для создания текстовых эффектов wordart ms excel equation ms word

Заметим, что необходимость четкого описания всех используемых программных объектов помогает и программисту избежать многих возможных ошибок в программе. С одной стороны, это является стимулом к тому, чтобы перед непосредственным написанием программы глубже понять суть решаемой задачи, заранее тщательно продумать алгоритм ее решения и выбрать наиболее подходящие программные объекты, с использованием которых будет формулироваться алгоритм. Такое четкое описание объектов значительно упрощает само написание текста программы и снижает вероятность допущения в ней ошибок. К тому же без этой предварительной работы очень мало шансов получить правильную программу. А для того чтобы легче было использовать эту информацию не только транслятору и автору программы, но и другим лицам (например, в целях проверки правильности программы или ее модификации), паскаль требует четкой структуризации программы, чтобы та или иная информация находилась в строго определенном для нее месте.

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

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

Допустим, надо составить программу для некоторой обработки ста задаваемых вещественных чисел, в том числе и их суммирования. Если не прибегать к структурам данных, то придется поступить следующим образом: ввести в употребление 100 переменных типа real, каждой из которых с помощью оператора ввода присвоить значение, равное одному из заданных чисел, а затем найти сумму s значений этих переменных. В этом случае при составлении программы на паскале придется придумать 100 различных имен для этих переменных, записать в программе 100 операторов ввода, а затем записать оператор присваивания вида

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

Между тем заданную последовательность вещественных чисел удобно объединить в такую структуру данных, как массив, представляющий собой перенумерованную последовательность отдельных его компонент, в данном случае вещественных чисел. Если ввести в употребление переменную X, значением которой и будет эта упорядоченная последовательность чисел, то для ссылки на любой элемент этой структуры можно использовать запись вида X[i], которая при различных значениях переменной / будет обозначать разные компоненты этого массива. В этом случае основную часть программы — ввод и суммирование заданной последовательности чисел — можно записать в очень компактном и простом виде: s : — 0 ;

for i:=1 to 100 do

begin read(X[i]); s:=s+X[i] end

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

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

Источник: bstudy.net

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

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

Основные характеристики программы:

  • точность полученного результата;
  • время выполнения программы;
  • объем требуемой памяти;

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

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

Читайте также:
Рейтинг программ первого канала

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

Размер программы на ТР имеет предел. Редактор текстов и компилятор позволяют обрабатывать программы и библиотечные модули объемом до 64 Кбайт. Если программа требует большего количества памяти, следует использовать библиотечные модули (.TPU-файлы) или оверлейные структуры. Для Delphi явных ограничений нет, т. к. проблема решается использованием модулей.

Структура консольных (программ, написанных с использованием процедур Read, Readln и Write, Writeln) и оконных приложений имеет как общие черты, так и различия.

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

Действия представляются операторами языка, данные вводятся посредством описаний и определений.

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

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

Блок, который не входит ни в какой другой блок, называется глобальным. Если в глобальном блоке находятся другие блоки, они называются локальными.

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

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

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

Пример.

Program MyProgr (Input, Output);

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

  • раздел подключаемых библиотечных модулей (Uses);
  • раздел описания меток (Label);
  • раздел описания констант (Const);
  • раздел определения типов данных (Type);
  • раздел описания переменных (Var);
  • раздел описания процедур (Procedure) и функций (Function);
  • раздел операторов.

Структура программы выглядит следующим образом:

Пример..

Program < имя >(Input, Output);

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

Источник: studfile.net

Язык С: структура программы

Язык С: структура программы

Программа на языке C состоит из нескольких частей. Вот основные из них:

  • команды препроцессора;
  • функции;
  • переменные;
  • операторы и выражения;
  • комментарии.

Взгляните на простой код, который будет печатать слова “Hello World”:

#include int main() < /* моя первая программа на языке C */ printf(«Hello, World! n»); return 0; >

Рассмотрим каждую часть приведенной выше программы:

  • Первая строка программы #include — это команда препроцессора, которая указывает компилятору языка C включить файл stdio.h, прежде чем приступить к компиляции.
  • Следующая строка int main() — это главная функция, с которой начинается выполнение программы.
  • Следующая строка /*…*/ будет проигнорирована компилятором. Она потребовалась для добавления дополнительных комментариев в программу. Поэтому такие строки называются комментариями в программе.
  • Следующая строка printf(…) — это еще одна функция, доступная в C, которая вызывает вывод на экран сообщения “Hello, World!”.
  • Следующая строка return 0 завершает функцию main() и возвращает значение 0 .

Компиляция и выполнение программы

Теперь посмотрим, как сохранить исходный код в файле, а также как его скомпилировать и запустить:

  • Откройте текстовый редактор и добавьте приведенный выше код.
  • Сохраните файл под именем hello.c
  • Откройте командную строку и перейдите в каталог, где вы сохранили файл.
  • Введите gcc hello.c и нажмите Enter, чтобы скомпилировать код.
  • Если в коде нет ошибок, в командной строке произойдет переход к следующей строке; система создаст исполняемый файл a.out.
  • Теперь введите a.out , чтобы выполнить программу.
  • На экране появится сообщение “Hello World”.

$ gcc hello.c
$ ./a.out
Hello, World!

Убедитесь, что компилятор GCC находится в вашем маршруте и что вы запускаете его в каталоге, содержащем исходный файл hello.c.

  • 5 лучших бесплатных текстовых редакторов для Windows
  • C++ и Java: сравнительный анализ
  • 5 вещей, которые следует учесть перед тем, как создать свой бизнес на основе мобильного приложения

Источник: nuancesprog.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru