- •Ф.Ф. Павлов языки программирования
- •Санкт-Петербург
- •230201 - Информационные системы и технологии
- •Тема 2 посвящена изучению жизненного цикла программы и основным этапам решения задач на эвм.
- •Тема 4 изучает типы пользовательских интерфейсов, классификацию диалогов и основные компоненты графических пользовательских интерфейсов.
- •Тема 8 посвящена структурам данных фиксированного размера (массивы), а также типам данных, определяемых пользователем (структуры, объединения, перечисления).
- •Тема 10 изучает динамические структуры данных: виды и способы реализации списков, динамическое выделение памяти.
- •Тема 12 затрагивает вопросы обработки файлов данных: понятия записи, файла данных и способы доступа, операции и средства обработки файлов, контроль операций обработки файлов.
- •Тема 14 вводит в технологию объектно-ориентированного программирования.
- •Раздел I Принципы программирования на языках высокого уровня
- •Тема 1. Эволюция языков программирования
- •1.1. Неструктурированное, «стихийное» программирование
- •1.2. Процедурное (модульное) программирование
- •1.3. Объектно-ориентированное программирование
- •1.4. Компонентные технологии программирования
- •Тема 2. Жизненный цикл программы и основные
- •2.1. Дружественность, жизненный цикл программы
- •2.2. Постановка задачи и спецификация программы
- •2.3. Проектирование и реализация программы
- •2.4. Способы записи алгоритма
- •2.5. Критерии качества программы
- •3.1. Классификация программных продуктов
- •3.3. Модели программирования в ms-dos и Windows
- •Тема 4. Диалоговые программы
- •4.1. Типы пользовательских интерфейсов
- •4.2. Классификация диалогов и их реализация
- •4.3. Основные компоненты графических
- •Тема 5. Программа на языке высокого уровня
- •5.1. Структура программы и функции
- •5.2. Стандартные типы данных и операции над ними
- •5.3. Адресные типы данных: указатели и ссылки
- •5.4. Стандартные библиотеки языка
- •5.5. Классы памяти
- •Раздел 2 Управляющие структуры и структуры данных
- •Тема 6. Представление управляющих структур
- •6.1. Структура следования
- •6.2. Структуры ветвления
- •6.3. Структуры повторения
- •Int kol, //счетчик введенных оценок
- •Int god; //число лет
- •Тема 7. Адресные типы данных
- •7.1. Указатели
- •7.2. Ссылки
- •Тема 8. Структуры данных фиксированного размера
- •8.1. Массивы
- •8.2. Типы данных, определяемые пользователем
- •Тема 9. Функции (процедуры)
- •9.1. Определение, прототип и вызов функции
- •9.2. Передача параметров
- •9.3. Программирование рекурсивных алгоритмов
- •Тема 10. Динамические структуры данных
- •10.1. Списки: основные виды и способы реализации
- •10.2. Динамическое выделение памяти
- •Раздел 3 Процедурное программирование
- •Тема 11. Ввод/вывод данных
- •11.1. Видеофункции библиотеки conio.H
- •11.2. Функции библиотеки потокового ввода/вывода
- •Тема 12. Обработка файлов данных
- •12.1. Записи и файлы данных
- •12.2. Операции и средства обработки файлов
- •12.3. Контроль операций обработки файлов
- •Тема 13 Технология процедурного программирования
- •13.1. Способы конструирования программ
- •13.2. Проектирование программы: методы декомпозиции и и модульного программирования
- •13.3. Реализация программы: методы структурного
- •Тема 14. Введение в технологию объектно-
- •14.1. Основные понятия объектно-ориентированного
- •14.2. Проектирование программы
- •14.3. Реализация программы
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •Тема 1. Технология программирования и этапы ее
- •Тема 2. Жизненный цикл программы и основные этапы
5.2. Стандартные типы данных и операции над ними
Типы данных классифицируются на базовые типы, указатели, ссылки, массивы, типы, определяемые пользователем (структуры, объединения, перечисления).
Стандартные типы данных и константы
Стандартные (базовые) типы бывают целые, вещественные, символьные, используют стандартные идентификаторы типов:
Короткое целое short int -32768÷32767
Целое int -32768÷32767
Неотрицательное целое unsigned int 0÷65535
Длинное целое long -2*109÷2109
Неотрицат. длинное целое unsigned long 0÷4*109
Веществ.одинарной точности float 3.4*10-38÷3.4*1038
Веществ. двойной точности double 1.7*10-308÷1.7*10308
Веществ. высокой точности long double 3.4*10-4932÷3.4*104932
Символ (один байт) char -128÷127
Беззнаковый символ unsigned char 0÷255
Десятичные константы – любые числа без дробной части, не начинающиеся с нуля. Восьмеричные целые константы начинаются с нуля. Шестнадцатиричные константы начинаются с 0x. Для констант с плавающей точкой можно опустить либо десятичную точку, либо Е, но не то и другое. Символьная константа – это один символ, заключенный в одинарные кавычки (апострофы). Они имеют числовые значения, равные кодам ASCII соответствующих символов. Примеры:
29, -3, +4569 //целые константы
01, 023, 0407 //восьмеричные
0x1a, 0x10, 0x2F //шестнадцатиричные
3.14, 2e3, 3.4E-5, 10., .9 //вещественные
‘a’, ‘9’, ‘-‘ //символьные
Символьные константы могут вводить управляющие последовательности для преобразования определенных символов, не имеющих графического аналога:
Одинарная кавычка ' '\''
Ноль (пустой символ) NUL '\0'
Звуковой сигнал(звонок) BEL '\a'
Возврат на шаг(забой) BS '\b'
Новая строка(перевод строки) LF '\n'
Возврат каретки CR '\r'
Горизонтальная табуляция HT '\t'
Обратная косая черта \ '\\'
Двойная кавычка " '\"'
Байтовое значение в восьмеричной системе '\ddd'
Байтовое значение в шестнадцатиричной системе '\xdd'
Строковая константа - это ноль и более символов, заключенных в двойные кавычки, имеет тип массив символов (char), содержит в конце добавляемый автоматически символ ноль '\0'. Нулевая (пустая строка) записывается в виде "" и хранится в виде одного символа '\0'. Константы могут быть записаны в нескольких строках. Последний символ переносимой строки - это \ ,он и символ новой строки отбрасываются при выводе данных. Соседние строковые константы, разделенные только пробелами, конкатенируются.
Преобразование и переименование типов
Язык С++ допускает преобразование ( приведение ) типов и переименование типов.
Возможны неявные(стандартные) и явные преобразования типов.
Неявные преобразования выполняются компилятором автоматически следующим образом:
в выражениях операнды преобразуются к одинаковому типу по схеме: char->short int->unsigned int->long->unsigned long->float->double->long double;
в операторах присваивания правая часть преобразуется к типу левой части.
Явное преобразование типов выполняется специальной операцией приведения типа, имеющей 2 формы записи:
(tip) expr; -используется в С и С++;
tip(expr); - функциональная форма, введена в С++.
Формы почти равноценны, и их выбор -это дело вкуса.
Переименование типа проводится объявлением нового идентификатора типа данных, синонима существующего типа, с целью использования более удобного или сокращённого названия. Синтаксис:
typedef tip ident;
,где tip -существующий тип данных;
ident -идентификатор-синоним.
Пример: typedef unsigned int t;
unsigned int x;//Длинное t x;//Короткое название
unsignet int y;//название t y;
Операции
Выражением называется последовательность операций, операндов и знаков препинания, задающих определенное вычисление. Вычисление выражений выполняется по определенным правилам преобразования и приоритета, которые зависят от используемых в выражениях операций, наличия круглых скобок и типов данных операндов. В языке С++ имеется богатый набор операций:
-арифметические операции: сложение (+), вычитание (-), умножение (*), деление (/), остаток от деления (% ,для целых и символов), унарные операции (+ и -);
-логические операции: НЕ (!),ИЛИ (||),И (&&);
-операции отношения: равно (==), не равно (!=), меньше (<), меньше или равно (<=), больше (>), больше или равно (>=);
-операции инкремента и декремента (для целых и символов): постфиксный инкремент (expr++) - увеличение expr на единицу, результатом всего выражения является значение expr до увеличения;
пример: m=1;
n=m++; //m=2,n=1
префиксный инкремент (++expr) - увеличение на единицу, результатом всего выражения является значение expr после увеличения;
пример: m=1;
n=++m; //m=2,n=2
постфиксный декремент (expr--) - уменьшение expr на единицу, результатом всего выражения является значение expr до уменьшения;
пример: m=2;
n=m--; //m=1,n=2
префиксный декремент (--expr) - уменьшение expr на единицу, результатом всего выражения является expr поле уменьшения;
пример: m=2;
n=--m; //m=1,n=1
-побитовые операции(для целых и символов): дополнение до единицы (~), побитовое ИЛИ (|), побитовое И (&), побитовое исключающее ИЛИ (^), сдвиг вправо (>>), сдвиг влево (<<);
-операции присваивания: присвоить (=), сочетание с арифметическими и битовыми логическими операциями (+=, -=, *=, /=, %=, |=, &=, ^=; >>=, <<=);
примеры: m+=n; //Сокращенная запись m=m+n;
x=y=z;//Множественное присваивание x=(y=(z=0));
-условная операция арифметическое если (?:): expr1?expr2:expr3- если expr1 истинно, то вычисляется expr2, и результатом является expr2; иначе вычисляется expr3, и результатом является expr3;
пример: y=(x<=0)?-x:x;//y - абсолютное значение x
-операция последовательного выполнения, операция запятая (,): expr1, expr2 -сначала вычисляется expr1,затем expr2, результат операции - expr2; операция обычно используется для выполнения нескольких выражений в ситуациях, где по синтаксису может быть лишь одно.
Приоритет операций в порядке убывания следующий:
1) () -вызов функции;
2) !, ~, +, -, ++, --, () -логическое НЕ, дополнение до единицы, унарные операции, инкремент, декремент, операция приведения типа;
3) *, /, % -мультипликативные операции;
4) +, - -сложение, вычитание;
5) <<, >> -сдвиг;
6) <, >, <=, >= -операции отношения;
7) ==, != -операции отношения;
8) & -побитовое И;
9) ^ -побитовое исключающее ИЛИ;
10) | -побитовое ИЛИ;
11) && -логическое И;
12) || -логическое ИЛИ;
13) ?: -условная операция;
14) =,+=,-=,*=,/=,%=,>=,<=,&=,^=,|= -операции присваивания;
15) , -операция запятая.
Над данными базовых типов можно выполнять стандартные библиотечные функции, сгруппированные в файлы, например:
math.h - математические функции;
string.h - функции обработки строк;
ctype.h - функции для проверки и обработки символов;
stdlib.h - преобразование символов и строк в числа и обратно;
conio.h - библиотека видеофункций;
iostream.h - базовая библиотека ввода/вывода потоком С++.
Переменные базовых типов, используемые в качестве параметров функций, применяют способ передачи параметров по значению, т.е. копируются в стек и передаются функции копии самих значений переменных. Это допустимо, так как эти данные небольшого объема.