Реферат на тему модульное программирование

Обновлено: 30.06.2024

Модульное программирование и его особенности

Модульное программирование

  • Функциональные компоненты модульной программы могут быть написаны и отлажены порознь;
  • Модульную программу проще проектировать, легче сопровождать и модифицировать;
  • Становится проще процедура загрузки в оперативную память большой программы, требующей сегментации
  • Может увеличиться время исполнения программы;
  • Может увеличиться время компиляции и загрузки;
  • Может возрасти объем требуемой памяти;
  • Организация межмодульного взаимодействия может оказаться довольно сложной.

Основные и вспомогательные модули

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

Свойства модуля

  • Один вход и один выход. На входе программный модуль получает определенный набор исходных данных, выполняет их обработку и возвращает один набор выходных данных;
  • Функциональная завершенность. Модуль выполняет набор определенных операций для реализации каждой отдельной функции, достаточных для завершения начатой обработки данных;
  • Логическая независимость. Результат работы данного фрагмента программы не зависит от работы других модулей;
  • Слабые информационные связи с другими программными модулями. Обмен информации между отдельными модулями должен быть минимален;
  • Размер и сложность программного элемента в разумных рамках.

Основные характеристики программного модуля

  • Размер модуля – число содержащихся в нем операторов
  • Прочность модуля – мера его внутренних связей. Чем выше прочность модуля, тем больше связей скрыто от внешней по отношению к нему части программы и, следовательно, тем проще сама программа
  • Сцепление модуля – мера его зависимости по способу передачи данных от других модулей
  • Рутинность модуля – независимость от предыстории обращения к модулю
  • Связность модуля – мера прочности соединения функциональных и информационных объектов внутри одного модуля

Методы разработки при модульном программировании

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

Пример создания модуля

function Summ (Slag1, Slag2 : real) : real;

Summ := Slag1 + Slag2;

Метод восходящей разработки

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

Недостатки метода:

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

Метод нисходящей разработки

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

Достоинства метода: возможность нисходящего тестирования и комплексной отладки.

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

Структура модуля

Структура модуля

Объявления процедур и функций.

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

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

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

Алгоритмическим мышлением называется умение выстраивать логически безупречную последовательность действий для получения решения поставленной задачи. Многолетний опыт показывает, что для развития алгоритмического мышления в первую очередь требуется тщательно прорабатывать алгоритмы для небольших, но полезных программ, которые формируют базовые приемы программирования. Таких приемов достаточно немного, однако их обобщение, накопление, и умение осознанно применять при решении практических задач дает возможность научиться писать программы практически любому человеку [3].

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

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

Предмет исследования –языки программирования высокого уровня.

Целью работы является классификация языков программирования.

Для достижения поставленной цели предстоит решить ряд задач:

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

1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

  • смещение акцентов от частного к общему – переход от программирования мелких деталей к программированию более крупных компонентов;
  • совершенствование и развитие прикладного инструментария программиста – создание новых методологий, языков программирования и рабочей среды;
  • увеличение объема и сложности информационных и программных систем.

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

Таким образом, программированием (computer programming) называется процесс создания человеком-программистом информационной структуры - программы, целью которой является исполнение на компьютере.

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

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

  • цель – выполнение программы, которое приводит к решению поставленной задачи или публикация ее текста;
  • субъект – человек, осознанно ведущий процесс программирования, или другая программа (в случае автоматического синтеза программы, при этом процесс не является осознанным, а программа может быть выражена на языке нейрокомпьютера или не иметь материального носителя);
  • объект – текст, записанный на формальном языке [10].

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

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

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

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

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

1.1. Первое поколение

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

Файлы: 1 файл

модульное программирование.doc

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ И ИНФОРМАТИКИ

Выполнил: студент 3-го курса

к.ф-м.н. Ионисян А.С.

Введение

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

