МИНИСТЕРСТВО ПО РАЗВИТИЮ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОММУНИКАЦИЙРЕСПУБЛИКИ УЗБЕКИСТАН
ФЕРГАНСКИЙ ФИЛИАЛ
ТАШКЕНТСКОГО УНИВЕРСИТЕТА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРЕЗМИ
ФИНАЛЬНЫЙ ПРОЕКТ
по дисциплине: “Программирование 1”
Тема: Сжать массив а1, …, а10 путем выбрасывания повторяющихся элементов.
Выполнил: студент гр. 654-20 Журахонов Юсуфхон
Фергана - 2020
Введение
Язык программирования является подмножеством естественного языка и предназначен для поддержки процесса общения человека с компьютером. В общем случае язык -- это множество предложений, которые можно записать на нем. Отличие языка программирования от естественного -- в его законченности или замкнутости. Под этим понимается, что теоретически можно перечислить все предложения, которые можно на нем составить. Для естественного языка это невозможно. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель под её управлением. Язык программирования был создан для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс, организовать управление различными объектами, и тому подобное.
Язык программирования отличается от естественных языков тем, что предназначен для управления Электронно-Вычислительными Машинами, в то время как естественные языки используются, прежде всего, для общения людей между собой. Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений. Как правило, язык программирования определяется не только через спецификации стандарта языка, формально определяющие его синтаксис и семантику, но и через реализации стандарта -- программные средства, обеспечивающих трансляцию или интерпретацию программ на этом языке; такие программные средства различаются по производителю, марке и версии, времени выпуска, полноте воплощения стандарта, дополнительным возможностям; могут иметь определённые ошибки или особенности воплощения, влияющие на практику использования языка или даже на его стандарт.
1. Теоретическая часть
1.1 История языка программирования C++
C++ компилируемый язык программирования общего назначения, сочетает свойства как высокоуровневых, так и низкоуровневых языков программирования. В сравнении с его предшественником, языком программирования С (Си), наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «язык программирования C++» происходит от языка программирования C (Си), в котором унарный оператор ++ обозначает инкремент переменной.
Язык программирования C++ широко используется для разработки программного обеспечения. А именно, создание разнообразных прикладных программ, разработка операционных систем, драйверов устройств, а также видео игр и многое другое. Существует несколько реализаций языка программирования C++ -- как бесплатных, так и коммерческих. Их производят проекты: GNU, Microsoft и Embarcadero (Borland). Проект GNU -- проект разработки свободного программного обеспечения (СПО).
Язык программирования С++ был создан в начале 1980-х годов, его создатель сотрудник фирмы Bell Laboratories -- Бьёрн Страуструп. Он придумал ряд усовершенствований к языку программирования C, для собственных нужд. То есть изначально не планировалось создания языка программирования С++. Ранние версии языка С++, известные под именем «Cи с классами», начали появляться с 1980 года. Язык C (Си) , будучи базовым языком системы UNIX, на которой работали компьютеры фирмы Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами, тем самым зародил предпосылки нового, основанного на синтаксисе С (Си), языка программирования. Синтаксис C++ был основан на синтаксисе C (Си), так как Бьёрн Страуструп стремился сохранить совместимость с языком C (Си). В 1983 году произошло переименование языка из «Cи с классами» в «язык программирования C++». В него были добавлены новые возможности: виртуальные функции, перегрузка функций и операторов, ссылки, константы и многое другое. Его первый коммерческий выпуск состоялся в октябре 1985 года. Язык программирования C++ является свободным, то есть никто не обладает на него правами.
В C++ доступны следующие встроенные типы. Типы C++ практически полностью повторяют типы данных в C:
Символьные: char, wchar_t (char16_t и char32_t, в стандарте C++11).
Целочисленные знаковые: signed char, short int, int, long int (и long long, в стандарте C++11).
Целочисленные беззнаковые: unsigned char, unsigned short int, unsigned int, unsigned long int(и unsigned long long, в стандарте C++11).
С плавающей запятой: float, double, long double.
Логический: bool, имеющий значения true или false.
Операции сравнения возвращают тип bool. Выражения в скобках после if, while приводятся к типу bool.
Язык ввёл понятие ссылок, а начиная с одиннадцатой версии стандарта rvalue-ссылки и передаваемые ссылки.
C++ добавляет к C объектно-ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм.
В стандарте C++ под классом (class) подразумевается пользовательский тип, объявленный с использованием одного из ключевых слов class, struct или union, под структурой (structure) подразумевается класс, определённый через ключевое слово struct, и под объединением (union) подразумевается класс, определённый через ключевое слово union.
В теле определения класса можно указать как объявления функций, так и их определение. В последнем случае функция является встраиваемой (inline). Нестатические функции-члены могут иметь квалификаторы const и volatile, а также ссылочный квалификатор (& или &&).
Стандартные C++ библиотеки представляют собой наборы функций, констант, классов, объектов и шаблонов, которые расширяют язык С++ предоставляя базовую функциональность для выполнения различных задач, таких как: классы для взаимодействия с операционной системой, контейнеры данных, манипуляторы для работы с этими данными и наиболее используемые алгоритмы.
Все элементы стандартных библиотек С++ распределены по различным заголовочным файлам, которые необходимо подключать к программе. Только так можно использовать элементы этих библиотек. Стандартные библиотеки языка программирования С++: cmath, ctime, cstring, cstdlib, ios0 fstream, iostream и другие.
Стандартные библиотеки С++: заголовочные файлы ввода/вывода
Рис. 1
В С++ программисту предоставляется возможность использовать абстракцию, которая называется потоки ввода/вывода. Данная абстракция специально разработана для выполнения операций ввода/вывода оперируя последовательностью символов, например: файлы или строки. Эта функциональность обеспечивается через несколько связанных классов, как показано на следующей схеме.
На схеме можно увидеть имена файлов, указанные сверху. Каждый класс имеет имя, стрелочками отображены отношения между классами. Черные прямоугольники -- это объекты классов: cout -- объект класса ostream, cin -- объект класса istream и так далее.
Ключевое слово -- это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их использование в программе в качестве идентификаторов не допускается. Их можно использовать только в том смысле, в котором они определены.
Ключевые слова делятся на:
· спецификаторы типов: char, double, enum, float, int, long, short struct, signed, union, unsigned, void, typedef
· квалификаторы типов: const, volatile
· квалификаторы классов памяти: auto, extern, register, static
· операторы языка и идентификаторы специального назначения: break, continue, do, for, goto, if, return, switch, while; default, cas else, sizeof
· модификаторы и псевдопеременные: конкретный набор зависит от компилятора
· C++ имеет зарезервированный набор из 84 слов (включая С++14) для собственного использования.
· Эти cлова называются ключевыми словами (keywords), каждое из них имеет свое особое значение.
1.2 Тип данных bool
Первый в таблице -- это тип данных bool -- целочисленный тип данных, так как диапазон допустимых значений -- целые числа от 0 до 255. Но как Вы уже заметили, в круглых скобочках написано -- логический тип данных, и это тоже верно. Так как bool используется исключительно для хранения результатов логических выражений. У логического выражения может быть один из двух результатов true или false. true -- если логическое выражение истинно, false -- если логическое выражение ложно.
Но так как диапазон допустимых значений типа данных bool от 0 до 255, то необходимо было как-то сопоставить данный диапазон с определёнными в языке программирования логическими константами true и false. Таким образом, константе true эквивалентны все числа от 1 до 255 включительно, тогда как константе false эквивалентно только одно целое число -- 0.
1.3 Тип данных char
Тип данных char -- это целочисленный тип данных, который используется для представления символов. То есть, каждому символу соответствует определённое число из диапазона [0;255]. Тип данных char также ещё называют символьным типом данных, так как графическое представление символов в С++ возможно благодаря char. Для представления символов в C++ типу данных char отводится один байт, в одном байте -- 8 бит, тогда возведем двойку в степень 8 и получим значение 256 -- количество символов, которое можно закодировать. Таким образом, используя тип данных char можно отобразить любой из 256 символов. Все закодированные символы представлены в таблице ASCII.
1.4 Целочисленные типы данных
Целочисленные типы данных используются для представления чисел. В таблице 1 их аж шесть штук: short int, unsigned short int, int, unsigned int, long int, unsigned long int. Все они имеют свой собственный размер занимаемой памяти и диапазоном принимаемых значений. В зависимости от компилятора, размер занимаемой памяти и диапазон принимаемых значений могут изменяться. В таблице 1 все диапазоны принимаемых значений и размеры занимаемой памяти взяты для компилятора MVS2010. Причём все типы данных в таблице 1 расположены в порядке возрастания размера занимаемой памяти и диапазона принимаемых значений. Диапазон принимаемых значений, так или иначе, зависит от размера занимаемой памяти. Соответственно, чем больше размер занимаемой памяти, тем больше диапазон принимаемых значений. Также диапазон принимаемых значений меняется в случае, если тип данных объявляется с приставкой unsigned -- без знака. Приставка unsigned говорит о том, что тип данных не может хранить знаковые значения, тогда и диапазон положительных значений увеличивается в два раза, например, типы данных short int и unsigned short int.
Приставки целочисленных типов данных:
short -- приставка укорачивает тип данных, к которому применяется, путём уменьшения размера занимаемой памяти;
long -- приставка удлиняет тип данных, к которому применяется, путём увеличения размера занимаемой памяти;
unsigned (без знака) -- приставка увеличивает диапазон положительных значений в два раза, при этом диапазон отрицательных значений в таком типе данных храниться не может.
Так, что, по сути, мы имеем один целочисленный тип для представления целых чисел -- это тип данных int. Благодаря приставкам short, long, unsigned появляется некоторое разнообразие типов данных int, различающихся размером занимаемой памяти и (или) диапазоном принимаемых значений.
1.5 Типы данных с плавающей точкой
В С++ существуют два типа данных с плавающей точкой: float и double. Типы данных с плавающей точкой предназначены для хранения чисел с плавающей точкой. Типы данных float и double могут хранить как положительные, так и отрицательные числа с плавающей точкой. У типа данных float размер занимаемой памяти в два раза меньше, чем у типа данных double, а значит и диапазон принимаемых значений тоже меньше. Если тип данных float объявить с приставкой long, то диапазон принимаемых значений станет равен диапазону принимаемых значений типа данных double. В основном, типы данных с плавающей точкой нужны для решения задач с высокой точностью вычислений, например, операции с деньгами.
Язык C++ включает в себя те же библиотеки, что и Си, организованы они также, со следующими отличиями: Каждый заголовок файла имеет то же имя, что и версия языка Си, но с префиксом «c» и без расширения. Например, в C++ эквивалент заголовочного файла -- это. Каждый элемент библиотек определён в стандартном пространстве имен. Тем не менее, для совместимости с языком Cи, традиционный формат записи имен заголовочных файлов -- «имя файла.h» (например, stdlib.h) также предоставляется с теми же определениями в рамках глобального пространства имен. В приведенных примерах в этом справочнике, присутствуют примеры полностью совместимы с языком программирования Си, хотя его применение не рекомендуется использовать в C++.
wchar_t является одним из основных типов в C + + и поэтому он не определён в соответствующем заголовочном файле, как это было сделано в Си. Это же относится к некоторым макросам, которые теперь являются зарезервированными ключевыми словами в C++. Следующие функции претерпели некоторые изменения в своих определениях, связанных с параметрами: strchr, strpbrk, strrchr, strstr, memchr. Функции atexit, exit и abort, определенные в также претерпели изменений, коснувшихся их поведения. Перегружены версии некоторых функций, с дополнительными типами данных, параметры и семантика осталась без изменений. Например, появились типы данных float и long double в прототипах функций заголовочного файла cmath.
cassert
Заголовочный файл, содержащий макросы, используемые для диагностики, помогающей при отладке программы.
cctype