40
Модуль 1 : Базовые понятия языка программирования С++ Темы лекции : Введение. Немного истории. Состав языка. Переменные и базовые типы данных. Практическое задание : Базовые типы данных и основные операции С++. Тренер: Игорь Шкулипа, к.т.н. C++ Базовый. Занятие 1

C++ Базовый. Занятие 01

Embed Size (px)

Citation preview

Page 1: C++ Базовый. Занятие 01

Модуль 1: Базовые понятия языка программирования С++

Темы лекции: Введение. Немного истории. Состав языка. Переменные и базовые типы данных.

Практическое задание: Базовые типы данных и основные операции С++.

Тренер: Игорь Шкулипа, к.т.н.

C++ Базовый. Занятие 1

Page 2: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 2http://www.slideshare.net/IgorShkulipa

Курс «C++ для начинающих»

Курс состоит из четырех основных модулей:

1. Базовые понятия языка программирования С++• Введение. Немного истории• Состав языка• Переменные и базовые типы данных• Форматированный ввод/вывод• Основные операции языка С++• Операторы языка С++• Функции• Структура программы на языке С++

2. Пользовательские типы данных и работа с динамической памятью• Массивы и указатели• Пользовательские типы данных• Динамическая память

3. Основные понятия объектно-ориентированного программирования• Введение в объектно-ориентированное программирование• Объектно-ориентированное программирование на языке С++• Принципы ООП• Перегрузка методов и операторов• Наследование и полиморфизм• Потоковый ввод-вывод

4. Дополнительные темы объектно-ориентированного программирования• Шаблоны типов• Обработка исключений• Пространства имен• Проектирование программного обеспечения• Паттерны проектирования

Page 3: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 3http://www.slideshare.net/IgorShkulipa

Время и оценка результатов курса

Курс состоит из 25 занятий, общей длительностью 100 часов аудиторнойработы.

Оценка теоретической части:1. Три промежуточных теста (максимальная оценка - 100 баллов)2. Результирующий тест (максимальная оценка - 100 баллов)

Оценка практической части:1. 17 лабораторных работ (максимальная средняя оценка - 100

баллов)

Курсовой проект:1. На протяжении курса студенты выполняют курсовой проект по

индивидуальной теме (максимальная оценка - 100 баллов)

Page 4: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 4http://www.slideshare.net/IgorShkulipa

Результат работы на протяжении курса

• TP – средняя оценка за промежуточные тесты (макс. 100)• TR – оценка за результирующий тест (макс. 100)• LR – средняя оценка за выполнение лабораторных работ (макс. 100)• CP – оценка за курсовой проект (макс. 100)

Результат курса = 0.2*TP + 0.2*TR + 0.2*LR + 0.4*CP

>= 70% < 70%

Page 5: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 5http://www.slideshare.net/IgorShkulipa

Литература

1. Б. Страуструп / Язык программирования С++. -2008 г., - 1104 стр.

1. Брайан Керниган, Деннис Ритчи / Язык программирования C - М.:Изд. дом «Вильямс», 2012. - 304 cтр.

1. Т. Кормен, Ч. Лейзерсон, Р. Ривест / Алгоритмы. Построение ианализ, М, Вильямс, -2001, -1296 стр.

1. Роберт Седжвик / Фундаментальные алгоритмы C++. Части 1-4.Анализ. Структуры данных. Сортировка. Поиск. – СПб, ДиаСофт,2001 г. - 688 стр.

1. Роберт Седжвик / Фундаментальные алгоритмы C++. Часть 5.Алгоритмы на графах. – СПб, ДиаСофт, 2002 г. - 496 стр.

Page 6: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 6http://www.slideshare.net/IgorShkulipa

Тема 1. Введение. Немного истории.

Page 7: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 7http://www.slideshare.net/IgorShkulipa

ЦПЦентральный процессор

Вычислительная машина фон-Неймана

● Программное управление вычислительным процессом путем автоматического извлечения команд программы из памяти и последовательного их выполнения.

● Общая память для программ и данных.

● Одинаковое кодирование программ и данных.

● Использование двоичной системы счисления.

● Арифметическое устройство на базе двоичного сумматора.

АЛУАрифметико-логическое

устройство

УУУстройство управления

Память

СВВСистема ввода-вывода

