Внутренний формат представления данных. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Внутренний формат представления данных.



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

 

MS Visual Studio 2010.

Microsoft Visual Studio - мощная среда разработки, обеспечивающая высокое качество кода на протяжении всего цикла разработки ПО, от проектирования до внедрения. Какие бы приложения вы не разрабатывали, для SharePoint, Интернет, Windows, Windows Phone, и других платформ, Visual Studio это универсальное всеобъемлющее решение.

2. Классификация и сравнительная характеристика языков программирования.

3. Основные этапы выполнения программы в ПК.

4. Преобразование исходного текста программы.

5. Общая характеристика систем программирования. Состав.

6. Стандартные и пользовательские типы данных.

 

Внутренний формат представления данных.

 

Внутренний формат представления данных.

Логические данные (булевский тип)

Представлен двумя значениями: истина и ложь.

Символьные данные

Значением символьного типа является множество всех символов ПК.

1 символ = 1 байт (ASCII, ДКОИ, КОИ-8 и т.д.)

1 символ = 2 байта (Unicode)

В компьютере каждый символ обычно обозначен одним байтом - восьмью двоичными цифрами. Это всего 256 возможных значений.

Данные с фиксированной точкой

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

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

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

Виды внутреннего формата:

Предмашинный формат -Внутренний формат, предназначенный для представления результатов аналитико-синтетической обработки (переработки) документов и фактов и обеспечения ввода данных в ЭВМ. Реализуется предмашинный формат в виде рабочих листов (бумажных формуляров и/или на экране монитора).

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

Формат хранения -Внутренний формат, предназначенный для обеспечения компактности представления записей в БД и удобства перехода в рабочий формат и обратно.

Рабочий формат - Внутренний формат, предназначенный для обеспечения простоты и высокой скорости доступа ко всем элементам данных при выполнении разнородных видов машинной обработки и преобразования данных.

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

Издательский формат -Формат, обеспечивающий выполнение требований к издательской продукции (например, в части правил представления библиографических описаний документов - ГОСТ 7.1-84.[21]).

Формат вывода, выходной Ф [ output format] -Формат выдачи результатов работы программы.

 

Выражения и операции.

Выражения и операции

Выражения представляют собой множество данных связанных между собой операциями - особыми операторами языка, возвращающих некоторое значение. Аргументы операций называют операндами. Большинство операций либо унарные (с одним операндом) или бинарные (с двумя операндами). Также операции характеризуются приоритетом (старшинством) выполнения в выражении. Например, результат выражения 4+5*2 будет 14, а не 18, так как операция умножения имеет больший приоритет, чем сложение. Операции одинакового приоритета выполняются последовательно слева направо.

Унарные арифметические операции

· ++ - инкремент, увеличивает значение целочисленной переменной на 1;

· -- - декремент, уменьшает значение целочисленной переменной на 1;

· + - оставляет знак числа;

· - - изменяет знак числа.

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

Бинарные арифметические операции

· + - сложение чисел или строк;

· - - вычитание чисел;

· * - умножения чисел;

· / - деления чисел;

· % - вычисление остатка от деления чисел.

Операции отношения

· > - больше;

· >= - больше либо равно;

· < - меньше;

· <= - меньше либо равно;

· == - равно;

· != - не равно.

Логические операции

· && - логическая И;

· || - логическая ИЛИ;

·! - логическое НЕ.

Побитовые операции

Данные операции выполняются над целочисленными типами.

· & - побитовая И;

· | - побитовая ИЛИ;

· ^ - побитовая исключающая ИЛИ;

· ~ - побитовое инвертирование;

· >> - битовый сдвиг вправо;

· << - битовый сдвиг влево.

Операции с памятью

· * - разъименование;

· [] - индексация;

· & - взятие адреса;

· new - выделение памяти;

· delete - освобождение памяти.

 

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


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

Тип Операции Операции
"запятая" ,
присвоение = += -= *= /= %= <<= >>= >>>= &= ^= |=
условная ?:
логическое ИЛИ ||
логическое И &&
побитовое ИЛИ |
побитовое исключающее ИЛИ ^
побитовое И &
равенство ==!= ===!==
соотношение < <= > >= in instanceof
побитовый сдвиг << >> >>>
сложение/вычитание + -
умножение/деление * / %
отрицание/инкремент ! ~ - + ++ -- typeof void delete
вызов/создание экземпляра () new
член . []

 

10. Операторы языка. Классификация.

11. Простые операторы.

12. Структура программы.

13. Организация ввода-вывода данных.

14. Программирование консольных приложений.

15. Составные операторы.

16. Организация переходов.

17. Разветвляющиеся процессы.

18. Циклические процессы.

 

Файлы. Работа с файлами.

Файл – набор данных размещенных на носителе; регулярная структура данных, состоит из записей.

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

 


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

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

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

