Курс лекций

ПРОГРАММИРОВАНИЕ

Объектно-ориентированные СУБД т объектно-реалиционные тоже посмотрите сами)

Недостатки ранних СУБД

Достоинства и недостатки ранних СУБД

Ограничения целостности.

Как и в иерархической модели обеспечивается только поддержание целостности по ссылкам (владелец отношения - член отношения).

Достоинства ранних СУБД:

· развитые средства управления данными во внешней памяти на низком уровне;

· возможность построения вручную эффективных прикладных систем;

· возможность экономии памяти за счет разделения подобъектов (в сетевых системах)

· сложность использования;

· высокий уровень требований к знаниям о физической организации БД;

· зависимость прикладных систем от физической организации БД;

· перегруженность логики прикладных систем деталями организации доступа к БД.

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

 

 

МОСКВА 2011

ББК 32.973.26-018я73

А 65

УДК 004.42(075)

 

Рецензенты: Сетуха А.В., Делицин А.Л.

 

А 65 Андреева Л.П. Программирование. Курс лекций: Учебное пособие / Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Московский государственный технический университет радиотехники, электроники и автоматики » - М., 2011.- 152 с.

 

В учебном пособии представлен теоретический материал по программированию на языке С++. Пособие предназначено для использования в учебном процессе студентами, обучающимися по направлению 080500 «Бизнес-информатика».

 

Табл. 9. Ил. 8. Библиогр.:6 назв.

 

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

 

ISBN © Л.П. Андреева, 2011

 

© МИРЭА, 2011


Введение

 

Учебное пособие представляет собой конспект лекций по языку программирования С++. Пособие предназначено для студентов начинающих изучать язык С++, но может быть полезным и более опытным в программировании читателям. Цель пособия не только обучить студентов языку С++, но и познакомить студентов с технологией разработки программ. Все теоретические материалы сопровождаются примерами законченных программ.

Пособие содержит десять разделов. В разделе «Знакомство с языком С++» рассматриваются элементарные конструкции языка и структура простой программы на языке С++.

В разделе «Основные типы данных» рассматриваются встроенные в язык типы данных и их использование для записи выражений.

Раздел «Структурное программирование» посвящен изучению синтаксиса и семантики операторов С++. В разделе приводятся программы, реализующие линейные, разветвляющиеся и циклические алгоритмы.

В разделах «Массивы», «Строки» и «Структуры и объединения» рассматривается использование составных типов данных в программировании.

В разделе «Указатели» изучаются операции над указателями и их использование для работы с динамическими массивами. Материал этого раздела является основой для программной реализации динамических структур данных.

Раздел «Модульное программирование» посвящен нисходящей разработке программ и функциям языка С++, знание которых необходимо для создания больших программ.

В разделе «Работа с файлами» описываются средства языка С++ для работы с данными на внешних носителях. Приводится большое количество программ для работы с текстовыми и двоичными файлами.

В разделе «Данные с динамической структурой» изучаются динамические структуры данных: линейные списки, деревья и графы.

1. Знакомство с языком С++

 

1.1. Элементы языка программирования

 

Для программирования на языке высокого уровня надо изучить правила построения языковых конструкций (синтаксис языка) и правила их использования (семантику языка). Изучение этих правил начнем с разбора простой программы на языке С++.

Пример программы на языке С++ для вычисления математического выражения z=cos(x)+у2:

//Вычисление выражения

#include <iostream.h>

#include <conio.h>

#include <math.h>

void main()

{

float x, y, z;

cout<<”x, y? ”;

cin>>x>>y;

z=cos(x)+y*y;

cout<<"z="<<z;

getch();

}

Комментарии к программе.

1 строка - это однострочный комментарий. Комментарии используются для документирования программы и облегчения чтения ее исходного кода. Однострочный комментарий должен размещаться в одной строке и начинаться двумя символами \. Комментарии могут быть многострочными. Такие комментарии заключаются в пары символов /* */, например:

/* Это многострочный

комментарий */).

2-4 строки – это директивы препроцессора. Директивы препроцессора записывают в отдельных строках. Они начинаются с символа #. До символа # могут быть пробелы. Директива препроцессора #include применяется для включения в программу копии указанного в ней файла. В примере директивы #include включают в программу заголовочные файлы стандартных библиотек: потокового ввода-вывода (iostream.h), математических функций (math.h) и консольного ввода-вывода (conio.h).

5 строка – это заголовок функции main. Функция с именем main должна обязательно содержаться в консольном приложении. Программа на С++ может содержать несколько функций.Выполнение программы всегда начинается с первого оператора функции main.

Строки 6, 13 начинают и заканчивают тело функции. Тело функции заключается в фигурные скобки.

Строка 7 – содержит объявление вещественных переменных с именами х, y и z. Переменные x и y используются в программе для хранения входных данных, а z – для хранения результата вычисления выражения. В языке С++ все переменные перед их использованием в программе должны быть объявлены. Объявления переменных могут находиться: вне функций (глобальные объявления), в определениях функций и даже внутри составного оператора и оператора цикла.

Строка 8 – содержит оператор-выражение, который выводит на экран текст x, y?. Выводимый текст заключается в кавычки. Оператор посылает поток символов x, y? объекту cout, который связан с экраном. Операция << называется «поместить в поток вывода».

Строка 9 – содержит оператор-выражение, который вводит с клавиатуры два вещественных числа и помещает их в переменные х и у. Операция >> называется «взять (получить) из потока ввода». cin – имя входного потока, связанного с клавиатурой.