ВУВнешнее устройство

ВУВнешнее устройство

ВУВнешнее устройство

ВУВнешнее устройство

Page 8: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 8http://www.slideshare.net/IgorShkulipa

Функциональная организация типовой ЭВМ

1. Процессор (центральный процессор) — основной вычислительный блок компьютера, содержит важнейшиефункциональные устройства:• устройство управления с интерфейсом процессора (системой сопряжения и связи процессора с другими узлами машины);

• арифметико-логическое устройство;

• процессорную память.

Процессор, является устройством, выполняющим все функции элементарной вычислительной машины.

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

2. Каналы связи (внутримашинный интерфейс) служат для связи центральных узлов машины с ее внешнимиустройствами.

3. Внешние устройства обеспечивают эффективное взаимодействие компьютера с окружающей средой: пользователями, объектами управления, другими машинами. В состав внешних устройств обязательно входят внешняя память иустройства ввода-вывода.

ЦПЦентральный процессор

АЛУАрифметико-логическое устройство

УУУстройство управления

ПППроцессорная

память

ОПОперативная память

КСКаналы связи

ВУВнешние устройства

ВПВнешняя память

ВВВвод-вывод

Page 9: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 9http://www.slideshare.net/IgorShkulipa

Языки программирования

Машинный код

Языком программирования первого поколения считается машинный код.Машинный код состоит из инструкций, которые компьютер (процессор) можетвыполнить (а также данных, которые принадлежат этим инструкциям).Программируя на машинном коде, программист должен был писать своюпрограмму в двоичном коде, так что бы процессор мог это понять и исполнить.

Язык ассемблера

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

MOV AL, 19

ADD AL, 4

OUT 2

Языки высокого уровня

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

FROTRAN, BASIC, Pascal, C, C++

Page 10: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 10http://www.slideshare.net/IgorShkulipa

Базовые типы языков программирования

Процедурные

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

Pascal

Функциональные

В функциональных языках программирования всё решение описывается припомощи функций.

C

Объектно-ориентированные

В объектно-ориентированных языках программирования решение проблемыпроизводится при помощи функций и структур данных, описанных в классах.Из каждого класса можно создать объект, у которого будет набор свойств и/илиметодов.

C++

Page 11: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 11http://www.slideshare.net/IgorShkulipa

Трансляторы

Трансляторы – это программы или устройства, переводящиеинформацию с языка понятного человеку, на язык, понятныйустройству.

Трансляторы

Интерпретаторы Компиляторы

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

Компилятор переводит весьтекст в машинный код, которыйв дальнейшем может бытьзапущен на выполнение

КлассическиеPascal,

C,C++

КросплатформныеJava

Page 12: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 12http://www.slideshare.net/IgorShkulipa

Процедурное программирование

Процедурное программирование — это парадигма программирования, основанная на концепции вызова процедуры. Процедуры, также известны как подпрограммы. Процедуры содержат последовательность шагов для выполнения. В ходе выполнения программы любая процедура может быть вызвана из любой точки, включая саму данную процедуру.

Преимущества:

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

- Легче отследить поток выполнения программы, чем в случае использования инструкций GOTO или JUMP, которые могут сделать из большой, сложной программы так называемый «спагетти-код».

- Возможность поддержки модульности и структурности.

Подходы к разработке программного обеспечения

Page 13: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 13http://www.slideshare.net/IgorShkulipa

Модульное программирование

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

Модуль характеризуют:

- один вход и один выход - на входе программный модуль получаетопределенный набор исходных данных, выполняет содержательнуюобработку и возвращает один набор результатных данных, т.е.реализуется стандартный принцип IPO (Input - Process - Output) - вход-процесс-выход;

- функциональная завершенность - модуль выполняет переченьрегламентированных операций для реализации каждой отдельнойфункции в полном составе, достаточных для завершения начатойобработки;

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

- слабые информационные связи с другими программными модулями -обмен информацией между модулями должен быть по возможностиминимизирован;

Подходы к разработке программного обеспечения

Page 14: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 14http://www.slideshare.net/IgorShkulipa

Структурное программирование

Это методология разработки программного обеспечения, в основе которой лежитпредставление программы в виде иерархической структуры блоков (модулей).

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

- Последовательное исполнение