Процедурное программирование. Основная идея этого стиля – алгоритмизация процесса решения задачи и выбор наилучшего алгоритма (по расходу памяти или по быстродействию). Реализация этой идеи началась с 1957 года с появлением алгоритмических языков Fortran и затем Algol-60, когда все большее и большие число специалистов занялось решением достаточно сложных инженерных и научных задач. И нужен был стиль программирования максимально близкий к человеческому (математическому) стилю. При этом знание тонкостей архитектуры ЭВМ не требовалось. Программа на алгоритмическом языке (при наличии соответствующих трансляторов) должна была в идеале работать на ЭВМ любой архитектуры. Но это были программы прикладные. Разработку же системных программ (самих трансляторов, систем ввода-вывода) по-прежнему надо было делать на Ассемблере.

Модульное программирование. Здесь основная идея заключалась в том, чтобы "спрятать" данные и процедуры внутри независимых программных единиц - модулей. Эту идею впервые реализовал Н. Вирт в алгоритмическом языке Modula (1975-1979 годы), а затем "подхватили" и остальные, распространенные в то время языки программирования. Например, известные системы программирования Turbo Pascal и Turbo С.

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

Объектно-ориентированное программирование. С середины 80-х годов объем исходного программного кода перешел рубеж в 100 000 строк. Нужно было сделать не случайное объединение данных и алгоритмов их обработки в единое целое, а - смысловое. То есть необходимо было создать модульное программирование нового уровня, когда основной акцент делается на смысловую связь структур данных и алгоритмов их обработки. Сейчас практически все основные языки программирования (их более 100, в том числе такие распространенные, как Object Pascal, C++, Smalltalk) базируются на этой идее, а предком их является язык Simula, созданный еще в 1960 году.

Обобщенные технологии разработки приложений. Идеология объектно-ориентированного программирования породила CASE-технологии разработки и сборки программ на основе уже известных программных моделей, содержащих интерфейсы и прототипы (шаблоны — template) данных: COM (Component Object Model), STL (Standard Template Library), ATL (Active Template Library). Все эти новшества поддерживают визуальные среды разработки, например, такие известные, как Visual C++, Borland C++ Builder, Borland Delphi.

Теперь подробно рассмотрим технологию модульного программирования.

Цель модульного программирования

Приступая к разработке каждой программы, следует иметь в виду, что она, как правило, является большой системой, поэтому надо принять меры для ее упрощения. Для этого такую программу разрабатывают по частям, которые называются программными модулями [1, 2]. А сам такой метод разработки программ называют модульным программированием [3]. Программный модуль - это любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт, пригодный для использования в описаниях процесса. Это означает, что каждый программный модуль программируется, компилируется и отлаживается отдельно от других модулей программы, и тем самым, физически разделен с другими модулями программы. Более того, каждый разработанный программный модуль может включаться в состав разных программ, если выполнены условия его использования, декларированные в документации по этому модулю. Таким образом, программный модуль может рассматриваться и как средство борьбы со сложностью программ, и как средство борьбы с дублированием в программировании (т.е. как средство накопления и многократного использования программистских знаний).

Основные характеристики программного модуля

