Логические основы алгоритмизации 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Логические основы алгоритмизации



Базовые логические операции: конъюкция (логическое умножение), дизъюнкция (логическое сложение), отрицание (инвертирование). Круглые скобки меняют порядок выполнения операций (сначала выполняются действия в скобках). Также имеются операции отношения <, >, <=, >=, =,!=. Операции сравнения имеют наименьший приоритет.

 

Эволюция языков программирования. Классификация

Языков программирования. Понятие системы программирования

Поколения Язык программирования Характеристика
Первое Машинные Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знания архитектуры ЭВМ
Второе Ассемблеры, макроассемблеры Более удобны для использования, но по-прежнему машиннозависимы
Третье Языки высокого уровня Мобильные, человеко-ориентированные, проще в освоении
Четвертое Непроцедурные, объектно-ориентированные, языки запросов, параллельные Ориентированые на непрофессиональных пользователей и на ЭВМ с параллельной архитектурой
Пятое Языки искуственного интеллекта, экспертных систем и баз знаний, естественные языки Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками

 

Фактор Характеристика Группы Примеры ЯП
Уровень ЯП Степень близости ЯП к архитектуре ЭВМ Низкий Автокод, ассемблер
Высокий Fortran, ADA, C, Pascal и др.
Сверхвысокий Сетл
Специализация ЯП Потенциальная или реальная область применения Общего назначения (универсальные) Fortran (инженерные расчеты), Cobol (коммерческие задачи), Refal, Lisp (символьная обработка), Modula, ADA (программирование в реальном времени)
Специализированные  
Алгоритмичность (процедурность) Возможность абстрагироваться от деталей алгоритма решения задачи. Алгоритмичность тем выше, чем точнее приходится планировать порядок выполняемых задач Процедурные Ассемблер, фортран, паскаль, бэйсик, ада
Непроцедурные Пролог, Langin

 

Элементы языков программирования

Алфавит — совокупность символов, отоборажаемых (кроме непечатных) на экранах и устройствах печати, или вводимых с клавиатуры.

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

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

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

 

Разделы программы

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

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

3. Раздел оборудования — это описание типа ЭВМ, процессора, требований к оперативной и внешней памяти, существующих с точки зрения выполнимости программы;

4. Раздел данных — идентефикация. Описание переменных, использумых в программе, и их типов;

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

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

 

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

Признак классификации Типы
Набор исходных языков Одноязыковые
Многоязыковые
Возможности расширения Открытые
Замкнутые
Трансляция Компиляция
Интерпретация

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

 
 
 
 
 
 
 
 
 
 
Результат
Исходные данные
Выполнение
Абсолютный модуль
Библиотека программ пользователя
Загрузчик
Загрузочный модуль
Библиотека системных программ
Компоновщик (редактор связей)
 
 
 
 
 
 
Объектный модуль
Транслятор (компилятор)
Расширенный модуль
Препроцессор
Исходный модуль
Текстовый редактор
Исходный текст
Схема обработки прикладных программ в среде системы программирования

 

 
Ввод

 

 

 
Препроцессинг

 

Трансляция (компиляция)

 

Этапы:

1. Ввод — это этап обработки. Программа на исходном коде готовится с помощью текстовых редакторов и в виде текстового файла поступает на вход транслятора;

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

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

4. Компиляция — многоступенчатый процесс, включающий следующие фазы:

1. Синтаксический анализ — проверка правильности конструкций, использованных при подготовке текста;

2. Семантический анализ — выявление несоответствий типов и структур переменных, функций и процедур;

3. Генерация объектного кода.

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

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

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

 

Библиотеки подпрограмм

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

1. Если разные программы используют одну и ту же динамическую библиотеку, то библиотека загружается в память только один раз. Таким образом экономится системная память;

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

 

Исходный код

Статическая библиотека
Компилятор
Откомпилированный код
Компоновщик
Исполняемый модуль
Компоновщик
Статическая библиотека
Исполняемый модуль
 
 
 
 
 
 
Динамическая структура
Динамическая структура

 

 


 
Внешнее описание

 

 

Программирование на языке С



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 845; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.130.31 (0.052 с.)