- Ветвление (if)

- Цикл (for, while)

- Подпрограмма (процедура или функция)

Разработка программы в структурном программировании ведётся пошагово,методом «сверху вниз». Это позволяет вместо работающих подпрограммиспользовать "заглушку", чтобы протестировать работоспособность всейпрограммы в целом. После первого тестирования на работоспособность заглушкузаменяют реальной подпрограммой.

Подходы к разработке программного обеспечения

Page 15: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 15http://www.slideshare.net/IgorShkulipa

Объектно-ориентированное программирование

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

Принципы ООП:

Инкапсуляция — это свойство системы, позволяющее объединить данные иметоды, работающие с ними в одной оболочке, и скрыть деталиреализации от пользователя.

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

Полиморфизм — это свойство системы использовать объекты с одинаковыминтерфейсом без информации о типе и внутренней структуре объекта

Подходы к разработке программного обеспечения

Page 16: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 16http://www.slideshare.net/IgorShkulipa

Обобщенное программирование

Обобщённое программирование — парадигма программирования,заключающаяся в таком описании данных и алгоритмов, которое можноприменять к различным типам данных, не меняя само это описание.

Подходы к разработке программного обеспечения

Page 17: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 17http://www.slideshare.net/IgorShkulipa

История создания С++

Язык С был изобретен и реализован Деннисом Ритчи (DennisRitchie) для компьютера DEC PDP-11 в операционной системеUnix.

Стандарты:

С89 - ANSI/ISO – 1989 г.

С99 - ANSI/ISO – 1999 г.

C11 - ISO/IEC - 2011 г.

Деннис Ритчи1941-2011

Бьерн Страуструп придумал ряд усовершенствований к языку Cпод собственные нужды.

Добавил к С возможность работы с классами и объектами.

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

Бьерн СтрауструпВ 1983 году был переименован из «C с классами» в C++

Page 18: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 18http://www.slideshare.net/IgorShkulipa

Компиляция С++ программ в ОС Linux

Файл программыprogram.cpp

Типы файлов:- .c – программа на языке С- .cpp – программа на языке С++- .h – заголовочный файл- .o (.obj в Windows) – объектный файл- attrib +**x (.exe Windows) – исполняемый файл

Компилятор gcc

program.o

Компоновщикprogram.exe

Page 19: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 19http://www.slideshare.net/IgorShkulipa

Компиляция С++ программ

Page 20: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 20http://www.slideshare.net/IgorShkulipa

Тема 2. Состав языка C++.

Page 21: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 21http://www.slideshare.net/IgorShkulipa

Алфавит С++

Алфавит (или множество литер) языка программирования C++ основывается намножестве символов таблицы кодов ASCII. Алфавит C++ включает:

- строчные и прописные буквы латинского алфавита

- цифры от 0 до 9

- символ '_' (также считается буквой)

- специальные символы: " { } , | [ ] + - % / \ ; ' : ? < > = ! & # ~ ^ . * и др.

Алфавит C++ служит для построения слов, которые в C++ называются лексемами.

Различают пять типов лексем:

- идентификаторы

- ключевые слова

- знаки (символы) операций

- литералы

- разделители

Почти все типы лексем (кроме ключевых слов) имеют собственные правиласловообразования, включая собственные подмножества алфавита.

Page 22: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 22http://www.slideshare.net/IgorShkulipa

Ключевые слова

Часть идентификаторов C++ входит в фиксированный словарь ключевых слов. Эти идентификаторы образуют подмножество ключевых слов (они так и называются ключевыми словами).

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

Операторы:

asm, break, case, catch, continue, default, do, else, for, goto, if,

new, return, sizeof, switch, throw, try, typedef, typeid, while

Базовые типы данных:

char, double, float, int, void

Модификаторы типов:

long, short, signed, unsigned

Классы памяти:

auto, const, register, inline, static, volatile

Пользовательские типы:

class, enum, extern, friend, operator, private, protected, public,

struct, template, this, union, virtual.

Page 23: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 23http://www.slideshare.net/IgorShkulipa

Идентификаторы

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

Правила составления идентификаторов:

- начинается с буквы или знака «_»

- регистр букв имеет значение

- может иметь любое количество символов, но значимымиявляются только первые 31

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

