Курс лекций
ПРОГРАММИРОВАНИЕ
Объектно-ориентированные СУБД т объектно-реалиционные тоже посмотрите сами)
Недостатки ранних СУБД
Достоинства и недостатки ранних СУБД
Ограничения целостности.
Как и в иерархической модели обеспечивается только поддержание целостности по ссылкам (владелец отношения - член отношения).
Достоинства ранних СУБД:
· развитые средства управления данными во внешней памяти на низком уровне;
· возможность построения вручную эффективных прикладных систем;
· возможность экономии памяти за счет разделения подобъектов (в сетевых системах)
· сложность использования;
· высокий уровень требований к знаниям о физической организации БД;
· зависимость прикладных систем от физической организации БД;
· перегруженность логики прикладных систем деталями организации доступа к БД.
Как иерархическая, так и сетевая модель данных предполагает наличие высококвалифицированных программистов. И даже в таких случаях реализация пользовательских запросов часто затягивается на длительный срок.
МОСКВА 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