Несколько замечаний о назначении программирования

СОДЕРЖАНИЕ

КРАТКОЕ ОПИСАНИЕ УЧЕБНОГО КУРСА "ОСНОВЫ ПРОГРАММИРОВАНИЯ

НА ЯЗЫКЕ СИ++"..........................................................................................................................5

ЛЕКЦИЯ 1. ОСНОВЫ СИ++.........................................................................................................7

1. НЕСКОЛЬКО ЗАМЕЧАНИЙ О НАЗНАЧЕНИИ ПРОГРАММИРОВАНИЯ................................................7

2. ПРОИСХОЖДЕНИЕ ЯЗЫКА СИ++...................................................................................................9

3. СТАНДАРТ ANSI СИ++................................................................................................................9

4. СРЕДА РАЗРАБОТКИ MICROSOFT DEVELOPER STUDIO VISUAL С++...........................................10

5. ПРИМЕР ПРОГРАММЫ НА СИ++.................................................................................................10

6. ВЫПОЛНЕНИЕ ВВОДА/ВЫВОДА ДАННЫХ И ПРИСВАИВАНИЕ ЗНАЧЕНИЙ....................................12

7. УПРАВЛЕНИЕ ПОРЯДКОМ ВЫПОЛНЕНИЯ КОМАНД С ПОМОЩЬЮ ОПЕРАТОРА IF........................13

8. ОФОРМЛЕНИЕ ИСХОДНОГО ТЕКСТА...........................................................................................15

9. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................15

10. УПРАЖНЕНИЯ...........................................................................................................................15

ЛЕКЦИЯ 2. ПЕРЕМЕННЫЕ, ТИПЫ ДАННЫХ И ВЫРАЖЕНИЯ....................................18

1. ИДЕНТИФИКАТОРЫ....................................................................................................................18

2. ТИПЫ ДАННЫХ...........................................................................................................................18

3. ВЫВОД ВЕЩЕСТВЕННЫХ ЧИСЕЛ НА ЭКРАН................................................................................22

4. ОПИСАНИЯ, КОНСТАНТЫ И ПЕРЕЧИСЛЕНИЯ..............................................................................24

5. ПРИСВАИВАНИЕ И ВЫРАЖЕНИЯ.................................................................................................26

6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................28

7. УПРАЖНЕНИЯ.............................................................................................................................28

8. ПРИЛОЖЕНИЯ.............................................................................................................................29

ЛЕКЦИЯ 3. ФУНКЦИИ И ПРОЦЕДУРНАЯ АБСТРАКЦИЯ.............................................31

1. НАЗНАЧЕНИЕ ПОДПРОГРАММ.....................................................................................................31

2. ОПРЕДЕЛЕНИЕ НОВЫХ ФУНКЦИЙ...............................................................................................31

3. СПОСОБЫ ПЕРЕДАЧИ ПАРАМЕТРОВ ВНУТРЬ ФУНКЦИЙ..............................................................33

4. ПОЛИМОРФИЗМ И ПЕРЕГРУЗКА ФУНКЦИЙ..................................................................................35

5. ПРОЦЕДУРНАЯ АБСТРАКЦИЯ И "ХОРОШИЙ" СТИЛЬ ПРОГРАММИРОВАНИЯ...............................36

6. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ...........................................................................................36

7. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................38

8. УПРАЖНЕНИЯ.............................................................................................................................39

ЛЕКЦИЯ 4. ТЕКСТОВЫЕ ФАЙЛЫ И ПОТОКИ ВВОДА/ВЫВОДА................................41

1. НАЗНАЧЕНИЕ ФАЙЛОВ................................................................................................................41

2. ПОТОКИ ВВОДА/ВЫВОДА...........................................................................................................41

3. ПРОВЕРКА ОШИБОК ВЫПОЛНЕНИЯ ФАЙЛОВЫХ ОПЕРАЦИЙ.......................................................43

4. СИМВОЛЬНЫЙ ВВОД/ВЫВОД......................................................................................................44

5. ПРОВЕРКА ДОСТИЖЕНИЯ КОНЦА ФАЙЛА ПРИ ОПЕРАЦИЯХ ВВОДА............................................45

6. ПЕРЕДАЧА ПОТОКОВ ФУНКЦИЯМ В КАЧЕСТВЕ ПАРАМЕТРОВ.....................................................47