Page 24: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 24http://www.slideshare.net/IgorShkulipa

Комментарии

1. Все, что между парными символами /* и */ считаетсякомментарием

1. Все, что после парного символа // считается комментарием

Page 25: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 25http://www.slideshare.net/IgorShkulipa

, ! != | |= % %= &

&& &= () * *= + ++ +=

- -- -= -> ->* . .* /

/= :: < << <= <<= > >>

>= >>= == ?: [] ^ ^= ~

|| # ## sizeof new delete typeid throw

Символы операций и разделителей

... ; {}

Page 26: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 26http://www.slideshare.net/IgorShkulipa

Литералы

Целочисленный литерал

Целочисленный литерал служит для записи целочисленныхзначений и является соответствующей последовательностьюцифр (возможно со знаком '-'). Может иметь префиксы 0x, 0b

Вещественный литерал

Вещественный литерал служит для отображения вещественныхзначений. Может содержать символы “.” и “E”

Символьный литерал

Значением символьного литерала является соответствующеезначения ASCII кода. Значение заключается в «’»

Строковый литерал

Строковые литералы являются последовательностью(возможно, пустой) литер в одном из возможных форматовпредставления, заключённых в «“»

Page 27: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 27http://www.slideshare.net/IgorShkulipa

Пример простейшей программы на С++

#include <iostream.h>

int main()

{

cout << "Hello, world!";

return 0;

}

#include <iostream.h> - директива

препроцессора, обозначающаяподключение к программе заголовочногофайла «iostream.h», что дает возможность

использовать описанные в нем функции внашей программе.

int main() – объявление основной

функции программы, с которой начинаетсяее выполнение.

cout << "Hello, World!"; – вызов оператора, который выводит на экран

текст «Hello, World!».

return 0; – оператор, сигнализирующий о завершении работы функции и

возвращающий ее значение.

Page 28: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 28http://www.slideshare.net/IgorShkulipa

Тема 3. Переменные и базовые типы данных.

Page 29: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 29http://www.slideshare.net/IgorShkulipa

Переменные и типы данных

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

Тип данных – множество значений переменной и множествоопераций, которые можно применять к этим значениям

•Базовые типы данных

•Составные типы данных (массивы)

•Пользовательские типы данных (структуры, перечисления,объединения)

•Классы (относятся к пользовательским типам данных)

Page 30: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 30http://www.slideshare.net/IgorShkulipa

Целочисленные типы данных

К целочисленным типам относятся типы, представленныеследующими именами основных типов:

•char

•short

•int

•long

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

•signed

•unsigned

Эти модификаторы изменяют формат представления данных, ноне влияют на размеры выделяемых областей памяти.

Page 31: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 31http://www.slideshare.net/IgorShkulipa

Диапазоны значений целочисленных типов

Тип данных Байты Биты Минимум Максимум

signed char 1 8 - 128 127

unsigned char 1 8 0 255

signed short 2 16 -32768 32767

enum 2 16 -32768 32767

unsigned

short2 16 0 65535

signed int 2 16 -32768 32767

unsigned int 2 16 0 65535

signed long 4 32 -2147483648 2147483647

unsigned long 4 32 0 4294967295

Page 32: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 32http://www.slideshare.net/IgorShkulipa

Типы с плавающей точкой

К плавающим типам относятся три типа, представленныеследующими именами типов, модификаторов и их сочетаний:

•float

•double

•long double

Так же могут использоваться с модификаторами типов.

Плавающие типы используются для работы с вещественнымичислами, которые представляются в форме записи с десятичнойточкой, так и в "научной нотации".

123.4 1.234E2

0.567 5.67Е-1

Page 33: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 33http://www.slideshare.net/IgorShkulipa

Диапазоны значений типов с плавающей точкой

Тип данных Байты Биты Минимум Максимум

float 4 32 3.4E-38 3.4E+38

double 8 64 1.7E-308 1.7E+308

long double 10 80 3.4E-4932 3.4E+4932

Page 34: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 34http://www.slideshare.net/IgorShkulipa

Типы данных

Логический тип:

•bool, принимает значения true или false, а так же “0” и “>0”

Строковый тип:

•char*, char[] – массив символов•string – класс библиотеки STL

Пустой тип:

•void

Page 35: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 35http://www.slideshare.net/IgorShkulipa

