1) Διανομή σε Υποδοχές
1.1) Διανομή Ομοίων Αντικειμένων σε Υποδοχές
1.2) Διανομή Διαφορετικών Αντικειμένων Χωρίς Σειρά σε Υποδοχές
1.3) Διανομή Διαφορετικών Αντικειμένων Με Σειρά σε Υποδοχές
2) Γνωστά Προβλήματα Διατάξεων
2.1) Εξίσωση
3) Μεθοδολογία Ασκήσεων
3.1) Διανομή Ομάδων Ομοίων
3.2) Διανομή Ομοίων με Περιορισμό
3.3) Διάταξη με Εμφύτευση Υποδοχών
Ασκήσεις
1) Διανομή σε Υποδοχές
1.1) Διανομή Ομοίων Αντικειμένων σε Υποδοχές
1.2) Διανομή Διαφορετικών Αντικειμένων Χωρίς Σειρά σε Υποδοχές
1.3) Διανομή Διαφορετικών Αντικειμένων Με Σειρά σε Υποδοχές
2) Γνωστά Προβλήματα Διατάξεων
2.1) Εξίσωση
3) Μεθοδολογία Ασκήσεων
3.1) Διανομή Ομάδων Ομοίων
3.2) Διανομή Ομοίων με Περιορισμό
3.3) Διάταξη με Εμφύτευση Υποδοχών
Ασκήσεις
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...Luigi Sambolino
Presentation made at 8th IEEE/ACM International Conference on Utility and Cloud Computing
December 07-10, 2015 – St. Raphael Resort, Limassol, Cyprus
(http://cyprusconferences.org/ucc2015/) by Luigi Sambolino
Authors: Raffaele Bolla, Matteo Repetto, Danilo Tigano and Luigi Sambolino
This work has been proposed by CNIT (www.cnit.it) and University of Genoa (www.unige.it) and it is part of ARCADIA European Project (http://www.arcadia-framework.eu/wp/)
Autumn is one of the best times to visit Niigata. The leaves are so unbelievably colourful and complement the scenery so well. We visited Shibata, Tsukioka Onsen (sake tasting), the Niigata Central market, Murasugi (outdoor onsen), Lake Hyoko (Swan Lake) and Agano, before heading to Niigata city.
Indian Nutritional Medical Association (INMA) began in 2004 by Dr.A. Sreekumar MBBS,DLO,Senior ENT Surgeon and Nutritional Medicine expert, FACNEM,FINEM
www.4innmc.com
Lean UX - Applying Lean Principles to improve
User Experience in Agile environment. It accomplishes this by getting out of the deliverables business and instead focusing on successful experiences.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.IT-Доминанта
Основные понятия связанные с разработкой ПО: просто о сложном.
Лаабе Дмитрий
Генеральный директор и основатель IT-Доминанта, Технический директор, программист портала Айти-Событие.рф", Санкт-Петербург.
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...Luigi Sambolino
Presentation made at 8th IEEE/ACM International Conference on Utility and Cloud Computing
December 07-10, 2015 – St. Raphael Resort, Limassol, Cyprus
(http://cyprusconferences.org/ucc2015/) by Luigi Sambolino
Authors: Raffaele Bolla, Matteo Repetto, Danilo Tigano and Luigi Sambolino
This work has been proposed by CNIT (www.cnit.it) and University of Genoa (www.unige.it) and it is part of ARCADIA European Project (http://www.arcadia-framework.eu/wp/)
Autumn is one of the best times to visit Niigata. The leaves are so unbelievably colourful and complement the scenery so well. We visited Shibata, Tsukioka Onsen (sake tasting), the Niigata Central market, Murasugi (outdoor onsen), Lake Hyoko (Swan Lake) and Agano, before heading to Niigata city.
Indian Nutritional Medical Association (INMA) began in 2004 by Dr.A. Sreekumar MBBS,DLO,Senior ENT Surgeon and Nutritional Medicine expert, FACNEM,FINEM
www.4innmc.com
Lean UX - Applying Lean Principles to improve
User Experience in Agile environment. It accomplishes this by getting out of the deliverables business and instead focusing on successful experiences.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.IT-Доминанта
Основные понятия связанные с разработкой ПО: просто о сложном.
Лаабе Дмитрий
Генеральный директор и основатель IT-Доминанта, Технический директор, программист портала Айти-Событие.рф", Санкт-Петербург.
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
Иногда единственным методом отладки является использование протоколирования событий приложения. К недостаткам протоколирования (логирования) можно отнести большой объем кода, который приходится писать вручную для сохранения всей необходимой информации. В статье рассматривается методика, позволяющая построить систему автоматического протоколирования кода на языке Си/Си++.
Рассмотрю с практической стороны создание своего предметно-ориентированного языка. Продемонстрирую почти готовое решение возникшей задачи и расскажу, в каких случаях может потребоваться внедрение DSL.
Докладчик: Михаил Воротынцев (AgoraDoxa)
Видео: https://www.youtube.com/watch?v=Qf0TjcBG1oI
1. Модуль 1: Базовые понятия языка программирования С++
Темы лекции: Введение. Немного истории. Состав языка.
Переменные и базовые типы данных.
Практическое задание: Базовые типы данных и основные
операции С++.
Тренер: Игорь Шкулипа, к.т.н.
C++ Базовый. Занятие 1
2. http://www.slideshare.net/IgorShkulipa 2http://www.slideshare.net/IgorShkulipa
Курс «C++ для начинающих»
Курс состоит из четырех основных модулей:
1. Базовые понятия языка программирования С++
• Введение. Немного истории
• Состав языка
• Переменные и базовые типы данных
• Форматированный ввод/вывод
• Основные операции языка С++
• Операторы языка С++
• Функции
• Структура программы на языке С++
2. Пользовательские типы данных и работа с динамической памятью
• Массивы и указатели
• Пользовательские типы данных
• Динамическая память
3. Основные понятия объектно-ориентированного программирования
• Введение в объектно-ориентированное программирование
• Объектно-ориентированное программирование на языке С++
• Принципы ООП
• Перегрузка методов и операторов
• Наследование и полиморфизм
• Потоковый ввод-вывод
4. Дополнительные темы объектно-ориентированного программирования
• Шаблоны типов
• Обработка исключений
• Пространства имен
• Проектирование программного обеспечения
• Паттерны проектирования
3. http://www.slideshare.net/IgorShkulipa 3http://www.slideshare.net/IgorShkulipa
Время и оценка результатов курса
Курс состоит из 25 занятий, общей длительностью 100 часов аудиторной
работы.
Оценка теоретической части:
1. Три промежуточных теста (максимальная оценка - 100 баллов)
2. Результирующий тест (максимальная оценка - 100 баллов)
Оценка практической части:
1. 17 лабораторных работ (максимальная средняя оценка - 100
баллов)
Курсовой проект:
1. На протяжении курса студенты выполняют курсовой проект по
индивидуальной теме (максимальная оценка - 100 баллов)
4. 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%
5. 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 стр.
7. http://www.slideshare.net/IgorShkulipa 7http://www.slideshare.net/IgorShkulipa
ЦП
Центральный процессор
Вычислительная машина фон-Неймана
● Программное управление вычислительным процессом путем автоматического
извлечения команд программы из памяти и последовательного их выполнения.
● Общая память для программ и данных.
● Одинаковое кодирование программ и данных.
● Использование двоичной системы счисления.
● Арифметическое устройство на базе двоичного сумматора.
АЛУ
Арифметико-логическое
устройство
УУ
Устройство управления
Память
СВВ
Система ввода-вывода
ВУ
Внешнее устройство
ВУ
Внешнее устройство
ВУ
Внешнее устройство
ВУ
Внешнее устройство
8. http://www.slideshare.net/IgorShkulipa 8http://www.slideshare.net/IgorShkulipa
Функциональная организация типовой ЭВМ
1. Процессор (центральный процессор) — основной вычислительный блок компьютера, содержит важнейшие
функциональные устройства:
• устройство управления с интерфейсом процессора (системой сопряжения и связи процессора с другими узлами машины);
• арифметико-логическое устройство;
• процессорную память.
Процессор, является устройством, выполняющим все функции элементарной вычислительной машины.
1. Оперативная память — запоминающее устройство, используемое для оперативного хранения и обмена информацией с
другими узлами машины.
2. Каналы связи (внутримашинный интерфейс) служат для связи центральных узлов машины с ее внешними
устройствами.
3. Внешние устройства обеспечивают эффективное взаимодействие компьютера с окружающей средой: пользователями,
объектами управления, другими машинами. В состав внешних устройств обязательно входят внешняя память и
устройства ввода-вывода.
ЦП
Центральный процессор
АЛУ
Арифметико-
логическое
устройство
УУ
Устройство
управления
ПП
Процессорная
память
ОП
Оперативная память
КС
Каналы связи
ВУ
Внешние устройства
ВП
Внешняя память
ВВ
Ввод-вывод
9. http://www.slideshare.net/IgorShkulipa 9http://www.slideshare.net/IgorShkulipa
Языки программирования
Машинный код
Языком программирования первого поколения считается машинный код.
Машинный код состоит из инструкций, которые компьютер (процессор) может
выполнить (а также данных, которые принадлежат этим инструкциям).
Программируя на машинном коде, программист должен был писать свою
программу в двоичном коде, так что бы процессор мог это понять и исполнить.
Язык ассемблера
При программировании на языке Ассемблера же инструкции представлены
человеку в понятной форме. Само программирование является очень похожим на
программирование в машинном коде, потому что инструкции те же самые, что и
в машинном коде (только в другом виде - в виде слов). Программа, написанная
на языке Ассемблера, представляет собой что-то вроде следующего:
MOV AL, 19
ADD AL, 4
OUT 2
Языки высокого уровня
Такие языки программирования не очень связаны с аппаратными средствами.
Это значит, что программист не должен больше очень точно знать устройство и
особенности аппаратного обеспечения, однако может сравнительно независимо
аппаратных средств, после чего эта программа преобразуется при помощи
некоторых разных инструментов в форму понятную аппаратному обеспечению.
FROTRAN, BASIC, Pascal, C, C++
10. http://www.slideshare.net/IgorShkulipa 10http://www.slideshare.net/IgorShkulipa
Базовые типы языков программирования
Процедурные
В процедурных языках программирования на языке программирования
описываются действия и порядок их выполнения, а также эти действия
разбиваются на группы (подпрограммы). Из процедур в свою очередь
формируются структуры кода, которые можно повторно использовать.
Pascal
Функциональные
В функциональных языках программирования всё решение описывается при
помощи функций.
C
Объектно-ориентированные
В объектно-ориентированных языках программирования решение проблемы
производится при помощи функций и структур данных, описанных в классах.
Из каждого класса можно создать объект, у которого будет набор свойств и/или
методов.
C++
11. http://www.slideshare.net/IgorShkulipa 11http://www.slideshare.net/IgorShkulipa
Трансляторы
Трансляторы – это программы или устройства, переводящие
информацию с языка понятного человеку, на язык, понятный
устройству.
Трансляторы
Интерпретаторы Компиляторы
Интерпретатор последовательно
читает команды языка
программирования, переводит их
на машинный язык и выполняет.
Компилятор переводит весь
текст в машинный код, который
в дальнейшем может быть
запущен на выполнение
Классические
Pascal,
C,
C++
Кросплатформные
Java
12. http://www.slideshare.net/IgorShkulipa 12http://www.slideshare.net/IgorShkulipa
Процедурное программирование
Процедурное программирование — это парадигма программирования,
основанная на концепции вызова процедуры. Процедуры, также известны как
подпрограммы. Процедуры содержат последовательность шагов для выполнения.
В ходе выполнения программы любая процедура может быть вызвана из любой
точки, включая саму данную процедуру.
Преимущества:
- Возможность повторного использования одного и того же кода из
нескольких мест программы без его копирования.
- Легче отследить поток выполнения программы, чем в случае
использования инструкций GOTO или JUMP, которые могут сделать из
большой, сложной программы так называемый «спагетти-код».
- Возможность поддержки модульности и структурности.
Подходы к разработке программного
обеспечения
13. http://www.slideshare.net/IgorShkulipa 13http://www.slideshare.net/IgorShkulipa
Модульное программирование
Модульное программирование основано на понятии модуля - логически
взаимосвязанной совокупности функциональных элементов, оформленных в
виде отдельных программных модулей.
Модуль характеризуют:
- один вход и один выход - на входе программный модуль получает
определенный набор исходных данных, выполняет содержательную
обработку и возвращает один набор результатных данных, т.е.
реализуется стандартный принцип IPO (Input - Process - Output) - вход-
процесс-выход;
- функциональная завершенность - модуль выполняет перечень
регламентированных операций для реализации каждой отдельной
функции в полном составе, достаточных для завершения начатой
обработки;
- логическая независимость - результат работы программного модуля
зависит только от исходных данных, но не зависит от работы других
модулей;
- слабые информационные связи с другими программными модулями -
обмен информацией между модулями должен быть по возможности
минимизирован;
Подходы к разработке программного
обеспечения
14. http://www.slideshare.net/IgorShkulipa 14http://www.slideshare.net/IgorShkulipa
Структурное программирование
Это методология разработки программного обеспечения, в основе которой лежит
представление программы в виде иерархической структуры блоков (модулей).
Любая программа представляет собой структуру, построенную из базовых
конструкций имеющие следующие отличительные черты:
- Последовательное исполнение
- Ветвление (if)
- Цикл (for, while)
- Подпрограмма (процедура или функция)
Разработка программы в структурном программировании ведётся пошагово,
методом «сверху вниз». Это позволяет вместо работающих подпрограмм
использовать "заглушку", чтобы протестировать работоспособность всей
программы в целом. После первого тестирования на работоспособность заглушку
заменяют реальной подпрограммой.
Подходы к разработке программного
обеспечения
15. http://www.slideshare.net/IgorShkulipa 15http://www.slideshare.net/IgorShkulipa
Объектно-ориентированное программирование
Объектно-ориентированное программирование - технология программирования,
при которой программа рассматривается как набор дискретных объектов,
содержащих, в свою очередь, наборы структур данных и процедур,
взаимодействующих с другими объектами.
Принципы ООП:
Инкапсуляция — это свойство системы, позволяющее объединить данные и
методы, работающие с ними в одной оболочке, и скрыть детали
реализации от пользователя.
Наследование — это свойство системы, позволяющее описать новый класс на
основе уже существующего с частично или полностью заимствующейся
функциональностью. Класс, от которого производится наследование,
называется базовым, родительским или суперклассом. Новый класс —
потомком, наследником или производным классом.
Полиморфизм — это свойство системы использовать объекты с одинаковым
интерфейсом без информации о типе и внутренней структуре объекта
Подходы к разработке программного
обеспечения
17. http://www.slideshare.net/IgorShkulipa 17http://www.slideshare.net/IgorShkulipa
История создания С++
Язык С был изобретен и реализован Деннисом Ритчи (Dennis
Ritchie) для компьютера DEC PDP-11 в операционной системе
Unix.
Стандарты:
С89 - ANSI/ISO – 1989 г.
С99 - ANSI/ISO – 1999 г.
C11 - ISO/IEC - 2011 г.
Деннис Ритчи
1941-2011
Бьерн Страуструп придумал ряд усовершенствований к языку C
под собственные нужды.
Добавил к С возможность работы с классами и объектами.
Позже в язык были добавлены новые возможности, такие как
виртуальные функции, перегрузка функций и операторов,
ссылки, константы, пользовательский контроль над управлением
свободной памятью, улучшенная проверка типов и новый стиль
комментариев
Бьерн СтрауструпВ 1983 году был переименован из «C с
классами» в C++
21. http://www.slideshare.net/IgorShkulipa 21http://www.slideshare.net/IgorShkulipa
Алфавит С++
Алфавит (или множество литер) языка программирования C++ основывается на
множестве символов таблицы кодов ASCII. Алфавит C++ включает:
- строчные и прописные буквы латинского алфавита
- цифры от 0 до 9
- символ '_' (также считается буквой)
- специальные символы: " { } , | [ ] + - % / ; ' : ? < > = ! & # ~ ^ . * и др.
Алфавит C++ служит для построения слов, которые в C++ называются лексемами.
Различают пять типов лексем:
- идентификаторы
- ключевые слова
- знаки (символы) операций
- литералы
- разделители
Почти все типы лексем (кроме ключевых слов) имеют собственные правила
словообразования, включая собственные подмножества алфавита.
22. 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.
23. http://www.slideshare.net/IgorShkulipa 23http://www.slideshare.net/IgorShkulipa
Идентификаторы
Идентификатором называется последовательность цифр и букв, а
также специальных символов, при условии, что первой стоит буква
или специальный символ.
Правила составления идентификаторов:
- начинается с буквы или знака «_»
- регистр букв имеет значение
- может иметь любое количество символов, но значимыми
являются только первые 31
- идентификатор не должен совпадать с ключевыми словами, с
ключевыми словами и именами функций библиотеки
компилятора языка программирования С++
26. http://www.slideshare.net/IgorShkulipa 26http://www.slideshare.net/IgorShkulipa
Литералы
Целочисленный литерал
Целочисленный литерал служит для записи целочисленных
значений и является соответствующей последовательностью
цифр (возможно со знаком '-'). Может иметь префиксы 0x, 0b
Вещественный литерал
Вещественный литерал служит для отображения вещественных
значений. Может содержать символы “.” и “E”
Символьный литерал
Значением символьного литерала является соответствующее
значения ASCII кода. Значение заключается в «’»
Строковый литерал
Строковые литералы являются последовательностью
(возможно, пустой) литер в одном из возможных форматов
представления, заключённых в «“»
27. 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; – оператор, сигнализирующий о завершении работы функции и
возвращающий ее значение.
29. http://www.slideshare.net/IgorShkulipa 29http://www.slideshare.net/IgorShkulipa
Переменные и типы данных
Переменная – поименованная область памяти, адрес которой можно
использовать для осуществления доступа к данным. Данные,
находящиеся в переменной (то есть по данному адресу памяти),
называются значением этой переменной.
Тип данных – множество значений переменной и множество
операций, которые можно применять к этим значениям
•Базовые типы данных
•Составные типы данных (массивы)
•Пользовательские типы данных (структуры, перечисления,
объединения)
•Классы (относятся к пользовательским типам данных)
30. http://www.slideshare.net/IgorShkulipa 30http://www.slideshare.net/IgorShkulipa
Целочисленные типы данных
К целочисленным типам относятся типы, представленные
следующими именами основных типов:
•char
•short
•int
•long
Имена целочисленных типов могут использоваться в сочетании с
парой модификаторов типа:
•signed
•unsigned
Эти модификаторы изменяют формат представления данных, но
не влияют на размеры выделяемых областей памяти.
31. 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
short
2 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
32. http://www.slideshare.net/IgorShkulipa 32http://www.slideshare.net/IgorShkulipa
Типы с плавающей точкой
К плавающим типам относятся три типа, представленные
следующими именами типов, модификаторов и их сочетаний:
•float
•double
•long double
Так же могут использоваться с модификаторами типов.
Плавающие типы используются для работы с вещественными
числами, которые представляются в форме записи с десятичной
точкой, так и в "научной нотации".
123.4 1.234E2
0.567 5.67Е-1
35. http://www.slideshare.net/IgorShkulipa 35http://www.slideshare.net/IgorShkulipa
Классы памяти
Класс памяти определяет порядок размещения объекта в памяти. C++
располагает четырьмя спецификаторами класса памяти:
•auto
•register
•static
•extern
-auto - спецификатор автоматического класса памяти указывает на то, что
объект располагается в локальной (или автоматически распределяемой)
памяти.
-register - применяется к объектам, по умолчанию располагаемым в
локальной памяти. Представляет из себя "ненавязчивую просьбу" к
транслятору (если это возможно) о размещении значений объектов,
объявленных со спецификатором register в одном из доступных регистров,
а не в локальной памяти.
-static -1. объект располагается по фиксированному адресу.
• 2. локален в одном программном модуле, то есть недоступен из
других модулей многомодульной программы
-extern - внешний статический класс памяти
36. http://www.slideshare.net/IgorShkulipa 36http://www.slideshare.net/IgorShkulipa
Константы
Константы в С++:
•символьные константы
•целые константы
•константы с плавающей точкой
•ноль (0) может использоваться как константа любого указательного
типа
В C++ существует три вида символических констант:
•любому значению любого типа можно дать имя и использовать его как
константу, добавив к его описанию ключевое слово const
•множество целых констант может быть определено как перечисление
(enum)
•любое имя вектора или функции является константой.
37. http://www.slideshare.net/IgorShkulipa 37http://www.slideshare.net/IgorShkulipa
Локальные и глобальные переменные
int global_var;
int func()
{
int local_var;
}
global_var – глобальная переменная, доступна из любой части
программы
local_var – локальная переменная, доступна только в том блоке
программы, в котором она объявлена
глобальные переменные экранируются локальными
38. http://www.slideshare.net/IgorShkulipa 38http://www.slideshare.net/IgorShkulipa
Объявление и инициализация переменных
При инициализации необходимо придерживаться следующих правил:
1. Объявления содержащие спецификатор класса памяти extern не могут
содержать инициаторов.
1. Глобальные переменные всегда инициализируются, и если это не сделано
явно, то они инициализируются нулевым значением.
1. Переменная с классом памяти static может быть инициализирована
константным выражением. Инициализация для них выполняется один раз
перед началом программы. Если явная инициализация отсутствует, то
переменная инициализируется нулевым значением.
1. Инициализация переменных с классом памяти auto или register
выполняется всякий раз при входе в блок, в котором они объявлены. Если
инициализация переменных в объявлении отсутствует, то их начальное
значение не определено.
1. Начальными значениями для глобальных переменных и для переменных с
классом памяти static должны быть константные выражения. Адреса таких
переменных являются константами и эти константы можно использовать для
инициализации объявленных глобально указателей. Адреса переменных с
классом памяти auto или register не являются константами и их нельзя
использовать в инициаторах.
39. 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;
40. 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