7. ОПЕРАТОРЫ ВВОДА/ВЫВОДА ">>" И "<<".................................................................................48

8. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................50

9. УПРАЖНЕНИЯ.............................................................................................................................50

ЛЕКЦИЯ 5. ОПЕРАТОРЫ ВЕТВЛЕНИЯ И ЦИКЛЫ...........................................................52

1. ЛОГИЧЕСКИЕ ЗНАЧЕНИЯ, ВЫРАЖЕНИЯ И ФУНКЦИИ...................................................................52

2. ЦИКЛЫ "FOR", "WHILE" И "DO...WHILE".....................................................................................53

3. МНОЖЕСТВЕННОЕ ВЕТВЛЕНИЕ И ОПЕРАТОР "SWITCH"..............................................................55

4. БЛОКИ И ОБЛАСТЬ ВИДИМОСТИ ПЕРЕМЕННЫХ..........................................................................56

4

5. ЗАМЕЧАНИЕ О ВЛОЖЕННЫХ ЦИКЛАХ.........................................................................................59

6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................59

7. УПРАЖНЕНИЯ.............................................................................................................................60

ЛЕКЦИЯ 6. МАССИВЫ И СИМВОЛЬНЫЕ СТРОКИ.........................................................63

1. НАЗНАЧЕНИЕ МАССИВОВ...........................................................................................................63

2. ПЕРЕДАЧА МАССИВОВ В КАЧЕСТВЕ ПАРАМЕТРОВ ФУНКЦИЙ....................................................66

3. СОРТИРОВКА МАССИВОВ...........................................................................................................68

4. ДВУМЕРНЫЕ МАССИВЫ..............................................................................................................69

5. СИМВОЛЬНЫЕ СТРОКИ...............................................................................................................70

6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................73

7. УПРАЖНЕНИЯ.............................................................................................................................73

ЛЕКЦИЯ 7. УКАЗАТЕЛИ............................................................................................................75

1. НАЗНАЧЕНИЕ УКАЗАТЕЛЕЙ........................................................................................................75

2. ПЕРЕМЕННЫЕ ТИПА "МАССИВ". АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ С УКАЗАТЕЛЯМИ....................79

3. ДИНАМИЧЕСКИЕ МАССИВЫ.......................................................................................................81

4. АВТОМАТИЧЕСКИЕ И ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ................................................................82

5. СВЯЗНЫЕ СПИСКИ......................................................................................................................82

6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................86

7. УПРАЖНЕНИЯ.............................................................................................................................87

ЛЕКЦИЯ 8. РЕКУРСИЯ...............................................................................................................89

1. ПОНЯТИЕ РЕКУРСИИ...................................................................................................................89

2. ПРОСТОЙ ПРИМЕР РЕКУРСИИ.....................................................................................................89

3. КАК ВЫПОЛНЯЕТСЯ РЕКУРСИВНЫЙ ВЫЗОВ................................................................................90

4. ЕЩЕ ТРИ ПРИМЕРА РЕКУРСИИ....................................................................................................92

5. РЕКУРСИЯ И ЦИКЛЫ....................................................................................................................93

6. РЕКУРСИЯ В СТРУКТУРАХ ДАННЫХ............................................................................................94

7. РЕКУРСИВНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА БЫСТРОЙ СОРТИРОВКИ.............................................94

8. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................97

9. УПРАЖНЕНИЯ.............................................................................................................................97

ЛЕКЦИЯ 9. СОСТАВНЫЕ ТИПЫ ДАННЫХ.......................................................................100

1. НАЗНАЧЕНИЕ СОСТАВНЫХ ТИПОВ ДАННЫХ............................................................................100

2. ОПИСАНИЕ И ИНИЦИАЛИЗАЦИЯ СТРУКТУР..............................................................................100

3. ДОСТУП К КОМПОНЕНТАМ СТРУКТУРЫ ЧЕРЕЗ УКАЗАТЕЛЬ......................................................103

4. МАССИВЫ И СТРУКТУРЫ..........................................................................................................104

5. ПЕРЕГРУЗКА ОПЕРАТОРОВ........................................................................................................105

6. ПРИМЕНЕНИЕ СТРУКТУР ДЛЯ РЕАЛИЗАЦИИ СТЕКА..................................................................107

7. СВОДКА РЕЗУЛЬТАТОВ.............................................................................................................111

8. УПРАЖНЕНИЯ...........................................................................................................................112