Классы памяти

Класс памяти определяет порядок размещения объекта в памяти. C++располагает четырьмя спецификаторами класса памяти:

•auto

•register

•static

•extern

-auto - спецификатор автоматического класса памяти указывает на то, что

объект располагается в локальной (или автоматически распределяемой)памяти.

-register - применяется к объектам, по умолчанию располагаемым в

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

-static -1. объект располагается по фиксированному адресу.

• 2. локален в одном программном модуле, то есть недоступен издругих модулей многомодульной программы

-extern - внешний статический класс памяти

Page 36: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 36http://www.slideshare.net/IgorShkulipa

Константы

Константы в С++:•символьные константы•целые константы•константы с плавающей точкой•ноль (0) может использоваться как константа любого указательноготипа

В C++ существует три вида символических констант:

•любому значению любого типа можно дать имя и использовать его какконстанту, добавив к его описанию ключевое слово const

•множество целых констант может быть определено как перечисление(enum)

•любое имя вектора или функции является константой.

Page 37: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 37http://www.slideshare.net/IgorShkulipa

Локальные и глобальные переменные

int global_var;

int func()

{

int local_var;

}

global_var – глобальная переменная, доступна из любой части

программы

local_var – локальная переменная, доступна только в том блоке

программы, в котором она объявлена

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

Page 38: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 38http://www.slideshare.net/IgorShkulipa

Объявление и инициализация переменных

При инициализации необходимо придерживаться следующих правил:

1. Объявления содержащие спецификатор класса памяти extern не могут

содержать инициаторов.

1. Глобальные переменные всегда инициализируются, и если это не сделаноявно, то они инициализируются нулевым значением.

1. Переменная с классом памяти static может быть инициализирована

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

1. Инициализация переменных с классом памяти auto или register

выполняется всякий раз при входе в блок, в котором они объявлены. Еслиинициализация переменных в объявлении отсутствует, то их начальноезначение не определено.

1. Начальными значениями для глобальных переменных и для переменных склассом памяти static должны быть константные выражения. Адреса таких

переменных являются константами и эти константы можно использовать дляинициализации объявленных глобально указателей. Адреса переменных склассом памяти auto или register не являются константами и их нельзя

использовать в инициаторах.

Page 39: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 39http://www.slideshare.net/IgorShkulipa

Преобразование типов

1. Присвоение "большему типу" значения "меньшего типа". Безопасноеприсвоение, гарантирует сохранение значения.

unsigned int UnsignedIntVal;

unsigned char UnsignedCharVal;

UnsignedIntVal = UnsignedCharVal;

2. Присвоение "меньшему типу" значения "большего типа". Потенциальноопасное присвоение, грозит потерей информации.

int IntVal;

char CharVal;

CharVal = IntVal;

3. Преобразование значения из "меньшего типа" в "больший тип".Называется расширением типа.

(unsigned int)UnsignedCharVal;

4. Преобразование значения из "большего типа" в "меньший тип".Называется сужением типа. Является опасным преобразованием.

(char)IntVal;

Page 40: C++ Базовый. Занятие 01

http://www.slideshare.net/IgorShkulipa 40http://www.slideshare.net/IgorShkulipa

Лабораторная работа № 1Базовые типы данных и основные операции С++

Задание:

Создать новый проект – консольное приложение на языке C++. Вывести на экранрезультат работы программы, согласно вариантам заданий.

Варианты заданий (числа N, M, a, b, c вводятся с клавиатуры):

1. Факториал числа N.

2. Сумма цифр числа N.

3. Гипотенуза прямоугольного треугольника с катетами a, b.

4. Длина медианы треугольника со сторонами a, b, c.

5. Длина высоты треугольника со сторонами a, b, c.

6. Длина биссектрисы треугольника со сторонами a, b, c.

7. Площадь треугольника со сторонами a, b, c.

8. Числа Фибоначи от 1 до N.

9. Программа, выводящая в порядке возрастания все простые числа диапазона от 1

до N.

10. Программа, определяющая простое ли число N, введенное с клавиатуры

11. Программа, определяющая делится ли число N без остатка на сумму своих цифр.

12. Программа, вычисляющая расстояние, которое пролетит тело вдоль горизонтальной

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

скоростью V0