Не всякий программный модуль способствует упрощению программы [2]. Выделить хороший с этой точки зрения модуль является серьезной творческой задачей. Для оценки приемлемости выделенного модуля используются некоторые критерии. Так, Хольт [4] предложил следующие два общих таких критерия:

    • хороший модуль снаружи проще, чем внутри;
    • хороший модуль проще использовать, чем построить.

    Майерс [5] предлагает для оценки приемлемости программного модуля использовать более конструктивные его характеристики:

      • размер модуля;
      • прочность модуля;
      • сцепление с другими модулями;
      • рутинность модуля (независимость от предыстории обращений к нему).

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

      Прочность модуля - это мера его внутренних связей. Чем выше прочность модуля, тем больше связей он может спрятать от внешней по отношению к нему части программы и, следовательно, тем больший вклад в упрощение программы он может внести. Для оценки степени прочности модуля Майерс [5] предлагает упорядоченный по степени прочности набор из семи классов модулей. Самой слабой степенью прочности обладает модуль, прочный по совпадению. Это такой модуль, между элементами которого нет осмысленных связей. Такой модуль может быть выделен, например, при обнаружении в разных местах программы повторения одной и той же последовательности операторов, которая и оформляется в отдельный модуль. Необходимость изменения этой последовательности в одном из контекстов может привести к изменению этого модуля, что может сделать его использование в других контекстах ошибочным. Такой класс программных модулей не рекомендуется для использования. Вообще говоря, предложенная Майерсом упорядоченность по степени прочности классов модулей не бесспорна. Однако, это не очень существенно, так как только два высших по прочности класса модулей рекомендуются для использования. Эти классы я рассмотрю подробнее.

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

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

      В модульных языках программирования как минимум имеются средства для задания функционально прочных модулей (например, модуль типа FUNCTION в языке ФОРТРАН). Средства же для задания информационно прочных модулей в ранних языках программирования отсутствовали. Эти средства появились только в более поздних языках. Так в языке программирования Ада средством задания информационно прочного модуля является пакет [6].

      Сцепление модуля - это мера его зависимости по данным от других модулей. Характеризуется способом передачи данных. Чем слабее сцепление модуля с другими модулями, тем сильнее его независимость от других модулей. Для оценки степени сцепления Майерс предлагает [5] упорядоченный набор из шести видов сцепления модулей. Худшим видом сцепления модулей является сцепление по содержимому. Таким является сцепление двух модулей, когда один из них имеет прямые ссылки на содержимое другого модуля (например, на константу, содержащуюся в другом модуле). Такое сцепление модулей недопустимо. Не рекомендуется использовать также сцепление по общей области - это такое сцепление модулей, когда несколько модулей используют одну и ту же область памяти. Такой вид сцепления модулей реализуется, например, при программировании на языке ФОРТРАН с использованием блоков COMMON. Единственным видом сцепления модулей, который рекомендуется для использования современной технологией программирования, является параметрическое сцепление (сцепление по данным по Майерсу [5]) - это случай, когда данные передаются модулю либо при обращении к нему как значения его параметров, либо как результат его обращения к другому модулю для вычисления некоторой функции. Такой вид сцепления модулей реализуется на языках программирования при использовании обращений к процедурам (функциям).

      Рутинность модуля - это его независимость от предыстории обращений к нему. Модуль называется рутинным, если результат (эффект) обращения к нему зависит только от значений его параметров (и не зависит от предыстории обращений к нему). Модуль называется зависящим от предыстории, если результат (эффект) обращения к нему зависит от внутреннего состояния этого модуля, изменяемого в результате предыдущих обращений к нему. Майерс [5] не рекомендует использовать зависящие от предыстории (непредсказуемые) модули, так как они провоцируют появление в программах хитрых (неуловимых) ошибок. Однако такая рекомендация является неконструктивной, так как во многих случаях именно зависящий от предыстории модуль является лучшей реализаций информационно прочного модуля. Поэтому более приемлема следующая (более осторожная) рекомендация:

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

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

        3. Проектирование модуля

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

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

        Один из способов решения сложной задачи – это разбиение её на части. В этом состоит метод нисходящего программирования.

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

        Объявление и определение функции. Вызов функции.

        Объявление(написание прототипа) любой функции имеет следующий вид:

        тип-результата имя-функции (спис.форм.перем.)

        Можно задать класс пам(обл видимости ф-ии) (пр:[класс] тип…)

        .extern-глобальная видимость во всех модулях прогр.(умолч.)

        .static-видимость только в пределах модуля, в кот определ ф-ия

        Тип возвр. знач может быть люб кроме масс и ф-ии. Но может быть ук. на мА или ф-ию. Если ф-ия не возвр ни какого рез, то указывается тип void.

        Имя ф-ии – это идентиф задаваемой программистом. Список форм парам: (тип имя_пар1, тип имя_пар2) Опред величины , кот требуется передать в ф-ию при её вызове. Может быть пустым. Тело ф-ии – это либо сост опер., либо блок с описателем перем, масс и т.д. Тело ф-ии не может содерж в себе определ др ф-ий. Из всякой ф-ии возможно обращение к др. ф. Однако они всегда явл внеш по отн к вызыв-ей ф-ие.др ф-ий. ызове. ей мере 2 поля: для хранения данных, для ук.

        имя-функции (список фактич. перем.) В объяв. опред и в вызове одной и той же ф-ии должно соблюдаться правило соотв типов и порядка следования парам.

        Обмен информацией между функциями. Рекурсивные функции.

        С пом. глоб. перем.

        Через возвращение ф-ией значения (оператор return).

        - return выражение (в этом случ. знач. будет присвоено ф-ии в её типе)

        - return (завершает выполн. ф-ии и передаёт вып. след. опер-у в вызыв-ей ф-ии)

        Три способа передачи пар-ра в ф-ию:

        а) по значению ( оп-ры работают только с копиями знач-ий фактич-их парам)

        б) по адресу (в стек заносятся копии адресов арг-тов, ф-ия осущ-ая доступ к этим адр может изм исх знач)

        в)по ссылке (в ф-ию перед адр указ-ого при вызове парам) обозн int&z

        Рекурс ф-ия – ф-ия, кот вызывает саму себя. Такая рек. наз-ся прямой. Косвенная рек.- когда 2 и более ф-ий вызывают др друга. Недостатки: расход времени и памяти на повторные вызовы ф-ий и передачу ей копий парам, а также опестн. переполн стека.

        Библиотечные функции. Функции для работы в графическом режиме.

        Любая прогр на Си содержит обращение к стандартной библ. Кроме того программист может созд собств библ. Их подключ с пом. директивы include (.h – header – заголовок).

        На стадии предпроцессорной обр.прогр. происходит подстановка прототипов перед осн. ф-ией, после чего компилятор проверяет правильность обращения к ф-иям.

        Сами библ. ф-ий хранятся в скомпил.виде и подлюч. к осн. прогр. на этапе компан-ки.

        Библ. ф-ий можно разбить на группы по их назнач.:ввод/выв;матем.ф-ии;для управл.графич системой.

        Функции для работы в графическом режиме.

        Монитор ПК может работать в одном из 2-х режимов: тестовом и графич-ом. Наим. элем-ом изобр.яв-ся пиксель. В Си име-ся граф. библ. graphics.h. Она сод. большое кол-во ф-ий для: упр. цветом, созд.изобр.различ.формы, для вывода граф.текст.сообщ.,для упавл.курсором. Настройка этих ф-ий на работу осущ-ся путём подл.граф.драйвера. Граф.драйверы нах-ся в отдельных файлах с расш .BGI в каталоге BGI(Borl.Graph.Interf.).

        Граф.ф-ии исп.понятие указателя текущ. позиции. Этот указатель идентиф. выбранный

        пиксель и хар-ся парой цел.чмсел(гор.и верт.коорд.).

        Иниц.гр.режима осущ. ф-иёй initgraph(&gd,&gm, «путь к BGI файлам). gd-гр.драйв.,gm-гр.режим.

        Для обр.ошиб.при работе с гр-ой исп.ф-ия: graphresult().Эта ф-ия возвр. код последней исп.ф-ии. grOk=0

        Цвет в гр.режиме Си имеет свой номер и буквенное обозн. Фон-setbkcolor(цв),цв лин. и симв.-setcolor(цв).

        Характер и толщина лин.геом. объектов-setlinestyle(вид,образец,толщина)

        Стиль закраски к-то области-setfillstyle(тип,закраска,цв)

        Определ.макс.зная.по x (getmax x()) и по y (getmax y()).

        Текущ корд. указат.курсора(get x(),get y()).

        Перемещение указат-ля позиции moveto(x,y);moverel(dx,dy).

        Установка парам. по умолч.-graphdefault();

        Вывод точки на экран-putpixel(x,y,цв).

        Вывод лин.-setwritemode(режим). 0-COPY_PUT,1-XOR_PUT. Если 0,то лин.затирает то,что было на экране.

        Ломан.лин.-drawpoly(кол-во вершин,указатель на массив целых)

        Дуга эллипса (x,y,нач.угол,кон.уг,rx,ry)

        Закр.круг pieslice (x,y,нач.угол,кон.уг,r)

        Закр. сектор эллипса sector(x,y,нач.угол,кон.уг,rx,ry)

        Закр.произв.замкн.обл. floodfill(x,y,граница(должен совп.с цв контура)

        В ПК память представляется разделён.насегменты. Исп.прогр-а сост.из:

        1)Сегмента кода, в кот.расположены машинные команды.

        2)Сегмент данных, в кот расп. глоб.перемен. и константы.

        3)Сегмент стека, в кот расположены локал.перем.

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

        Каждая перем. имеет оперд. тип. Кроме того она имеет класс памяти. Существует 4 класса памяти: 1)extern(внеш.);2)auto(автоматич-ий);3)static(статический); 4)register(регистровый).

        Класс пам.опред-ся местом её описания и ключевым словом.

        1)Область видимости (дей-я перем-х)

        2)Время жизни пер.,т.е. продолж-ость её хранения в памяти.

        В Си может быть 3 области видимости:

        1)в пределах файла

        3)в пр.прототипа ф-ии

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

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

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

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

        Регистровая пам.выделяется под локал. перем. Это самый быстрый и самый маленький вид памяти. Эту пам. исп. не реком., т.к. ей распоряжается компил.Размещение-регистр.пам.;обл.действ.-блок;вр.жизни-блок;иниц-нет.

        Указатели: понятие, инициализация.

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

        Объявление ук.- (тип*имя перем.). Т.е. ук. не явл. самост. типом, он всегда связан с к-либо др. конкр. типом.

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

        Значение ук. перед его исп. обяз.должно быть иниц-но(т.е. присвоено нач.знач.)

        присвоение ук. адреса сущ-его объекта

        int a=5 int*pti=&a int*p=pti

        Ук-ям можно присв. зн-я адресов объектов только того типа, кот они описаны: int b[10]; int*t=6?//присв. адр. начала масс-а

        Присв. нужного знач.

        ptf=NULL (это значит что отсутств. конкрет. адр. ссылки.

        Выделение участка динам. пам. и присв. её адр. перем. Доступ к выделен. участ.динам.пам.произв.только ч/з ук-и.

        Для работы с динам. пам. примен.опер-ии:NEW(для выделения пам.),delete(для освобожд.пам.)

        1)int*n=new int(выделяется достат. для размещ. величины типа int учасика динам. пам. и записывается адр. начала этого участка в перем. n).

        2) int*m=new int(10);(производится иниц. выделен. динам. пам. и запис. 10)

        3) int*q=new int[10];(выделяется пам.под 10 величин типа int и записывается адрес начала этого участка в перем. q,кот может трактоватся как имя массива.

        Чтобы освободить пам.

        …delete n; 2)…delete m; 3)…delete [];

        Операции с указателями.

        Оп. разадресации(*)-косвенное обращение к объекту. Оп.разадр-ии предназначены для доступа к величине адрес кот хранится в ук. Эту опер. можно исп. как для получ. так и для изменен. знач. величины.

        Похожие страницы:

        Модульное программирование (4)

        Модульное программирование (5)

        Программирование (2)

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

        Технология модульного программирования

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

        Программирование в интернете

        . 3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ 3.1. Выбор языка программирования Приступая к созданию сайта, можно . , которые резко облегчают процесс программирования и используют объектную модель и . Н.Ф. Катанова. 2001.- 251 с. Модульное программирование на PHP или как написать .

        Читайте также: