Решение систем линейных уравнений методом Крамера

Автор работы: Пользователь скрыл имя, 25 Декабря 2014 в 14:19, курсовая работа

Описание работы

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

Содержание работы

Введение
2
1 Теоретическая часть
4
1.1 Технология разработки программных средств
4
1.2 Алгоритмизация и программирование
7
1.2.1 История развития алгоритмических языков
7
1.2.2 Основные функции технологии программирования
7
1.2.3 История создания С++
12
1.3 Основы теории и синтаксиса языка программирования С++
15
1.3.1 Синтаксис языка С++
15
1.3.2 Правила записи программы на языке С++
15
1.3.3 Правила формального описания синтаксиса языка программирования
17
2 Практическая часть
18
2.1 Решение систем линейных уравнений методом Крамера
18
2.2 Пример решения системы линейных уравнений методом Крамера
20
2.2.1 Техническое задание на учебный программный продукт
20
2.2.2 Алгоритм решения задачи
21
2.2.3 Список используемых идентификаторов
21
2.2.4 Инструкция по использованию программы
21
2.2.5 Минимальная конфигурация
21
2.2.6 Назначение ПО
22
2.2.7 Документация на учебный программный продукт
22
Заключение
24
Литература

Файлы: 1 файл

Курсовая работа (Захватаев Сергей АиУ-12)(1) (Восстановлен).docx

— 527.94 Кб (Скачать файл)

 

 

1.2 Алгоритмизация и программирование

1.2.1 История  развития алгоритмических языков

 

Первые вычислительные устройства появились ещё в XVII веке благодаря работам Блюса Паскаля.

Первая электронно-вычислительная машина была разработана в XIX веке Чарльзом Баббидином. Бурное развитие вычислительной техники началось в середине 50-х годов, программы для таких машин писали в машинных кодах. Такие программы были трудны для понимания, разработкой таких программ занимались люди, которые очень хорошо знали устройство данной машины. Для облегчения труда программистов были придуманы алгоритмические языки высокого уровня. Программа на таком языке пишется с помощью команд. Первый алгоритмический язык был разработан в 1949 году Short Code. Алгоритмические языки: FORTАN (середина 50-х), Algol 60 (1962),

3. РLI 1(1964)

4. COBOL (1963)

5. Algol 68 (1968)

6. РАSСАL(1970)

7. С++(1972)

8. ВАS1С(1964).

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

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

- как ввести информацию  в программу (ввод);

- как хранить информацию  в программе (данные);

- как указать правильные  команды для обработки данных (операции);

- как передать обратно  данные из программы пользователю (вывод).

Программист может упорядочить команды таким образом, чтобы:

 

- некоторые из них выполнялись  только, если выполняется некоторое  условие или ряд условий (условное  выполнение);

- другие выполнялись повторно  некоторое число раз (циклы);

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

 

 

1.2.2 Основные функции технологии программирования

 

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

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

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

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

  • защита от сбоев аппаратуры;

  • защита от влияния "чужой" программы;
  • защита от отказов "своей" программы;
  • защита от ошибок оператора (пользователя);
  • защита от несанкционированного доступа;
  • защита от защиты.

Защита от сбоев аппаратуры в настоящее время является не очень злободневной задачей (с учетом уровня достигнутой надежности компьютеров). Но все же полезно знать ее решение. Его обеспечивается организацией так называемых "двойных-тройных просчетов". Для этого весь процесс обработки данных, определяемый ПС, разбивается по времени на интервалы так называемыми "опорными точками". Длина этого интервала не должна превосходить половины среднего времени безотказной работы компьютера. Копия состояния изменяемой в этом процессе памяти каждой опорной точке записывается во вторичную память с некоторой контрольной суммой (числом, вычисляемым как некоторая функция от этого состояния) в том случае, когда будет считаться, что обработка данных от предыдущей опорной точки до данной (т.е. один "просчет") произведена правильно (без сбоев компьютера). Для того, чтобы это выяснить, производится два таких "просчета". После первого "просчета" вычисляется и запоминается указанная контрольная сумма, а затем восстанавливается состояние памяти для предыдущей опорной точки и делается второй "просчет". После второго "просчета" вычисляется снова указанная контрольная сумма, которая затем сравнивается с контрольной суммой первого "просчета". Если эти две контрольные суммы совпадают, второй просчет считается правильным, в противном случае контрольная сумма второго "просчета" также запоминается и производится третий "просчет" (с предварительным восстановлением состояния памяти для предыдущей опорной точки). Если контрольная сумма третьего "просчета" совпадет с контрольной суммой одного из первых двух "просчетов", то третий просчет считается правильным, в противном случае требуется инженерная проверка компьютера.

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

  • защита от отказов,
  • защита от злонамеренного влияния "чужой" программы.

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

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

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

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

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

Защита от несанкционированного доступа обеспечивается использованием

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

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

Другая разновидность такой защиты связана с защитой сообщений, пересылаемых по компьютерным сетям, преднамеренных (или злонамеренных) искажений. Такое сообщения может перехватываться на "перевалочных" пунктах компьютерной сети и подменяться другим сообщением от автора перехваченного сообщения. Такая ситуация возникает прежде всего при осуществлении банковских операций с использованием компьютерной сети. Путем подмены такого сообщения, являющего распоряжением владельца банковского счета о выполнении некоторой банковской операции деньги с его счета могут быть переведены на счет "взломщика" защиты (своеобразный вид компьютерного ограбления банка). Защиту от такого взлома защиты можно осуществить следующим образом. Наряду с функцией F определяющей компьютерную подпись владельца секретного слова X, которую знает адресат защищаемого сообщения (если только ее владелец является клиентом этого адресата), в ПС определена другая функция Stamp, по которой отправитель сообщения должен вычислить число S=Stamp(X,R), используя секретное слово X и текст передаваемого сообщения R. Функция Stamp также считается хорошо известной всем пользователям ПС и обладает таким свойством, что по S практически невозможно ни восстановить число X, ни подобрать другое сообщение R с соответствующей компьютерной подписью.

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

Отладка = Тестирование + Поиск ошибок + Редактирование.

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

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

Информация о работе Решение систем линейных уравнений методом Крамера