ПРИЛОЖЕНИЕ. КРАТКОЕ РУКОВОДСТВО ПО СРЕДЕ РАЗРАБОТКИ DEVELOPER

STUDIO VISUAL C++..................................................................................................................113

1. СОЗДАНИЕ НОВОГО ПРОЕКТА...................................................................................................113

2. ДОБАВЛЕНИЕ В ПРОЕКТ НОВОГО ИСХОДНОГО ФАЙЛА.............................................................114

3. СБОРКА ПРОЕКТА.....................................................................................................................115

4. ЗАПУСК НОВОГО ПРИЛОЖЕНИЯ................................................................................................116

ЛИТЕРАТУРА.............................................................................................................................117

5

Краткое описание учебного курса "Основы программиро-

вания на языке Си++"

Развитие современных технологий программирования предполагает владение

программистом широким набором практических навыков, среди которых одними из

основных можно считать знание языка программирования, среды разработки и сис-

темных технологий базовой операционной системы. Рассматриваемый учебный курс

предназначен для начальной подготовки программиста, владеющего языком про-

граммирования Си++ применительно к разработке программ в ОС семейства Win32.

При анализе доступных в Интернет зарубежных курсов, связанных с обучени-

ем практическому программированию в рамках подготовки по специальностям Computer

Science, оказалась заметна следующая тенденция: существуют курсы по изуче-

нию языка Си++, курсы по изучению объектно-ориентированного программирования

на базе, чаще всего, Java и реже, Си++, и практически стандартный курс "Операцион-

ные системы", посвященный структуре Unix-совместимых операционных систем. Ха-

рактерной особенностью зарубежных университетских курсов является отсутствие

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

ческих ОС массового распространения, в первую очередь, ОС Windows. С другой

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

учебных организаций, но сроки обучения порядка 3-5 дней предполагают обучение

уже грамотного специалиста, имеющего навыки программирования в какой-либо дру-

гой ОС или на другом языке программирования.

В сегодняшних российских условиях, не отрицая необходимости фундамен-

тальной подготовки специалистов по вычислительной технике в области теории алго-

ритмов и устройства вычислительных и программных систем, можно отметить полез-

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

разработки и библиотек программирования для ОС массового распространения. Этим

обусловлена направленность рассматриваемого курса – начальная подготовка про-

граммистов на Си++ для среды ОС Windows.

Сложность обучения практическому программированию, на наш взгляд, за-

ключается в трудности сочетания обучения абстрактным понятиям программирова-

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

ритмического языка, методология проектирования программного обеспечения), с

изучением технологий и сред программирования на базе какой-либо конкретной ОС.

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

быть сложно выделить какие-либо конкретные средства разработки в качестве пред-

мета изучения.

Несмотря на широкое распространение сред быстрой разработки ПрО (напри-

мер, Visual Basic, Inprise Builder и Inprise Delphi), выбор их в качестве учебной среды

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

ПрО касается только формирования каркаса приложения из набора готовых компо-

нент, а устройство этих компонент или изменение структуры каркаса требует серьез-

ных знаний не только по структуре базовой ОС, но и по системной архитектуре среды

программирования.

Программа данного курса предназначена для обучения лиц, имеющих навыки

пользовательской работы на персональном компьютере, основным понятиям и мето-

дам современного практического программирования. Предметом изучения курса яв-

ляется объектно-ориентированное программирование на языке Си++ в среде совре-

менных 32-х разрядных операционных систем семейства Windows. Программа курса

6

разбита на 4 части:

1) Введение в программирование на языке Си++ (9 лекций)

2) Основы программирования трехмерной графики (8 лекций)

3) Объектно-ориентированное программирование на языке Си++ (9 лекций)

4) Программирование для Microsoft Windows с использованием Visual C++ и

библиотеки классов MFC (9 лекций)

На каждое лекционное занятие должно быть предусмотрено минимум одно

практическое (2 академических часа) и еще, в среднем, 4 часа самостоятельных заня-

тий. Т.о., на изучение курса отводится 72 лекционных часа, 72 практических (т.о., 144

аудиторных часа) и 144 часа самостоятельных занятий.

Методические материалы для курса сформированы на основе примерно 10-ти

зарубежных изданий, часть из которых переведена на русский язык.

В первой части курса рассматриваются процедурные основы языка Си++. Они

включают в себя оформление текста программ, правила записи выражений на Си++,

