Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / lect4.doc
Скачиваний:
7
Добавлен:
20.05.2014
Размер:
75.78 Кб
Скачать

** vcp1 ** 16.02.2004

ЛЕКЦИЯ 4. Введение в язык С++

4.1 О разработке языков Си и С++

Язык С++ является расширением, причем существенным, языка Си, т.е.

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

Разработка языка Си тесно связана с разработкой операционной системы (ОС)

Unix, широкое внедрение которой начинается в 70-х годах. Язык В, а затем

язык С (по - русски Си) предназначались для упрощения написания ОС Unix и

трансляторов для нее. Отметим, что Unix - это первая большая ОС, которая

написана не на ассемблере. Это ОС для рабочих станций и серверов.

Первая публикация о языке Си появилась в 1978 г., а стандарт на этот язык

принят в 1988 г. Си можно рассматривать как язык среднего уровня, объединяющий

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

и мобильность (т.е. переносимость) языка высокого уровня типа Фортрана или Паскаля.

Это можно изобразить следующим образом:

Фортран, Паскаль, С + +

_______________________

Си, C++

_____________

Ассемблер

____________

Рис. 4.1 Си - язык среднего уровня

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

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

мирования широкого класса задач. Язык Си существенно сложнее, чем Фортран или

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

Язык С++ можно рассматривать как дальнейшее развитие языка С или

как новый язык, включающий в себя язык С. Его разработку начал Страуструп Б. в 1979г.

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

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

Можно считать, что он справился с этой задачей. Об этом говорит быстрое распространение языка без какой-либо коммерческой поддержки. Приведем данные о количестве пользователей по годам:

1979 - 1

1982 - 85

1990 - 150 000

1992 - очень много.

В 1992 г. было продано свыше 1 млн. компиляторов С++. Отметим, что в настоящее время многие компании держат в секрете число пользователей и характер их деятельности,

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

Стандарт на С++ принят в 1998 г.

Можно говорить о моде на С++. Язык очень сложный и поэтому обычно

программисты на С++ оплачиваются лучше, чем «паскальщики».

Программы на С++ разрабатываются в конкретных средах.

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

Для С++ существуют и всегда будет существовать несколько сред разработки. Сейчас распространены такие системы как Borland C++, MS C++, Watcom C++, Visual C++, Borland C++ Builder.

Последние две системы включают технологию визуального программирования, с которой мы познакомимся при изучении системы С++ Builder в последних лекциях курса «Информатика2».

В лекциях курса будут рассмотрены лишь некоторые элементы С++ и

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

Язык С++ сохраняет все свойства языка Си, но его главное отличие от Си

- это возможность работы с классами ( особый сложный тип). Появление классов

резко изменило технологию программирования, которое из функционального

( иначе процедурного) стало объектно-ориентированным.

Объектно-ориентированное программирование (ООП) – это “революция”

в программировании и ему будет посвящена вторая часть курса.

Традиционное программирование на языке С+ + , в отличие от ООП, называют функциональным или процедурным, но обычно используется последний термин,

т.к. у слова «функциональный» есть много других значений.

О версиях Borland С++ .

4.2 Числа и переменные

Целое число - последовательность цифр со знаком или без знака.

Вещественное число имеет дробную часть. Например, 5. или 5.0 . Любое

вещественное число содержит либо точку, либо десятичную экспоненту e, либо

то и другое. Например, записи 1.e3, 10e2, 1e3, 0.1e4, 1000. эквивалентны.

Напомним, что в соответствии с лекцией 1, целые и вещественные числа

различаются формой хранения их в ячейке основной памяти (ОП) и теми

аппаратными командами, которые их обрабатывают. Сравните, например,

алгоритмы умножения целых и вещественных чисел.

Все операции с целыми числами выполняются точно, а с вещественными

приближенно: в мантиссе вещественных чисел при обычной точности

учитывается только 7 цифр. Если нужно больше знаков в мантиссе, что в

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

точность (double), например, 3.14159265359. Все вещественные константы

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

в конце числа добавляется суффикс f , например, 3.141593f . Это означает

переход от типа double к типу float .

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

двойной точности от -308 до 308 ( при мантиссе, равной примерно 1).

Увеличение диапазона значений и количества цифр обусловлено тем,

что для вещественных чисел в ОП отводится 4 байта ( 24 бита для мантиссы

и 8 битов для порядка), а для чисел c двойной точностью - 8 байтов.

Переменная - это данное с именем.

Имеет три атрибута: имя, тип, значение.

Слово “атрибут ” означает “неотъемлемое свойство” и оно часто применяется в

программировании. Заметим, что в алгебре были только имя и значение.

Имя является комбинацией букв, цифр и специальных символов, но первым

символом должна быть английская буква.

Переменным целесообразно давать содержательные имена, например,

a8, massa, dlina2, stip1_2003. С++ различает строчные и заглавные буквы,

т.е. massa и Massa - это разные переменные. Существует традиция для записи

имен: первая буква -строчная, а слова внутри имени - с прописной. Часто для

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

Примеры: myText, studFit, array_old.

Каждая переменная имеет значение. Оно может быть

Целым, вещественным или более сложным.

Очень важно, что тип переменной определяет тип значения, которое

она хранит, а также правила выполнения операций с этими значениями.

Тип переменных указывается с помощью специальных слов:

Int для целых,

float для вещественных,

double для вещественных с двойной точностью,

char для символьных.

Пример int m; float x, y; double u, ves, dtoch;

Это описания переменных. Каждое описание заканчивается точкой с запятой,

а запятые разделяют имена переменных одного типа.

Тип переменной, как и любого другого объекта, характеризует:

- объем выделяемой памяти,

- правила интерпретации двоичных кодов ( 0 и 1) в ней,

- набор допустимых операций.

| | | | | | | | |  байты

Рис. 4.2 Объект – это часть ОП

Есть специальная операция sizeof для определения размера памяти,

выделяемой любому объекту в программе, например,

sizeof (1), sizeof (x), sizeof (float).

Приведем размеры в байтах некоторых операндов sizeof.

Операнд 1 1L 1. 1.f 1.L 1e12 x sin(x) float double char “st”

Результат 4 4 8 4 10 8 4 8 4 8 1 3

sizeof

Здесь полагается, что переменная x имеет описание float x; “st” –это строка, в которой

два символа. Для строки “st” получено значение 3, т.к. любая строка в С++ содержит обязательный дополнительный символ ‘\0’ – символ конца строки, т.е. нулевой символ.

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

т.е. должен быть указан тип каждой.

Описания обязательны!

Будьте внимательны.

Описания переменных могут стоять в любом месте программы, но до их

использования.

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

например,

(int) x или (float) m,

то эта операция преобразования типа изменит тип результата, но не изменит

саму переменную. Преобразования типов указываются не всегда, т.к. многие

выполняются по умолчанию. Например, сложение 1 + 1.5 будет выполняться

по умолчанию как 1. + 1.5, т.е. с типом double, но можно также записать его как

(float) 1 + (float) 1.5 или 1.f + 1.5f

Отметим, что тип числовой константы не описывается, т.к. компилятор

определяет его по форме записи числа, см. выше.

Символьные переменные рассмотрим в лекции 10.

Соседние файлы в папке Лекции