Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2009 лекции ПЯВУ часть1.doc
Скачиваний:
22
Добавлен:
27.03.2015
Размер:
823.3 Кб
Скачать

Оглавление

Оглавление 3

Тема 1 6

основные концепции Языков программирования 6

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

1.2. Свойства языков программирования 7

1.3. Основные парадигмы программирования 8

1.4. Первая программа на С++ 11

Тема 2 14

Типы данных 14

2.1. Понятие переменной и объявление переменных 14

2.2. Константы и перечисления 16

2.3. Операции и выражения 18

Тема 3 30

Операторы и выражения 30

Тема 4 35

Массивы 35

4.1.Определение, объявление и инициализация массивов 35

4.2. Сортировка массивов 36

4.3. Поиск в массивах 38

4.4. Многомерные массивы 38

Тема 5 40

Указатели 40

5.1. Операции над указателями 40

5.2. Выражения и арифметические действия с указателями 41

5.3. Взаимосвязи между указателями и массивами 43

5.4. Массивы указателей 44

5.5. Динамическое выделение памяти под массивы 44

Тема 6 47

Функции 47

6.1. Программные модули в С++ 47

6.2. Определения функций 48

6.3. Классы памяти и область действия 50

6.4. Рекурсия 54

6.5. Ссылки и ссылочные параметры 59

6.6. Использование спецификатора const с указателями 63

6.7. Перегрузка функций 65

6.8. Передача массивов в функции 66

6.9. Указатель на функцию 68

6.10. Командная строка аргументов 70

6.11 Неопределенное количество аргументов 71

Тема 7 73

Введение в обработку строк 73

7.1. Работа со строками в С 73

7.2. Работа со строками в С++ 78

Тема 8 79

Работа с файлами 79

Тема 9 88

Компоновка программ и препроцессор 88

9.1. Компоновка программ 88

9.2. Препроцессор 91

Тема 10 94

Структуры 94

10.1. Определение структур и доступ к элементам 94

10.2. Битовые поля 97

10.3. Объединения 98

10.4. Построение связных списков на основе структур с самоадресацией 101

Список рекомендуемой литературы 114

Тема 1

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

Программы– это алгоритмы и структуры данных[12]. Известна формула Никлауса Вирта – разработчика языкаPascal:

алгоритмы+структуры данных = программы

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

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

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

Языки программирования делятся на две группы:

1. Машинно-зависимые языки. Их можно применять на одной ЭВМ или на ограниченном подмножестве машин с одинаковой архитектурой.

2. Машинно-независимые языки. Их можно использовать на любой ЭВМ. Языки этой группы называют универсальными

Машинно-зависимыеязыки в зависимости от их близости к машинным языкам делятся на три группы:

- машинные(языки нулевого уровня),

- ассемблерные(языки первого уровня или языки типа 1:1, т.е. одна ассемблерная команда порождает одну машинную команду),

- макроассемблеры (языки второго уровня или языки типа 1:2).

Машинно-независимыеязыки включают следующие группы языков:

- императивные– это языки программирования, управляемые командами или операторами языка. Программа на императивном языке представляет собой последовательность команд (операторов), которые выполняются в порядке их написания. Выполнение каждой команды ведет к изменению состояния компьютера. Основными элементами императивных языков являются переменные и операторы присваивания. Эти языки поддерживают один или несколько итеративных циклов, а также конструкции, позволяющие программировать рекурсивные алгоритмы.Пример – ALGOL, PL/1, Basic, C/C++, FORTRAN, Ada, Pascal, Java;

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

функцияn(…функция2(функция1(данные))…)

Пример – LISP, ML, Miranda, Haskell;

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

разрешающее условие 1 -> последовательность операторов 1

разрешающее условие 2 -> последовательность операторов 2

разрешающее условие 3 -> последовательность операторов 3

……

разрешающее условие n-> последовательность операторовn

Порядок выполнения операторов определяется системой реализации правил. Пример – Prolog, YACC;

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

Пример – Smalltalk, C#,поддержка объектно-ориентированной парадигмы включена в языкиAda95, Object Pascal, C++.