Programmirovanie_-_1_kurs / Лекции (опорный конспект)
.pdf1.6.Подготовка программы к выполнению
1.6.1.Компиляторы
•Компилятор – транслятор, преобразующий код программы на языке высокого уровня в эквивалентный код на машинном языке (либо, на языке виртуальной машины)
Исходный код программы
____________ |
____________ |
____________ |
____________ |
____________ |
____________ |
____________ |
____________ |
____________ |
____________ |
Сообщения об ошибках в коде
Компилятор
Объектные |
|
|
модули |
|
|
|
|
Исполнимый |
Obj |
|
файл |
|
|
|
|
Компоновщик |
Exe |
|
|
|
Obj |
|
|
11
1.6.2.Интерпретаторы
•Интерпретатор – транслятор, осуществляющий пооператорную (покомандную) обработку и выполнение исходной программы
–Простой
–Компилирующего типа
Исходный код программы
____________ |
____________ |
____________ |
____________ |
____________ |
Оператор |
|
Выполнение |
программы |
Интерпретатор |
|
|
|
|
|
|
|
Сообщения об ошибках в коде
12
1.7.Технологии программирования
•Технология программирования – это совокупность методов и средств разработки (написания) программ и порядок применения этих методов и средств
–Структурное программирование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков – модулей.
–Объектно-ориентированное программирование – программирование, основанное на представлении предметной области в виде системы
взаимосвязанных классов и их реализаций – объектов.
–Визуальное программирование – реализация методологии ООП с применением графических средств, обеспечивающих построение пользовательских интерфейсов.
–Логическое программирование – программирование, основанное на автоматическом доказательстве теорем. Логическое программирование исходит из того, что компьютер должен уметь работать по логическим построениям, присущим человеку.
–Функциональное программирование – методология программирования, основанная на создании совокупностей функций. Вычисления начинаются с вызова некоторой функции, которая в свою очередь вызывает функции, входящие в ее определение и т. д. в соответствии с иерархией определений и структурой условных предложений.
13
1.7.1. Структурное программирование
•функция (процедура) должна иметь один вход и один выход
•функция должна решать самостоятельную задачу
•функция может вызывать другую функцию
•работа функции не должна зависеть
–от входных данных;
–от того, какой функции предназначены ее выходные данные;
–от предыстории вызовов функции;
•функция должна возвращать управление той функции, которая ее вызывала;
•модульность
•иерархическое
строение
•нисходящая
разработка
14
1.7.2. Пример структурной программы
f(a,b) =
a2 + b
a + b2
ab
13
2 8
7 -3
Главный алгоритм
Алгоритм расчета значения функции
f(a,b) = |
a2 |
+ b |
= |
f |
2 |
(a,b) |
|
a + b2 |
f2 |
(b,a) |
|||||
|
|
Алгоритм расчета значения функции f2 (x, y) = x2 + y
15
2. Язык С/С++. Основные понятия
•Язык С
–язык
программирования общего назначения
–является
алгоритмическим языком высокого уровня
–создан во второй половине 70-х годов Брайаном Керниганом и Деннисом Ритчи
•Язык С++
–создан Бьерном Страуструпом в начале 80-х годов
–расширяет возможности языка С:
•поддержка объектноориентированного программирования
•новые типы данных
•механизм обработки исключительных ситуаций
•операторы управления свободной памятью
•дополнения к стандартной библиотеке
•пространства имен
16
2.1.Алфавит языка С++
2.2.Лексемы языка С++
•Алфавит:
–прописные и строчные латинские буквы
–знак подчеркивания
–арабские цифры от 0 до 9
–пробельные символы (пробел, табуляция, переход на новую строку)
–специальные символы
•Лексемы языка:
–идентификаторы
–ключевые слова
–константы
–знаки операций
–комментарии
" |
{ } |
, |
| |
[ ] |
( ) |
' |
: |
? |
< |
= |
> |
+ |
- |
/ \ |
% |
* . |
|
! |
& |
# |
~ |
; |
^ |
17
2.2.1Идентификаторы
2.2.2.Ключевые слова
2.2.3.Комментарии
•Идентификаторы – имена программных объектов
–могут содержать латинские буквы, цифры и знак подчеркивания
–могут начинаться с латинской
буквы или знака
подчеркивания
–чувствительны к регистру
•Комментарии – примечания к тексту программы, игнорируемые компилятором
1.Строчные – начинаются с символов \\ и заканчиваются переходом на новую строку
2.Блочные – заключены между символами /* и */. Могут распространяться на несколько строк
•Ключевые слова –
зарезервированные идентификаторы, имеющие специальное значение для компилятора
asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while
18
2.2.4.Знаки операций
2.2.5.Константы
•Знаки операций – последовательность символов, определяющих действия над операндами
•Константы – неизменяемые величины, представленные своим значением
Константа |
Формат |
|
|
|
|
Пример |
|
|
|
||||
Целая |
Десятичная: последовательность десятичных цифр, |
8, 0, 199226 |
||||
|
начинающаяся не с нуля, если это не число ноль. |
01, 020, 07155 |
||||
|
Восьмеричная: |
ноль, |
за |
которым |
следуют |
0хА, 0x1В8, 0X00FF |
|
восьмеричные цифры (0,1,2,3,4,5,6,7) |
|
|
|||
|
Шестнадцатеричная: 0х или 0Х, |
|
|
|
||
|
за которым следуют шестнадцатеричные |
|
|
|||
|
цифры (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) |
|
|
|||
|
|
|
|
|
||
Вещественная |
Десятичная: [цифры].[цифры] |
|
|
5.7, .001, 35. |
||
|
Экспоненциальная: |
|
|
|
0.2Е6, .11е-З, 5Е10 |
|
|
[цифры][.][цифры]{Е|е}[+|-][цифры] |
|
|
|||
|
|
|
||||
Символьная |
Один или два символа, заключенных в апострофы |
'А', 'ю', '*', '\0' |
||||
|
|
|
||||
Строковая |
Последовательность символов, заключенная в кавычки |
"Hello, world" |
||||
|
|
|
|
|
|
|
19
2.3. Типы данных
•Тип данных определяет:
–внутреннее
представление данных в памяти компьютера
–множество
значений, которые могут принимать величины этого типа
–операции и функции, которые можно применять к данным этого типа
•Типы данных:
–int (целый)
–char (символьный)
–wchar_t (расширенный символьный)
–bool (логический)
–float (вещественный)
–double (вещественный с двойной точностью)
–void («пустой» тип)
•Спецификаторы типов:
–short (короткий)
–long (длинный)
–signed (знаковый)
–unsigned (беззнаковый)
20