Строка 10 – содержит оператор-выражение, который вычисляет выражение и присваивает результат переменной z.

Строка 11 – содержит оператор-выражение, который выводит значение переменной z с поясняющим текстом на экран.

Строка 12 – содержит оператор, в котором вызывается функция getch из стандартной библиотеки conio для задержки результатов программы на экране. Функция getch ждет нажатия пользователем программы любой клавиши на клавиатуре.

Основные правила записи программы:

1. Программа на языке С++ состоит из операторов, объявлений, определений функций, директив препроцессора и комментариев.

2. Все переменные должны быть объявлены до их первого использования в операторах.

3. Программа записывается с помощью символов, входящих в алфавит языка С++. Язык С++ является чувствительным к регистру: строчные и прописные буквы в программе различаются. Служебные слова языка и имена функций из стандартных библиотек пишутся строчными буквами, имена для переменных могут содержать как строчные, так и прописные буквы.

4. Программа записывается в свободном формате: вся программа может быть записана в одну строку, а один оператор (или объявление) может быть записан в нескольких строках. Компилятор распознает конец оператора или объявления по символу; (точка с запятой), котрым заканчивается каждый оператор и каждое объявление. Чтобы программа лучше читалась, желательно ее записывать структурно: размещать каждый оператор и каждое объявление с новой строки, делать отступы в 3-4 пробела для вложенных операторов.

 

1.2. Алфавит языка

 

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

· латинские буквы,

· цифры,

· специальные знаки:

· + - * % /

· < > =

· () {} []

· . , ! ? ‘ “ : ;

· | \ & # ~ ^ _

· пробельные символы: пробел, табуляция, переход на новую строку.

1.3. Лексемы

 

Лексемы – последовательность символов алфавита, имеющая для компилятора определенный смысл. Лексемы строятся из символов алфавита языка по определенным в каждом языке правилам. В программах, написанных на языке С++, можно выделить следующие лексемы: идентификаторы, ключевые слова, знаки операций, разделители, константы.

Идентификатор – это имя программного объекта. Идентификатор может содержать буквы, цифры и символы подчеркивания. Первым символом идентификатора может быть буква или символ подчеркивания. Для улучшения читаемости программы следует задавать осмысленные идентификаторы. Идентификаторы не должен совпадать с ключевыми словами языка С++. Примеры правильной записи идентификаторов: a1, max, file_name.

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

 

Таблица 1

Список ключевых слов С++

asm auto bool break
case catch char class
const continue default delete
do double else enum
extern false float for
friend goto if inline
int long namespace new
operator private protected public
register return short signed
sizeof static struct switch
template this throw true
try typedef typename union
unsigned using virtual void
volatile while    

Знак операции – это один или более символов алфавита, определяющих действия над операндами. Примеры знаков операций: + <=.

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

Константы – это неизменяемые программные объекты. В табл. 2 приведены примеры констант разных типов.

 

Таблица 2

Константы языка С++

Тип константы Примеры
Целая десятичная восьмеричная шестнадцатиричная   5 0 -20 01 0577 0xA23 0X39DC
Вещественная -1.234 5.1 2.2E-23 3.567E12
Символьная ‘a’ ‘\065’ ‘\0x34’ ‘\n’ ‘\”’
Строковая “текст” “c:\\user\\a.txt”
Логическая true false

 

1.4. Концепция данных

Язык С++ является типизированным языком. Это означает, что каждая переменная, константа или результат вычисления выражения программы принадлежат к одному из определенных в языке типов данных. Тип данных определяет:

· множество допустимых значений, которые могут принимать данные;

· допустимые операции над данным;

· формат хранения данных в памяти компьютера.

Принадлежность переменных к определенному типу данных определяется в обязательном объявлении каждой переменной программы до ее использования. Пример объявления вещественной переменной:

float x;

Принадлежность константы к определенному типу задается ее записью. Например, в операторе-выражении х=2; компилятор отнесет константу 2 к целому типу данных, так как в записи константы отсутствует точка. Тип значения вычисляемого выражения определяется правилами языка для типа выражений, которые будут рассмотрены позже.

 

2. Основные типы данных

 

Все типы данных С++ можно разделить на два класса: класс основных типов и класс производных типов. К основным типам данных относятся целый, вещественный, вещественный с двойной точностью, символьный, логический и тип void. Производные типы данных строятся на их основе. К производным типам данных относятся массивы, структуры, объединения, классы, функции, указатели и перечисления.

 

2.1. Обьявление переменных

Переменная – это программный объект, который предназначен для хранения данных. Переменная имеет имя (идентификатор) и значение, которое может изменяться при работе программы. Имя переменная получает при объявлении. Объявление переменной должно располагаться в программе до ее первого использования. При объявлении переменной с ее именем связывается область оперативной памяти, в которой будет храниться значение переменной.

Синтаксис объявления переменных основных типов:

Тип список_имен_переменных;

Тип переменных задается одним из ключевых слов: int, float, double, char, bool. Перед типом переменных могут использоваться модификаторы типа: short, long, signed, unsigned. Модификаторы short и long изменяют размер оперативной памяти, выделяемую переменной для хранения данных в соответствии с ее типом, а модификаторы signed и unsigned изменяют способ использования старшего бита. При использовании модификатора unsigned старший бит рассматривается как часть кода числа. Диапазон значений и размер памяти для данных основных типов приведенны в табл. 3.

Таблица 3