3 способа представления файла:

1. Последующий файл – для доступа к определенной записи нужно иметь доступ к предыдущей записи.

2. Прямой

3. Библиотечный

 

3 способа работы с файлами:

1. Если нужно считать весь файл целиком, то надо использовать методы класса IO.

2. Если нужно работать только с одним файлом на чтение и только одним файлом на запись, то надо использовать перенаправление потока

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

Работа с файлами осуществляется из трех шагов:

1. Файл открывается.

Программа «захватывает» файл, и сообщает об этом ОС Windows, чтобы не возникало конфликтов, когда несколько программ хотят записать данные из файла обычно уточняется, что файл открывается на чтение либо на запись. Операция открытия файла возвращает некий идентификатор, который идентифицирует в программе этот файл.

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

2. Производится работа с файлом. Данные либо считываются из него, либо в него записываются.

3. Файл открывается. После этой операции он доступен для других программ.

 

Основные понятия ООП. Классы.

ООП - парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

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

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

После того, как Вы объявили состав класса, необходимо определить (описать), что делает каждая функция-член (метод).

Существует 2 способа включения метода в класс:

1. Определение метода при описании класса.

2. Объявление метода при описании, а его описание - при вызове.

Методы, определенные внутри класса, являются неявно встроенными.

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

Объект - экземпляр класса.

Инкапсуляция

Класс представляет собой единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его «самодостаточным» для решения конкретных задач. В результате класс всегда несет в себя некоторую функциональность. Например, класс TForm

black swan movie full

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

Инкапсуляция является мощным средством обмена готовыми к работе программами заготовками.

Наследование

Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса родителя: TChildClass = class(TParentClass)

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

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

TaClass = class (TObject)

TaClass

buy something borrowed the movie

= class

were can i watch the dilemma the movie

Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещение от класса Tobject к его потомкам. Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам.

Полиморфизм

Полиморфизм - это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу и, следовательно, придающих объектам разные свойства. Это и называется полиморфизмом объектов.

Платформа.NET.

.NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является исполняющая среда Common Language Runtime (CLR), способная выполнять как обычные программы, так и серверные веб-приложения..NET Framework поддерживает создание программ, написанных на разных языках программирования.

Основной идеей при разработке.NET Framework являлось обеспечение свободы разработчика за счёт предоставления ему возможности создавать приложения различных типов, способные выполняться на различных типах устройств и в различных средах.

Вторым принципом стало ориентирование на системы, работающие под управлением семейства операционных систем Microsoft Windows.

Программа для.NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для.NET промежуточный байт-код Common Intermediate Language (CIL). В терминах.NET получается сборка, англ. assembly. Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR, встроенный в неё JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.

Среды разработки, поддерживающие.NET:

