Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Проверил ______________________ Беляков С.Л



Проверил ______________________ Беляков С.Л.

(подпись)

Таганрог – 2012г.


Тема №1 «Тождество, качество программ»

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

Наиболее часто употребляемыми являются:

1. Правильность

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

2. Надежность

Надежность – это способность системы работать без сбоя и отказа в течение заданного времени. Причиной ненадежности программы являются не выявленные ошибки. Кроме того работоспособность программ связана с работоспособностью оборудования.

3. Производительность

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

4. Ресурсы

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

5. Защита

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

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

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

Тема №2 «Основные этапы технологии разработки программ»

Первым этапом является постановка задачи.

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

Следующим этапом является моделирование.

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

Одним из простейших средств моделирования являются блок-схемы.

Следующим этапом является кодирование и отладка.

Состоит в написании программы (текста программы) и отладки ее в системе программирования.

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

Следующим этапом является тестирование.

Этот этап нацелен на оценку качества продукции.

Следующий этап это опытная эксплуатация (бета-версия).

Тема №3 «Исполнение программ вычислительными устройствами»

Всякая программа выполняется процессорами.

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

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

Принцип программного управления (фон Неймана).

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

Различие в видах не определяется способом кодирования, а зависит от интерпретации.

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

Данные представляются и обрабатываются соответственно логике, которая принята для исполнения команд.

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

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

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

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

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

Исполнение программ.

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

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

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

Компиляция исходного кода – это преобразование текста в последовательность машинных команд.

Системы программирования.

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

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

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

Одна из основных функций системы программирования – это создание и ведение проекта программ.

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

Лекция №3 «Структура программ на С++. Отладка.»
Программа на языке С++ включает в себя программный код и директивы препроцессора.

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

Препроцессор выполняет директивы начинающиеся с символа «#». Каждая директива имеет наименование и параметры.

Директива #include в качестве параметра содержит имя файла, текст из которого будет подставляться вместо директивы.

Программный код состоит из функций. Функция включает в себя следующее:

1) Тип результата (возвращаемого значения)

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

3) Список параметров (число параметров функции не ограничивается; список – это последовательность пар типов и имен параметров; пара выделяется запятыми)

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

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

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

Описание элементов – это указание имени и типа.

Описание может размещаться в любом месте до первого использования этой переменной.

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

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

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

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

Зоны действия переменных

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

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

Зона действия переменных определяется:

1) Границами программного блока;

2) Переменные локализованы телом функции;

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

3) Зона действия глобальных переменных ограничивается функциями файла, содержащего определения этих функций.

Лекция №4 «Простые (встроенные) типы данных С ++»

Язык Си относится к типизированным языкам программирования. Всякая переменная программы обязательно должна иметь тип. Типизированные языки по сравнению с не типизированными дают более надежные программы.

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

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

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

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

Например, тип char занимает 1 байт.

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

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

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

Таблицы – это стандарты копирования.

Тип данных, отображающий числа.

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

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

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

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

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

Выполняющая система у С ++ не считает переполнение аварийной ситуацией. Результатом является число, полученное отбрасыванием младших 32-х разрядных. Контроль за переполнение возлагается на программиста.

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

Что бы обнаружить ситуацию переполнения следует использовать функцию finite. В качестве аргумента эта функция принимает выражение. Результат равен нулю, если переполнения нет и число не равно нулю.

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

Лекция №5 «Поразрядные операции над числами»

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

Поразрядная операция «И» (&) используется для маскирования отдельных разрядов.

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

Маска – это двоичное число, которое содержит единицы нужных разрядов.

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

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

Символьные массивы и строки.

Символьные массивы в С ++ создаются и обрабатываются 2-мя способами:

1) Традиционный;

2) Обработка символьного массива как строки.

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

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

Указатели – это произвольный тип, позволяющий хранить адреса памяти, которая разместила переменные.

char *pM;

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

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

pM = &M[0]

получает адрес нулевого элемента массива.

Операция «звездочка (*)» перед именем указателя означает операцию над содержимым памяти, на которую указывает указатель.

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

Существуют функции sscanf и sprint аналогичные вводу-выводу с консоли. Функции работы со строками обеспечивают наибольшую компактность программ.

Лекция №6 «Передача параметров функциям по значению или по указателю»

В языке С ++ принято 2 способа передачи данных для обработки в функции: по значению или по ссылке (указателю).

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

FuncA (x, y, z)

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

FuncA (&x, &y, &z)

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

Использование ссылок.

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

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

Обработка массивов в функции.

При обработки массива внутри функции для перехода от одних элементов массива к следующему используют операцию увеличения указателя (А ++), увеличение на единицу указателя изменяет адрес, на то число, которое соответствует i указателю.

Например: если указатель целого типа, то адрес будет увеличен на 4, поскольку число занимает 4 байта. При программировании не учитывать разрядность не следует. Это соответствует указанному типу указателя.

Структуры.

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

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

Например: манипулирование переменной типа Student не требует знаний и внутренней структуры (копирование, передача функциям и т.д.)

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

Объединение (union)

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

По сути одно и тоже значение представляется данными разного типа.

Лекция №7 «Классы»

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

Свойства класса – это любые типы данных.

Методы – это функции выполняющие обработку данных.

Аналогичным образом функции можно включать в структуры (struct).

Основным отличием класса является то, что в классах употребляются ключевые слова ограничивающие доступ к элементам класса (ключевые слова public, private, protected).

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

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

2) Private – определяет закрытые свойства и методы. Эти свойства и методы недоступны внешним пользователям, однако доступны любым методам класса.

3) Protected – определяет свойства и методы закрытые от внешних пользователей, но доступные в классах, связанных с данным классом отношением наследования.

Любое описание класса состоит из 2 частей: интерфейса и реализации.

Интерфейс – это перечисление типов и имен свойств, а также сигнатур методов.

Реализация класса – это программный код методов класса.

:: - оператор прямой видимости.

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

Класс string

String – является одним из типов, которые объявлены в библиотеке #include <string>

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

Например:

- строка способна динамически изменять свою длину.

- строки допускают объединение с использованием оператора суммирования (+).

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

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





Дата публикования: 2014-11-26; Прочитано: 175 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.02 с)...