Similar presentations:
Основы алгоритмизации и программирования на С/Си++
1.
Основы алгоритмизациии программирования
на С/Си++
2.
ОСНОВНЫЕ ОПРЕДЕЛЕНИЯАлгоритм — конечный набор правил, который
определяет последовательность операций для решения
конкретного множества задач.
Алгоритмический язык — формальный язык,
используемый для записи, реализации или изучения
алгоритмов.
Язык программирования — формальная знаковая
система, предназначенная для записи компьютерных
программ.
Программа — совокупность данных и команд,
предназначенных
для
реализации
определённого
алгоритма.
Программирование — научная и практическая
деятельность по созданию программ.
2
3.
3• Язык
программирования
определяет
набор
лексических, синтаксических и семантических правил,
задающих внешний вид программы и действия,
которые выполнит компьютер под её управлением.
• Синтаксис устанавливает правила построения всех
элементов языка и описывает структуру программы
как
набор
символов
(обычно
говорят:
«безотносительно к содержанию»).
• Семантика
определяет
смысл
и
правила
использования каждой синтаксической конструкции.
• Любой
язык
программирования
является
алгоритмическим
языком,
но
не
всякий
алгоритмический язык пригоден для использования в
качестве языка программирования.
4.
4• Машинный код.
Программа, непосредственно выполняемая процессором
компьютера, представляет собой последовательность нулей и
единиц, одни участки которой кодируют команды, а другие —
данные. Подобная последовательность называется машинным
кодом.
Язык ассемблера представляет собой удобную для
восприятия человеком форму записи машинных команд.
Между машинным кодом и кодом на языке ассемблера
существует взаимно однозначное соответствие. Программа,
которая переводит текст с языка ассемблера в машинный код,
называется ассемблером. Для каждого процессора имеется свой
набор машинных команд и, следовательно, свой ассемблер.
Для написания программы требуется иметь полный
контроль над процессором.
5.
5• Чаще всего на первый план выходят такие задачи, как
быстрое написание читаемого и переносимого кода. Для этих
целей были созданы языки высокого уровня.
• Язык программирования высокого уровня — язык
программирования, разработанный для быстроты и удобства
использования
программистом.
Основная
черта
высокоуровневых языков — это абстракция, то есть введение
смысловых конструкций, кратко описывающих такие
структуры данных и операции над ними, описания которых на
машинном коде (или другом низкоуровневом языке
программирования) очень длинны и сложны для понимания.
• Программа, написанная на языке высокого уровня, состоит
из инструкций (операторов). Каждый оператор языка
высокого уровня соответствует последовательности из
нескольких низкоуровневых инструкций (машинных команд).
6.
6Парадигмы программирования.
• Языки высокого уровня, предназначенные для решения
сходных задач сходными методами принято разделять на
группы, называемые парадигмами.
• Парадигма программирования — это совокупность идей и
понятий, определяющих стиль написания программ. В рамках
каждой парадигмы существуют свои соглашения о том, какие
подходы применяются при решении различных типов задач,
как оформлять программный код и т. д.
• Все языки программирования делятся на две группы:
декларативные и императивные.
7.
7• Программа
на
императивном
языке
программирования с математической точки зрения
представляет собой общее решение поставленной задачи,
иными словами, ответ на вопрос «как делать?». Это
последовательность команд, которые должен выполнить
исполнитель.
• Программа
на
декларативном
языке
программирования
является
сочетанием
формализованной в рамках языка программирования
задачей и всех необходимых для её решения теорем,
проще говоря, ответ на вопрос «что делать?».
8.
8• В рамках императивной парадигмы существуют
несколько подходов к разбиению задач на подзадачи;
основные из них: процедурное программирование и
объектно-ориентированное программирование.
• Структурное программирование — методология
разработки программного обеспечения, в основе которой
лежит представление программы в виде иерархической
структуры блоков. В соответствии с данной методологией
любая
программа
представляет собой
структуру,
построенную из трёх типов базовых конструкций (рис.):
9.
9Рис. Базовые конструкции структурного
программирования:
а) последовательное исполнение;
б) ветвление;
в) цикл с предусловием
а)
б)
в)
10.
10последовательное
исполнение
—
однократное
выполнение операций в том порядке, в котором они записаны в
тексте программы;
— ветвление — однократное выполнение одной из двух или
более операций, в зависимости от выполнения некоторого
заданного условия;
— цикл — многократное исполнение одной и той же операции
до тех пор, пока выполняется некоторое заданное условие.
—
• В программе базовые конструкции могут быть вложены друг
в друга произвольным образом.
• Фрагменты программы, представляющие собой логически
целостные
вычислительные
блоки
(в
том
числе,
повторяющиеся фрагменты) могут оформляться в виде так
называемых подпрограмм (процедур или функций).
11.
11• Трансляция: интерпретация и компиляция.
Есть два способа выполнения программы
компьютером:
она
может
быть
подвергнута
компиляции или интерпретации.
В простейшем случае интерпретатор читает
исходный текст программы по строкам, выполняет
инструкции, описанные в этой строке, и затем
переходит к следующей. Так, например, работали
ранние версии языка Basic. В языках типа Java
исходный текст программы сначала конвертируется в
промежуточную форму (байт-код), а затем уже
интерпретируется при выполнении программы.
12.
12Компилятор конвертирует программу в объектный
код, то есть транслирует исходный текст программы в
форму, более пригодную для непосредственного
выполнения компьютером. Объектный код также называют
двоичным или машинным кодом; он зависит от того, для
какой платформы (какого процессора) производится
компиляция программы. В общем случае интерпретируемая
программа выполняется медленнее, чем скомпилированная.
Программа,
написанная
на
любом
языке
программирования, может как компилироваться, так и
интерпретироваться, однако многие языки изначально
созданы для выполнения преимущественно одним из этих
способов. При разработке языка С/С++ его конструкции
оптимизировались для компиляции.
13.
13• Трансляция — преобразование программы,
представленной на одном языке программирования, в
программу на другом языке, в определённом смысле
равносильную первой.
• Таким образом, компилятор — это транслятор,
который преобразует программы в машинный язык, а
интерпретатор — это транслятор, осуществляющий
пооператорную
(покомандную)
обработку
и
выполнение исходной программы.
14.
14• Под компиляцией понимают процесс, при котором
содержимое текстового файла преобразуется в
исполняемый
машинный
код,
понимаемый
процессором компьютера. Однако компилятор создает
не готовую к исполнению программу, а только
объектный код (файл с расширением *.obj). Этот код
является промежуточным этапом при создании готовой
программы.
15.
Дело в том, что создаваемая программа можетсодержать функции стандартных библиотек языка
С++, реализации которых описаны в объектных
файлах библиотек.
Например, в программе используется функция printf()
стандартной библиотеки «stdio.h». Это означает, что
объектный файл с расширением .obj будет содержать
лишь инструкции по вызову данной функции, но код
самой функции в нем будет отсутствовать.
Для того чтобы итоговая исполняемая программа
содержала все необходимые реализации функций,
используется компоновщик объектных кодов.
16.
Компоновщик – это программа, которая объединяетв единый исполняемый файл объектные коды
создаваемой
программы,
объектные
коды
реализаций библиотечных функций и стандартный
код запуска для заданной операционной системы.
В итоге и объектный файл, и исполняемый файл
состоят из инструкций машинного кода. Однако
объектный файл содержит только результат
перевода на машинный язык текста программы,
созданной программистом, а исполняемый файл –
также и машинный код для используемых
стандартных библиотечных подпрограмм и для кода
запуска.