· Microsoft Visual Studio (C#, Visual Basic.NET, Managed C++, F#)

· SharpDevelop

· MonoDevelop

· Embarcadero RAD Studio (Delphi for.NET); ранее Borland Developer Studio (Delphi for.NET, C#)

· Zonnon

· PascalABC.NET

Приложения.NET также можно разрабатывать в текстовом редакторе, просто вызывая компилятор из командной строки.

 

Механизм обработки событий

Механизм обработки событий является местом, где событие идентифицируется и выбирается соответствующая реакция на него, которая затем выполняется. Это также может привести к созданию ряда утверждений. Например, если пришедшее в механизм обработки событие сообщает, что «Продукт N заканчивается», этот факт может породить реакцию «Заказать продукт N» и «Уведомить персонал».

 

Типы данных в C#.

 

Концепция типа данных

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

Тип данных определяет:

ü Внутреннее представление данных в памяти компьютера;

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

ü Операции и функции, которые можно применять к величинам этого типа.

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

Основные типы данных:

Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:

· Int (целый);

· Char (символьный);

· Wchar_t(расширенный символьный);

· Bool(логический);

· Float(вещественный);

· Double(вещественный с двойной точностью).

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

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

· Short (короткий);

· Long (длинный);

· Signed (знаковый);

· Unsigned (беззнаковый).

Целый тип (int)

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного – 4 байта.

Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, ф на 32-разрядном – int и long int.

Внутреннее представление величины целого типа – целое число в двоичном коде. При использовании спецификатора При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 – положительное число, 1 – отрицательное число). Спецификатор usigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом диапазон значений типа int зависит от спецификаторов. Диапазон значений величин целого типа с различными спецификаторами для IBM PC-совместимых компьютеров в таблице

тип Диапазон значений Размер (байт)
Bool True, false  
Signed char -128…127  
Unsigned char 0…255  
Signed short int -32768…32767  
Unsigned short int 0…65535  
Signed long int -2147483648…2147483647  
Unsigned long int 0…4294967295  
Float 3.4e-38…3.4e+38  
Double 1.7e-308…1.7e+308  
Long double 3.4e-4932…3.4e+4932  

По умолчанию все целочисленные типы считаются знакомыми, то есть спецификатор signed можно опускать.

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

Символьный тип (char)

Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило это 1 байт.

Расширенный символьный тип (wchar_t)

Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа различается от реализации; как правило, он соответствует типу short.

Логический тип (bool)

Величины логического типа могут принимать только значение true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false – 0. любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.

Тип void

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

 

Битовые поля.

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

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

Одна из функций должна иметь main. Выполнение программы начинается с первого оператора этой функции. Простейшее определение функции имеет следующий вид:

Тип_возвращаемого_значения имя ([параметры]){

операторы, составляющие тело функции}

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

ü Если функция не должна возвращать значение указывается тип void;

ü Тело функции является блоком и следовательно заключается в фигурные скобки;

ü Функции не могут быть вложенными;

ü Каждый оператор заключается точкой запятой (кроме составного оператора).

Программа может состоять из нескольки модулей.

Несколько предварительных замечаний о вводе/выводе.

Способы ввода/вывода:

· Int scanf(const char*format, …) //ввод

· Int printf(const char*format, …) //вывод

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

 

Оператор «выражение»

Любое выражение завершающееся точкой с запятой рассматривается как оператор выполнения, которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор;. Пример:

i++; //выполняется операция инкремента

a*=b+c; //выполняется умножение с присваиванием
fun(i,k); //выполняется вызов функции

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

Условный оператор if

Условный оператор if используется для разветвления процесса вычислений на два направления.

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

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

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

#include <iostream.h>

Int main(){

Cout <<”введите координаты выстрела\n”;

Cin >>x>>y;

Temp = x*x+y*y;

Kol = 0;

If (temp < 4) kol = 1;

If (temp < 1) kol = 2;

Cout <<”\n очков” << kol;

Return 0;}

Если какая-либо переменная используется только внутри условного оператора, рекомендуется объявить ее внутри скобок, например:

If (int I = fun(t)) a -=I; else a +=I;

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

Оператор switch

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений.

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

Ветви из переключателя обычно выполняется с помощью операторов break или return. Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while, do. Оператор return выполняет выход из функций, в теле которой он записан.

Все контактные выражения должны иметь разные значения но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы расположенные после слова default.

Операторы цикла

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

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

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

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

Цикл завершается если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации так и цикла в целом. Для этого служат операторы break, continue, return, goto. Передавать управление извне внутрь цикла не рекомендуется.

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

Цикл с предусловием реализует структурную схему и имеет вид:

While (выражение) оператор

Выражение определяет условие повторения тела цикла представленного простым или составным оператором. Выполнение оператора начинается с вычисления выражения. Если оно истинно выполняется оператор цикла. Если при первой проверке выражение равно false цикл не выполнится ни разу. Тип выражения должно быть арифметическим или проводимым к нему. Выражение вычисляется перед каждой итерацией цикла.

Распространенный прием программирования – организация бесконечного цикла с заголовком while (true) либо while (1) и принудительным выходом из тела цикла по выполнению какого-либо условия.

В круглых скобках после ключевого слова while можно вводить описание переменной.

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

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

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

Выражение определяет условие выполнения цикла: если его результат, приведенный к типу bool равен true цикл выполняется. Цикл с параметром реализован как цикл с предусловием.

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

Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот.

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

Чтобы избежать ошибок рекомендуется:

o Проверить всем ли переменным встречающимся в правой части операторов присваивания в теле цикла присвоены до этого начальные значения;

o Проверить изменяется ли в цикле хотя бы одна переменная входящая в условие выхода из цикла;

o Предусмотреть аварийный выход из цикла по достижению некоторого количества итераций;

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

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

Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы раз.

Оператор for предпочтительнее в большинстве остальных случаев.

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

Оператор goto

Оператор безусловного перехода goto имеет формат:

Goto метка;

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

Использование оператора безусловного перехода оправдано в двух случаях:

ü Принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей;

ü Переход из нескольких мест функции в одно.

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

В любом случае не следует передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию переменных, на операторы, расположенные после нее, поскольку в этом случае инициализация не будет выполнена.

Оператор break

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

Оператор continue

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

Оператор return

Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова.

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

Массивы

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

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

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

Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках.

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

Идентификатор массива является константным указателем на его нулевой элемент.

Динамические массивы создают с помощью операции new, при этом необходимо указать тип и размерность.

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

Память, зарезервированная под динамический массив с помощью new[], должна освобождаться операцией delete [].

При несоответствии способов выделения и освобождения памяти результат не определен. Размерность массива в операции delete не указывается, но квадратные скобки обязательны.

Многомерные массивы задаются указанием каждого изменения в квадратных скобках, например, оператор

Int matr [6][8];

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



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 972; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.199.88 (0.18 с.)