- •Понятие программы и языка программирования
- •Функция как компонент структуры программы
- •Примеры простых программ
- •Вычисление значения функции в заданной точке
- •Вычисление суммы и количества целых чисел, введенных пользователем с клавиатуры
- •Демонстрация работы со строками на основе использования класса string
- •Представление программы и данных
- •Процесс компиляции программы
- •Классическая схема подготовки исполняемой программы
- •Технологический цикл обработки программы
- •Особенности внутреннего представления программы и ее исполнения
- •Организация памяти компьютера
- •Сегментация программы
- •Процесс исполнения программного кода
- •Структура текстового файла программы
- •Структура программы из двух текстовых файлов
Лекция 1 |
|
Введение в С++ |
|
Понятие программы и языка программирования ........................................................... |
1 |
Функция как компонент структуры программы ............................................................... |
5 |
Примеры простых программ .............................................................................................. |
8 |
Вычисление значения функции в заданной точке............................................................. |
8 |
Вычисление суммы и количества целых чисел, введенных пользователем с |
|
клавиатуры........................................................................................................................... |
9 |
Демонстрация работы со строками на основе использования класса string .................. |
9 |
Представление программы и данных............................................................................. |
10 |
Процесс компиляции программы .................................................................................... |
10 |
Классическая схема подготовки исполняемой программы ............................................ |
11 |
Технологический цикл обработки программы................................................................. |
12 |
Особенности внутреннего представления программы и ее исполнения................. |
12 |
Организация памяти компьютера..................................................................................... |
13 |
Сегментация программы................................................................................................... |
14 |
Процесс исполнения программного кода......................................................................... |
15 |
Структура текстового файла программы ....................................................................... |
17 |
Структура программы из двух текстовых файлов ....................................................... |
18 |
Пример более сложной программы на С++ ( сортировка строк)* .................................. |
20 |
Понятие программы и языка программирования
Программирование – процесс и искусство создания компьютерных программ с помощью языков программирования.
Язык программирования — формальная знаковая система для описания программы работы компьютера в форме, пригодной для трансляции и исполнения на компьютере. Язык программирования – это, прежде всего, инструмент деятельности, и на него в первую очередь оказывает влияние класс решаемых на нем задач. Хотя бы один язык нужно знать досконально, чтобы представлять многообразие имеющихся средств и иметь возможность сравнивать с другими. Для будущих специалистов в области компьютерных технологий, безусловно, необходимо изучение языка Си. Универсализм его не в том, что на нем можно написать все, а в том, что на нем можно написать все, на чем пишется все остальное, а именно: операционные системы, базы данных, трансляторы и т.п.
Язык С++ наиболее полно представляет парадигмы современного программирования и является фундаментом, на котором оно строится. С его помощью можно писать процедурноориентированные программы и создавать библиотеки функций. Он поддерживает объектноориентированное программирование и позволяет разрабатывать библиотеки классов. Механизм шаблонов языка С++ и его стандартная библиотека дают возможность создавать программы, применяя методы обобщенного программирования1. В программе на С++ можно динамически управлять памятью, использовать адресную арифметику, обращаться к отдельным разрядам двоичного представления данных и т.д.
Язык программирования C++ был разработан Бьерном Страуструпом, сотрудником AT&T Bell Laboratories. Непосредственным предшественником C++ является С with Classes, созданный
1 Б.Страуструп определяет «обобщенное программирование» как «программирование с использованием типов в качестве параметров».
Программирование – лекция 1 (лекции Стрикелевой Л.В.) |
1 |
|
тем же автором в 1980 году. Язык С with Classes, в свою очередь, был создан под сильным влиянием С и Simula. В определенном смысле C++ можно назвать улучшенным С, тем С, который обеспечивает контроль типов, перегрузку функций и ряд других удобств. Но главное в том, что C++ добавляет к С объектную ориентированность.
В 1998 г. вышел международный стандарт языка ISO/IEC 14882. С 2003г. действует вторая редакция этого стандарта ISO/IEC/ANSI /ITI. Стандарты языков программирования разрабатываются для того, чтобы компиляция одной и той же программы различными компиляторами давала одинаковый результат. Существует ряд организаций, целенаправленно занимающихся вопросами стандартизации. Это Американский национальный институт стандартов ANSI (American National Standards Institute), Институт инженеров по электротехнике и электронике
IEEE (Institute of Electrical and Electronic Engineers), Организация международных стандартов ISO (International Organization for Standardization).
В процессе развития языка некоторые его конструкции и функции устаревают. Однако с целью обратной совместимости новые версии должны поддерживать и все устаревающие возможности. Это ведет к «разбуханию» компиляторов. В последнее время в реализациях введено понятие нерекомендуемой и устаревшей возможности. В первом случае следующий стандарт еще будет поддерживать нерекомендуемую возможность, но может перевести ее в категорию устаревшей. Во втором случае стандарт может исключить поддержку возможности, объявленной ранее как устаревшая. Введение нерекомендуемых и устаревших возможностей предоставляет разработчикам временной интервал, в течение которого они могут модифицировать код в соответствии с новыми требованиями стандарта.
В о тличие о т С #, Java и Visual Basic язык С++ позволяет создавать программы, для выполнения которых не требуется устанавливать на компьютер специальное программное обеспечение, создающее среду исполнения программ.
Важно понимание роли и места программирования. Что это такое: наука, искусство, ремесло (на современном языке – технология)?
Программирование не является наукой: нельзя получить формулу, благодаря которой «рассчитываются» программы на все случаи жизни. Соприкосновение с математикой происходит в других сферах: при оценке производительности программ (алгоритмов); использовании в программировании математических методов, теории алгоритмов и формальных систем.
Программирование имеет отношение к искусству, поскольку, стиль программирования глубоко индивидуален, а элегантный алгоритм способен вызывать эстетическое наслаждение, как и произведение искусства.
Наиболее очевидно то, что программирование имеет отношение к ремеслу. Технология – это кристаллизованное ремесло, а о технологии программирования говорится много и постоянно. Но ремесло, как известно, «передается не словами, а подзатыльниками». Поэтому обучение программированию основывается на принципе «делай как я», а приобретение навыков достигается только путем постоянных упражнений и тренировок.
Изучение программирования нельзя начать, не ответив на вопросы: а что же такое алгорит м,
программа,данные,язык программирования.
В самых общих чертах алгоритм – это однозначное описание последовательности выполнения исполнителем действий из заданного набора, позволяющее получить требуемый результат за конечное число шагов. Однако в определении алгоритма не говорится над чем производятся действия, выполняемые в нем.
Определение программы дано в формуле: «Программа = данные + алгоритм». В ней данные и алгоритм являются двумя взаимозависимыми элементами:
Программирование – лекция 1 (лекции Стрикелевой Л.В.) |
2 |
|
•данные (синтаксически) являются аналогом существительных (объектов, над которыми производятся действия), набор операций – аналогом глаголов (выполняемых
действий); программа в целом аналогична предложению, описывающему
последовательность действий |
над заданными предметами с целью получения |
результата; |
|
•если данные в какой-то мере обладают свойствами пространства (объем, протяженность), то алгоритм – свойствами времени (эффективность, быстродействие); тезис «проигрывая в пространстве, выигрываем во времени» здесь также уместен: эффективность программ может быть принципиально повышена за счет использования дополнительных структур данных в памяти.
Программа – описание на языке программирования структур данных и алгоритма решения задачи, автоматически переводимое, при помощи специальной программы-транслятора (компилятора или интерпретатора), на язык команд компьютера для последующего выполнения. Можно сказать, что компьютерная программа – один из способов реализации понятия алгоритма, а язык программирования – средство описания алгоритмов. Компьют ерная программа,в отличие от абстрактного алгоритма, имеет данные – собственные элементы, над которыми она совершает действия, и которые являются ее составной частью. Алгоритмическая компонента программы – описание последовательности выполняемых действий – обычно состоит из операт оров, задающих эту последовательность действий. Программа базируется на наборе операций над данными (арифметические операции, присваивание, проверка значения переменной и т.п.), соответствующем системе команд процессора, на котором она выполняется.
Ст рукт ура данных – вид представления данных в программе, описание точки зрения пользователя на представление данных. Выбор подходящего представления данных – один из основных вопросов при проектировании программы. При этом под представлением данных понимается их описание на языке программирования в виде констант и переменных разной структуры. При решении задачи на компьютере, анализе исходных данных программы и ее результата, необходимо выбирать экономичный алгоритм решения, который и определит представление исходных, промежуточных и конечных данных. Неправильное представление данных может сделать программу ненадежной, неэкономичной, сложной и даже вообще неадекватной задаче.
Язык программирования содержит в себе компоненты, предназначенные для описания соответствующих частей программы:
•средст ва описания данных, позволяющие программисту определять различные формы представления данных (типы данных) и переменные разных типов;
•набор операций над основными типами данных (включая ввод-вывод), а также средства записи выражений;
•набор операт оров, определяющих различные варианты порядка выполнения выражений в программе (последовательность, условие, повторение, блок);
•средства разбиения программы на независимые части – модули (функции), взаимодействующие между собой через программные интерфейсы.
Взаимосвязь алгоритма и данных в программе не является простой и линейной. Процесс выполнения любой программы можно рассматривать с двух точек зрения: как последовательность выполнения команд, в которых содержится информация об операндах (данных), которые они обрабатывают – пот ок команд (пот ок управления). С другой стороны – любой элемент данных можно рассматривать как результат выполнения действий над исходными данными и как источник данных (операнд) для последующих результатов (Рис.1.1), т.е. в программе также присутствует логическая последовательность вычислений (преобразований данных), называемая пот оком
Программирование – лекция 1 (лекции Стрикелевой Л.В.) |
3 |
|
данных. Исторически сложилось так, что в традиционной (фон Неймановской) архитектуре в программе в явном виде задается последовательность команд, т.е. программа выглядит как пот ок управления, в котором алгоритмическая компонента является первичной (ведущей), а данные – вторичной (ведомой).
Рис.1.1. Структурная схема компьютерной программы
Комплексы программ создаются, эксплуатируются и развиваются во времени. Жизненный цикл программного средства (ПС) включает в себя все этапы развития – от возникновения потребности в программе определенного целевого назначения до полного прекращения использования программы вследствие морального старения, либо отсутствия необходимости решения соответствующих задач. Жизненный цикл крупных программных комплексов систем управления и обработки информации, оформляемых в виде программного продукта, включает в себя следующие основные этапы (Рис. 1.2):
•системный анализ, в ходе которого определяют потребность в ПС, его назначение и основные функциональные характеристики, оцениваются затраты и возможная эффективность применения комплекса программ;
•проектирование ПС, включающее в себя разработку структуры комплекса и его компонентов, программирование модулей и ряд этапов отладки, а также испытание и внедрение для регулярной эксплуатации комплекса программ;
•эксплуатацию ПС, заключающуюся в исполнении программ и получении ожидаемых результатов, а также в обеспечении достоверности и надежности выдаваемых данных;
•сопровождение ПС, состоящее в эксплуатационном обслуживании, развитии функциональных возможностей, повышении эксплуатационных характеристик и тиражировании ПС.
Рис. 1.2. Жизненный цикл программного средства
Программирование – лекция 1 (лекции Стрикелевой Л.В.) |
4 |
|