рассмотрение простых типов данных и алгоритмических конструкций условных опе-

раторов, циклов _______и др. В конце этой части курса подробно рассматриваются составные

типы данных. При этом делаются замечания о достоинствах и недостатках этих типов

данных, что впоследствии упрощает введение понятий объектно-ориентированного

программирования.

Вторая часть курса посвящена применению языка Си++ для программирования

задач в конкретной предметной области – трехмерной компьютерной графики. В ка-

честве базовой графической библиотеки выбрана библиотека OpenGL, являющаяся

открытым стандартом в данной области. Изучение этой библиотеки демонстрирует

методику освоения готового инструментария, сформированного в результате приме-

нения методов структурного проектирования в конкретной предметной области. По-

нятия, относящиеся к машинной графике, понятие каркаса приложения и обработки

событий иллюстрируются простыми примерами и в дальнейшем используются при

изучении программирования в среде Windows.

Третья часть курса изучается после усвоения студентами процедурного про-

граммирования. Основные вопросы объектно-ориентированного программирования

на Си++ излагаются на примере программирования консольных приложений Win32.

Рассматриваются элементарные приемы объектно-ориентированного проектирования

– проектирование на основе распределения обязанностей, метод CRC-карточек.

В четвертой части курса изучается архитектура операционных систем семейст-

ва Windows и методы программирования для этих ОС. Примерно треть этой части по-

священа рассмотрению основных компонент операционных систем Windows 9x/NT,

знакомству с базовыми сервисами операционных систем и программированию для

этих ОС на языке Си++ на уровне Win32 API. В оставшейся части рассматриваются

приемы программирования для ОС Windows на базе библиотеки классов MFC. Эта

библиотека классов является промышленным стандартом, упрощающим разработку

программ и использование Win32 API. Подробно описывается каркас приложения

MFC, основные классы этой библиотеки, приемы использования этих классов в соб-

ственных программах, архитектура однодокументных приложений "документ/вид".

После изучения курса студент получает достаточно полное представление о

содержании современного объектно-ориентированного программирования, об уст-

ройстве современных операционных систем Win32 и о событийно-управляемом про-

граммировании. На практических занятиях вырабатываются навыки программирова-

ния на Си++ в интегрированной среде разработки Microsoft Visual C++ 5.0.

7

ЛЕКЦИЯ 1. Основы Си++

Несколько замечаний о назначении программирования

Программирование – это техническая творческая деятельность, цель которой

заключается в решении важных для человека задач или выполнении определенных

действий с помощью компьютера. На рис. 1 представлена идеализированная схема

решения типичной задачи программирования.

Подробное описание

задачи или необходимых

действий КОМПЬЮТЕР

Решение задачи или

выполнение действий

Рис. 1. Схема решения задачи с помощью компьютера.

В рамках такой схемы необходимыми компонентами компьютера являются

центральный процессор, устройства ввода/вывода и память (рис. 2).

Рис. 2. Основные компоненты компьютера.

Конечно, в действительности дело обстоит не так просто, как показано на

рис. 1. Например, "подробное описание (спецификация) задачи" на естественном язы-

ке для компьютера не годится (в настоящее время). Более того, для решения задачи на

компьютере недостаточно полного описания задачи, необходимо также снабдить

компьютер информацией о том, как именно следует решать задачу – т.е. составить ал-

горитм. Для описания алгоритмов решения задач или алгоритмов выполнения каких-

либо действий (например, управление роботом-манипулятором) с помощью компью-

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

На рис. 3 показана более подробная схема решения задачи с помощью компью-

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

люстрация этой схемы на конкретном примере приведена в таблице 1.

Существует большое количество различных языков программирования и много

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

языки, синтаксис которых сравнительно близок к естественному языку, в то время как

синтаксис "низкоуровневых" языков содержит много технических подробностей, свя-

занных с устройством компьютера и процессора.

8

Рис. 3. Схема решения задачи на компьютере с использованием языка программирования.

Таблица 1. Основные этапы решения задачи по проверке числа на простоту.

Спецификация задачи Требуется определить, является ли данное число простым.

Алгоритм Ввести x

Для каждого целого числа z из диапазоне от 1 до x

Если остаток от деления x на z равен 0, то

вывести сообщение "число не простое" и закончить работу

Если такого числа z не найдено, то

вывести сообщение "число простое" и закончить работу


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: