Главная страница
Навигация по странице:

  • Символьные константы ( литералы ) из одного символа весят 1 байт – char 2- x символьные константы – 2 байта – short .

  • Структура программы. Ввод вывод.

  • ● Переменные и выражения.

  • След лекция Конспект лекции

  • Управляющие конструкции.

  • Инфа 1 курс, 1 сем, ПММ. Для экза по инфе. Обзор современных компьютерных наук


    Скачать 43.51 Kb.
    НазваниеОбзор современных компьютерных наук
    АнкорИнфа 1 курс, 1 сем, ПММ
    Дата18.05.2022
    Размер43.51 Kb.
    Формат файлаdocx
    Имя файлаДля экза по инфе.docx
    ТипОбзор
    #537577


    1. Обзор современных компьютерных наук

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

    Разделы компьютерных наук:

    ‒ Архитектура компьютера

    1. Цифровая логика

    2. Булева алгебра

    3. Теория кодирования

    4. Аппаратные методы записи и хранения информации

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

    ‒ Алгоритмы и структуры данных

    1. Теория алгоритмов

    2. Теория вычислимости

    3. Теория параллельных вычислений

    4. Теория распознавания образов

    5. Криптография

    6. Теория графов и т.п.

    ‒ Языки программирования – изучают системы обозначений для записи данных и алгоритмов

    ‒ Разработка ПО – раздел связан с созданием больших программ систем, удовлетворяющих заданным спецификациям, требованиям надежности и безопасности

    ‒ База данных и информационный поиск системы – раздел связан с организацией больших наборов сохраняемых и совместно используемых данных, допускающих обновление и эффективное выполнение запросов

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

    ‒ Компьютерная графика – связана с визуальными представлениями данных и виртуальных объектов с имитацией движения на двумерном экране или трехмерной голограмме

    ‒ Взаимодействие человека и компьютера – изучаются вопросы эффективной координаций действий и передачи информации между людьми и машинами с помощью устройств, имитирующих действия человека, а также информационные структуры, отражающие человеческие представления об окружающем мире

    ‒ Вычислительная математика – связана с численными решениями математических задач

    ‒ Компьютерная алгебра – разрабатывает и изучает методы символьных математических вычислений

    1. Устройство компьютера. Логическая схема его работы

    Основные части ПК:

    ‒ Системный блок

    ‒ Клавиатура и мышь

    ‒ Монитор

    Основные узлы системного блока:

    ‒ Электронные схемы, управляющие работой компьютера: микропроцессор, оперативная память

    ‒ Блок питания – преобразует питание сети в постоянные ток низкого напряжения, подающийся на электронные схемы компьютера

    ‒ Накопители на съемных устройствах

    ‒ Накопитель на жестком диске ( винчестер )

    Микропроцессор ( главный элемент компьютера ) – небольшая электронная схема, выполняющая все основные функции и управляющая передачей информации

    Оперативная память ( еще один важнейший элемент ( RAM) ) – из неё процессор берет программы во время работы и исходные данные для обработки, в неё же записываются результаты работы

    При выключении компьютера содержимое RAM стирается, поэтому существует внешняя память, представленная винчестером и другими видами дисков и накопителей

    Вывод – перемещение информации из оперативной памяти во внешнюю память и другие устройства

    Ввод – перемещение инфы в RAM

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

    Ввод/вывод информации не происходит непосредственно – между любым устройством и RAM есть два (2) звена

    ‒ Устройство управления ( контроллер )

    ‒ Системная магистраль передачи данных ( шина )

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

    1. Представление информации в компьютере

    Компьютерные программы и обрабатываемые данные располагаются в памяти

    ‒ бит – элементарная единица компьютерной памяти, в которой может содержаться 1 или 0

    ‒ байт - стандартная единица памяти, которая содержит 8 бит

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

    Слово – более крупная единица памяти ( 2 байта )

    Двойное слово – 4 байта

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

    Файловая система – избранный способ расположения файлов на внешнем носителе.

    Классификация программ. Основные категории:

    1. Системные программы – программы низкого уровня (управления компьютером, запуском других программ, проверяющие работоспособность устройств)

    2. Инструментальные системы – системы разработки, обеспечивающие создание новых программ

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

    Среди всех программ особое место занимают OC. Любая программа пользуется услугами ОС и поэтому может работать под управлением той ОС, которая обеспечивает для неё эти услуги

    Таким образом, выбор ОС определит, с каким программами пользователь сможет работать на компьютере

    От выбора ОС также зависит производительность работы и степень защиты данных, возможности использования аппаратных средств

    На компьютере с процессорами intel ia-32, ia-64 наиболее распространены системы ms dos, содержащие минимальные возможности, но наименее требовательные к конфигурации компьютера

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

    Windows 3.1 – оконный интерфейс относительно нетребовательный к аппаратуре

    Windows 95, 98 - системы для домашнего использования

    Windows NT, 2000, XP, 2003, Vista, 7, 8 – профессиональные OC

    Windows 10 и т.д.

    OS/2 Warp

    Mac OS

    Linux – основан на технологии Unix

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

    Драйверы поставляются вместе с новыми устройствами или контроллерами

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

    Windows Commander

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

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

    ‒ Редакторы текста

    ‒ Табличные процессоры

    ‒ Издательские системы

    ‒ Системы управления базами данных (СУБД) - обрабатывают большие массивы связной инфы

    ‒ Программы создания презентаций

    ‒ Программы экономического назначения

    ‒ Графические редакторы

    ‒ Системы автоматизированного проектирования (САПР) – программы конструирования предметов и механизмов

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

    ‒ Компьютерные игры, обучающие программы, электронные справочники и т.д.

    Программы по способу распространения делятся на:

    ‒ коммерческие

    ‒ условно-бесплатные

    ‒ бесплатные

    1. Алгоритмы и средства их записи

    Алгоритмы – упорядоченный набор недвусмысленных и выполнимых этапов, определяющих некоторый конечный процесс. В применении к компьютерам рассматриваются вычислительные алгоритмы

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

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

    С вычислительными алгоритмами, ориентированными на современную архитектуру компьютера, связано три основных понятия

    ‒ данные

    ‒ операции

    ‒ управляющая структура

    Каждый алгоритм можно рассматривать как описание множества операций, которые необходимо применить к некоторым данным в заданной последовательности

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

    В качестве элементов данных могут быть использованы константы, переменные, массивы, структуры, множества, объекты

    Операции бывают

    ‒ элементарные ( арифметические, логические, присваивания)

    ‒ сложные ( построенные на основе элементарных )

    Управляющие структуры задают последовательность применения операций к данным

    В алгоритмах рассматриваемого типа применяются 4 управляющие структуры:

    ‒ цепочка

    ‒ ветвление

    ‒ цикл

    ‒ процедура

    Цепочка – задает последовательный порядок выполнения нескольких операций, каждая операция начинается после завершения предыдущей

    Ветвление – указывает несколько возможных путей последующего выполнения алгоритмов, выбор зависит от некоторого условия

    Цикл – задает последовательное многократное выполнение одной и той же операции с возможным изменением некоторых параметров, пока выполнено указанное условие

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

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

    Средства записи алгоритмов – система обозначений, предназначенная для неформального представления идеи в процессе разработки алгоритмов

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

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

    1. +

    Языки программирования. Классификация. Реализация языков

    Язык программирования (ЯП) – строго формализованная система обозначений для описания данных и алгоритмов

    Различают языки высокого и низкого уровней

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

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

    Языки высокого уровня более близки к разговорному языку. Они в отличие от ассемблеров обычно являются машинно-независимыми

    Языки высокого уровня делятся на 4 типа

    ‒ Императивные ( процедурные )

    ‒ Функциональные ( прикладные )

    ‒ Логические

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

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

    ( Basic, Fortran, C, Pascal, Ada )

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

    ( Lisp, Haskell )

    Логические ЯП основываются на продукционных правилах «предпосылок-заключений» Заключение указывает действие, которое нужно сделать, если верна предпосылка. В таких программах не задается порядок применения правил, и система реализации языка должна сама выбрать последовательность, приводящую к желаемому результату

    ( Prolog )

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

    (Smalltalk, C++, Java, C#, Objeckt Pascal, Ada 95 )

    В настоящее время наблюдается тенденция к сочетанию парадигм в рамках одного языка

    Такие языки называются мультипарадигмальными ( мультипарадигма )

    ( Scala, F#, Python )

    Для того, чтобы на ЯП можно было программировать, требуется реализация этого языка на компьютере

    Методы реализации ЯП

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

    ‒ Трансляция – процесс перевода с 1 языка на другой ( просто метод )

    ‒ Программа на ЯП без трансляции непосредственно выполняется другой программой – интерпретатором, который программно моделирует работу машины, понимающей, используемый ЯП. Метод – интерпретация

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

    1. Этапы обработки программ. Среда разработки

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

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

    Такая готовая к выполнению объединенная программа называется загрузочным модулем

    А сам процесс сборки и настройки её внутренних связей называется редактированием связей и производится специальной программой – линкером. Запись в память компьютера готовой к выполнению программы называется загрузкой, и осуществляется загрузчиком, являющимся обычно частью ОС. После загрузки запускается выполнение программы. Как правило, при первых запусках получаются неверные результаты, поэтому следующим этапом обработки программы является отладка – поиск и исправление ошибок.

    Ошибки допущенные при разработке делят на 3 вида

    ‒ Нарушение правил языка – обнаруживаются на этапе компиляции

    ‒ Фатальные ошибки вычислений – невозможно нормальное продолжение выполнения программы. О наличии таких ошибок сообщает ОС

    ‒ Скрытые ошибки в алгоритмах – для их выявления проводится тестирование, т.е. выполнение программы с различными вариантами исходных данных, для которых результат заранее известен

    Таким образом, решение задач состоит из следующих этапов:

    ‒ Разработка алгоритма

    ‒ Запись его на ЯП

    ‒ Тестирование и отладка

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

    Среда разработки – совокупность программных инструментов, используемых при создании ПО.

    Обычно содержит:

    ‒ текстовый редактор

    ‒ компилятор ЯП

    ‒ редактор связей

    Также включает

    ‒ библиотеки готовых программных модулей

    ‒ дополнительные средства, поддерживающие единообразный способ общения с пользователем ( визуальные средства, программы отладки )

    1. Простейшие элементы языка

    Особенности языка C++

    ‒ Включает в качестве подмножества эффективный процедурный язык C

    ‒ Является объектно-ориентированным

    ‒ Имеет лаконичный и гибкий синтаксис

    ‒ Во многих аспектах не содержит строгого контроля данных

    ‒ Обладает мощными возможностями обобщенного программирования

    Простейшие элементы языка

    1. Алфавит, образованный основными неделимыми знаками ( символами ), с помощью которых пишутся все тексты на языке

    2. Лексема – минимальная единица языка, имеющая самостоятельный смысл

    3. Выражение – задает правило вычисления значения

    4. Оператор – содержит завершенное описание определенного действия

    Для писания сложных действий требуется последовательность операторов ( блок ), рассматриваемая как один сложный оператор

    Операторы бывают

    ‒ выполнимые ( задает действия над данными или их порядок)

    ‒ невыполнимые ( служат для описания данных )

    Объединенная единым алгоритмом совокупность описаний и операторов образует программу

    Язык C++ является компилируемым. Для выполнения программы её необходимо перевести на язык понятный процессору

    Этот процесс состоит из нескольких этапов:

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

    Обычный выполняемый модуль имеет расширение “exe” и может быть выполнен после загрузки в память

    Алфавит C++

    ‒ Латинские буквы, знак _

    ‒ Арабские цифры

    ‒ Специальные знаки

    ‒ Пробельные символы ( пробел, табуляция, переход на новую строку )

    Из символов формируются лексемы

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

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

    ‒ знаки операций

    ‒ константы

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

    Границы лексем определяются разделителями или знаками операций.

    Идентификатор – имя программного элемента, присвоенное ему программистом. Состоит из:

    ‒ латинских букв

    ‒ цифр

    ‒ знака _

    !!! Не начинается с цифры

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

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

    ИЛИ – разделять слова

    Длина идентификатора по стандарту C++ не ограничена, но некоторые компиляторы её ограничивают

    Идентификатор создается в момент его объявления

    Необходимо учитывать при выборе идентификатора

    ‒ уникальность

    ‒ НЕ начинать с _

    ‒ на идентификаторы внешних переменных налагаются ограничения компоновщика

    Ключевые слова – зарезервированные идентификаторы, имеющие специальные значения для компилятора.

    Знак операции – 1 и более символов, определяющие действия над данными

    По количеству операндов операции делятся на

    ‒ унарные

    ‒ бинарные

    ‒ тернарные

    Один и тот же знак может интерпретироваться по-разному. В C++ все знаки операции, кроме [ ] ( ) ? : , представляют собой лексемы.

    Константы – постоянные величины

    C++ различает целые, вещественные, символьные, строковые и логические константы. Компилятор, выделив константу как лексему, относит её к одному из типов по внешнему виду.

    Целые константы – десятичные, восьмеричные, шестнадцатеричные

    Вещественные – пишутся с фиксированной и плавающей точкой

    Символьные константы ( литералы ) из одного символа весят 1 байт – char

    2-x символьные константы – 2 байта – short. При этом первый символ лежит в байте с меньшим адресом.

    Любой символ может представляться своим кодом со знаком слеш ‘\074’

    Существует еще ряд управляющих символов, используемых при вводе выводе

    Строковые константы ( строки, строковые литералы ) состоят из ??????

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

    Запись строковой константы может переноситься на следующую строку

    К логическим константам – true, false .

    Программа на C++ может содержать текст не влияющий на её работу, а только комментирующий её.

    Комментарий // занимает строку справа

    /* */ - многострочный комментарий

    1. Типы данных

    Каждый элемент данных относится к определенному типу, что и определяет способ хранения в памяти и методы обработки. Типы данных определяют

    Внутреннее представление данных

    ‒ Множество значений, которые могут принимать величины

    ‒ Операции которые можно к ним применить

    Все типы языка С++ делятся на основные и составные

    ‒ 6 основных типов: целые, вещественные, символьные и логические

    На их основе вводят описание составных – массивы, перечисления, функции, структуры, ссылки, указатели, объединения, классы

    Основные типы данных – также называют арифметическими

    Ключевые слова – int, char, bool, wchar – целочисленные, float, double – с плавающей точкой

    Есть четыре спецификатора типа – short, long, signed, unsigned – уточняющих представление и диапазон значений типов

    Размер int – не определен

    Для 16-разрядых – 2 байта

    Для 32-разрядных – 4 байта

    Для 64-разрядных – 8 байт

    Short перед именем – 2 байта, вне зависимости от процессора

    Long – 4 байта, для 64-разрядных процессоров существует тип long long

    Внутреннее представление целочисленной величины – целое число в двоичном коде

    Signed – старший бит числа интерпретируется как знаковый, unsigned – позволяет предопределять числа только большие нуля, т.к. старший разряд рассчитывается как часть кода числа

    По умолчанию все int считаются знаковыми

    Константам приписывается тип равный их виду. Если этот тип не устраивает, можно неявно указать тип с помощью суффиксов L | U ( long, unsigned )

    Под величину символьного типа отводится один (1) байт

    Тип short со знаком -128…128, без знака 0…255

    Величины типа char хранят также целые числа, не превышающие границы указанных диапазонов.

    Wchar-t – работает с набором символов, для которых мало одного (1) байта.

    Размер зависит от реализации соотношения, равного типу short ( L “Gates” )

    Величины логического типа true\false

    Внутренне представление – false = 0, все что отлично от 0 – true.

    C++ имеет три типа данных, float, double, long double

    С плавающей точкой – double по умолчанию можно явно указать тип константы с помощью f | l

    Структура программы. Ввод вывод.

    Программа на языке c++ состоит из функций,описаний,директив и пре-процесса.Простейшее определение функций имеет следующий формат :
    тип_возвращаемого_значения([параметры] {операторы,составляющие ф-ции}).
         Основные сведения о функциях
         
    1)Если функция не должна возвращать значения указывается тип void.
    2)Тело функции является блоком и заключается в фигурные скобки.
    3)В с++ функции не могут быть вложенными.
    4)каждый оператор кроме составного заканчивается точкой с запятой,которая считается его частью.
    В программе одна из ф-ций должна иметь тип main. Выполнение программы начинается с первого оператора этой функции.Программа может состоять из нескольких модулей или исходных файлов.
    В языке с++ нет встроенного ввода вывода,они осуществляются с помощью функци и объектов,которые содержатся в стандартных библиотеках. Используются функции которые унаследованы из языка С: int scanf(consolt char*format,...)\\ввод
    int printf(const char*format,...)\\вывод



    • #include

    SetConsoleOutputCP(1251) - для русских символов
    Консольный метод:
    cin >> " "; - ввод
    cout << " "; - вывод
    Файловый метод:
    Классы - ifstream,ofstream,fstream.
    Класс ofstream используется для записи файлов:
    (ofstream out("input.txt";)
    Класс ifstream используется для чтения данных из файла:
    (ifstream in("input.txt";)Ф
    Функция close используется для закрытия файла:
    (out.close();)
    Класс fstream используется, если пользователь вводит и выводит данные из файла.
      
    ● Переменные и выражения.

    Переменная - это именованная область в памяти, предназначенная для хранения данных определённого типа. Имя переменной является постоянным, а значение может меняться. Перед использованием любая переменная должна быть описана: (int a) (указать тип и имя).
    Общий вид : [класс памяти] [const] тип имя [инициализатор];
    const сообщает, что значение переменной менять нельзя. Такая переменная называется именованной константой или просто константой. При описании переменной можно сразу указать начальное значение - это инициализация.
    Описание переменной задаёт её область действия. Область действия идентификатора - это часть программы, в которой его можно использовать для доступа к связанной с ним памяти. В зависимости от области действий переменная может быть либо локальной, либо глобальной. Если переменная определена внутри блока - она называется локальной, и область её действия от точки описания и до конца блока,включая все вложенные блоки. Если переменная определена вне блока, то она называется глобальной, и область её действия - это файл в котором она определена. Класс памяти определяет время жизни и область видимости программного объекта. Время жизни может быть постоянным или временным. Для задания класса памяти используются спецификаторы:
    1)auto - автоматическая переменная, время жизни с момента описания - до конца блока.
    2) extern - внешняя переменная, то есть переменная определяется в другом месте программы и обычно используется для создания переменных доступных из различных модулей.
    3) static - статическая переменная, время её жизни постоянно,на протяжении всей работы программы. Глобальные статические переменные видны только в том модуле, в котором описаны.
    4) register - память для такой переменной выделяется в регистре процессора.
    Если при описании значения переменных не заданы, то компилятор присваивает к глобальным и статическим переменным нулевое значение, а автоматические переменные не инициализируются.
    Описание константы или переменной может выполняться в форме объявления или определения.
    Объявление информирует компилятор о типе и классе памяти, а определение помимо этого даёт указание компилятору выделить память в соответствии с типом.
    Переменная может быть объявлена многократно, но определена только в одном месте программы.



    •           

    • Операции

    Операции делятся на унарные, бинарные и тернарные.
    Унарные:
    ++ - инкремент (увеличение на 1)
    -- - декремент (уменьшение на 1)
    Префиксная запись: ++i
    Постфиксная: i++
    В префиксной форме сначала изменяется операнд, потом его значение становится результирующим выражением,а в постфиксной форме значением выражения является исходное значение операнда, после чего он изменяется.
    Операндом инкремента в общем случае должно быть L-значение. В C++ так называется любое выражение, адресующее некоторый участок памяти, в который можно занести значение. В С++ вызов функции считается операцией.
    Операция определения размера: sizeof.
    Операция отрицания: "-", "!", "

    ".
    "-" - меняет знак (арифметическое отрицание);
    "!" - меняет true на false и наоборот (логическое отрицание);
    "" - инвертирует каждый разряд в двоичном представлении операнда (поразрядное отрицание);
    ---------------------------------------
    Текст создаёт 3 группа
    След лекция
    Конспект лекции:

    Операции:
        
    1. Сложение, вычитание, умножение.

    2. Деление и остаток от деления.
    Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результат операции приводится к целому числу (дробная часть отбрасывается). Операция остатка от деления применяется только к целочисленным операндам, знак результата зависит от реализации.

    3. Сдвиг.
    Применяется к целочисленным операндам и сдвигает двоичное представление первого операнда влево или вправо на количество разрядов, заданное вторым операндом. При сдвиге влево освободившиеся разряды обнуляются, вправо - освободившиеся биты заполняются знаковым разрядом (если сдвигается число со знаком) и нулём (если первый операнд беззнаковый).

    4. Отношение.
    Сравнивает первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результат - значение true или false. Операция сравнения на равенства и неравенства имеет меньший приоритет.

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

    6. Логические.
    Операнды могут иметь арифметический тип или тип "указатель". При этом операнды в каждой операции могут быть различных типов. Любой операнд оценивается с точки зрения его эквивалентности нулю ( операнд, равный нулю - false, не равный нулю - true). Логические операции выполняются слева направо. Если значения первого операнда достаточно, чтобы определить результат, второй не вычисляется.

    7. Присваивание.
    Любая операция присваивания может использоваться как самостоятельный оператор. Формат операции простого присваивания: операнд_1 = операнд_2. Сначала вычисляется выражение в правой части операции, а потом его результат записывается в область памяти, указанную левой частью. Предыдущее содержимое этой области памяти теряется.
    Формат операции сложного присваивания: операнд_1 Op = операнд_2. Сначала вычисляется операнд_2, потом к операндам применяется Op, после чего результат записывается по адресу, определяемому левой частью. Например, при сложении с присваиванием ко второму операнду прибавляется первый и результат записывается в первый операнд ( a += b эквивалентно a = a + b). Результатом операции присваивания является значение, записанное в её левую часть.

    8. ?:
    Операнд_1 ? операнд_2 : операнд_3. Первый операнд может иметь арифметический тип или быть указателем. Его значение оценивается с точки зрения эквивалентности нулю. Если он соответствует true, то результатом условной операции будет значение второго операнда, иначе - третьего операнда.

    Выражения
     
    Выражение может состоят из операндов, операций и скобок. Оно используется для вычисления значения определённого типа. Каждый операнд является выражением. Операции выполняются в соответствии с их приоритетами. Если выражение содержит несколько операций одного приоритета, то унарные операции, условная операция и присваивание выполняются справа налево, а остальные - слева направо. Порядок вычисления независимых подвыражений не определён. Результат вычисления выражения характеризуется значением и типом. Таким образом, в C++ допустимы выражения такого вида: a + b //7 int; a = b //5 int;
    В выражения могут входить операнды различных типов. Если они имеют одинаковый тип, то результат операции будет иметь тот же тип. Если они разного типа - перед вычислениями выполняются преобразования типов по определённым правилам, обеспечивающим преобразования более коротких типов в более длинные для сохранения значимости и точности.
    Преобразования бывают двух типов: изменяющие внутренние представления величин (с потерей точности или без неё) и изменяющие только интерпретацию внутреннего строения. К первому типу относятся: преобразование целого числа в вещественное (без потери точности) и наоборот (с возможной потерей точности). Второй тип: преобразование знакового целого числа в беззнаковое. Можно также задавать преобразования типов явным образом.

    Управляющие конструкции.

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


    • Оператор выражения



    • Любое выражение, которое заканчивается ";" рассматривается как оператор. Его выполнение заключается в вычислении выражений. Частный случай: пустой оператор, используется, когда по синтаксису он требуется, а по смыслу - нет. Можно сформировать цепочку операторов, разделяя их ";". В C++ есть операция "последовательное выполнение", которая также обозначается с ";".



    • Оператор ветвления



    • Условный оператор используется для разветвления процесса вычисления на два направления. Общий вид: if (выражение) оператор_1; [else оператор_2;]. Сначала вычисляется выражение, которое может иметь арифметический тип или тип-указатель. Если оно не равно нулю, то выполняется первый оператор, иначе - второй. После этого управление передаётся оператору, следующему за данным условием. Вторая ветвь может отсутствовать. Если в какой-либо ветви требуется несколько операторов, их заключают в блок. Блок может содержать любые операторы, в том числе описание и другие условные операторы.



    • Оператор выбора switch (переключатель) предназначен для разветвления на несколько направлений. Выполнение оператора выбора начинается с вычисления выражения. Оно должно быть целочисленно. Затем управление передаётся цепочке операторов, значения константового выражения которой совпадает с вычисленным. После этого, если выход из переключателя явно не указан, последовательно выполняются все остальные ветви. Выход из переключателя выполняется с помощью операторов break и return. Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошо, выполняются операторы, расположенные после слова default.

    След лекция
      

    Операторы циклов
    Любой цикл состоит из:

    * тела цикла

    * инициалзации

    * проверки параметра цикла

    * проверки условия продолженния цикла

    Один проход цикла - итерация. Проверка условия выполняется при каждой итерации либо до тела цикла, либо после. Тело цикла с постусловием выполняется хотя бы один раз. Переменная, изменяющаяся в теле цикла и используемая при проверке усовия продолжения цикла - параметр цикла. Целочисленный параметр изменяется с постоянным шагом на каждой итерации - счётчик цикла. Инициализация может явно не присутствовать. Её смысл состоит в том, чтобы до входа в цикл объявить используемые в нём переменные и задать начальные значения. Работа цикла завершается, если условие продолжения не выполнено. Возможно принудительное завершение, как текущей итерации, так и цикла в целом. Для этого служат операторы: break, continue и return.
    В С++ существуют 3 оператора цикла: while, do-while и for.

    1) Цикл с предусловием

    while (выражение):

    {оператор;}

    Тип выражения должен быть арифметическим или приводимым к нему. Условие вычисляется при каждой итерации цикла. Если оно равно true, итерация выполняется.

    2) Цикл с постусловием

    do {оператор} while (выражение);

    Тип выражения должен быть арифметическим или приводимым к нему.

    3) Цикл с параметром

    for (инициаизация; выражение; модификации) {оператор};

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

    Выражение определяет условие выполнения цикла.

    Модификации выполняются после каждой итерации цикла. Обычно служат для изменения параметров цикла. Здесь тоже можно записать несколько параметров через запятую.

    Простой или составной оператор представляет собой тело цикла.
    Операторы передачи управления
    1) безусловный переход (go to)

    Не используется.

    2) выход из цикла (break)

    Break используются внутри операторов цикла или внутри switch для перехода в точку программы, которая находится непосредственно за блоком, в котором находится break.

    3) переход к следующей итерации (continue)

    Continue пропускает все операторы, оставшиеся до конца выполнения цикла и передаёт управление на начало следющей операции.

    4) возврат из функии (return)

    Завершает выполнение функции и передаёт управление в точку, следующую за её вызовом. Выражение должно иметь тип возвращаемого функции значения. Если тип функции - void, то return должен отсутствовать.

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

    int *a, b,*c.

    Тип может быть любым, кроме ссылки и битового поля. Звездочка относится имени, поэтому для объявления нескольких указателей нужно ставить её перед именем каждого из них. Указатель на функцию также содержит адрес. Он используется для косвенного вызова ( не по имени функции, а по средствам переменной, содержащей её адрес), а также для передачи одной функции в другую в качестве параметра. Его объявление имеет вид:

    тип (*имя) (список_типов_аргументов);

    Можно определить указатель на указателе, или указатель на void. Это применяется в том случае когда конкретный тип адресуемых элементов не определён. Например, если в одной переменной возможно хранение адресов различных типов. Указателю на void можно присвоить значение указателя любого типа, а также сравнивать его с любыми указателями. Однако, перед выполнением каких-либо действий с областью памяти, на которую он ссылается, требуется преобразовать его к конкретному типу явным образом.

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

    В С++ используются два способа работы с динамической памятью. Первый использует функции malloc и free. А второй использует операции new и delete. Указателю можно присваивать следующие значения: адрес существующего элемента, явный адрес области памяти, пустое значение, адрес выделенного участка динамической памяти. С указателями можно выполнять ряд операций:

    * разадресация - получения значения по адресу;

    * присваивание;

    * сложение с константой;

    * вычитание;

    * инкремент/декремент;

    * сравнение, приведение типов;

    * амперсанд (получение адреса) - &;

    Операция разадресации предназначена для доступа к величине, адрес которой содержится в указателе. На одну и ту же область памяти может ссылаться несколько указателей различного типа. Применяемая к ним операция разадресации может давать различные результаты. При смешивании в выражении указателей разных типов, явное преобразование типов требуется для всех указателей, кроме void*. Указатель может неявно преобразовываться в bool, при этом ненулевой указатель преобразуется в true, а нулевой в false. Значение 0 или пустой указатель неявно преобразуются к указателю любого типа.

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


    написать администратору сайта