Содержание
Введение
1. Основные этапы решения задачи на эвм
2. Элементарные алгоритмические структуры
3. Основы программирования
Литература
Введение
Тема контрольной работы «Этапы подготовки и решения задач на ЭВМ. Стили программирования» по дисциплине «Вычислительная техника и основы программирования».
Цель работы – рассмотреть основные этапы решения задачи на эвм; элементарные алгоритмические структуры; основы визуального программирования.
1. Основные этапы решения задачи на эвм
В настоящее время на ЭВМ решают самые разнообразные задачи, от расчета баллистических траекторий до завоевания инопланетных территорий (пока только в компьютерных играх). В каждом случае ЭВМ выполняет какую-то программу, обычно довольно сложную. Некоторые из программ требуют от пользователя специальных знаний и высокой квалификации, например, программы электронной верстки или автоматизированного проектирования, но здесь мы будем говорить не об использовании, а об изготовлении программ. Несмотря на бесконечное разнообразие программ, в самом процессе их изготовления можно усмотреть нечто общее и выделить несколько этапов решения задачи на ЭВМ.
Под постановкой задачи понимают математическую или иную строгую формулировку решаемой задачи. Этот этап включает определение целей создаваемой программы и определение ограничений, налагаемых на программу. При постановке задачи должны быть определены требования:
- ко времени решения поставленной задачи;
- объему необходимых ресурсов, например, оперативной памяти;
- точности достигаемого результата.
Если задача вычислительная, то на этом этапе следует выбрать метод расчета, если разрабатывается компьютерная игра, должен быть определен ее сценарий. В любом случае следует выбрать или создать некую формальную модель, которая, в конечном счете, реализуется в будущей программе. На этапе проектирования определяют вид данных, с которыми будет работать программа, основные части, из которых программа будет состоять и характер связей между этими частями.
На этом этапе следует разработать детали проекта программы. Детализацию необходимо довести до той степени, когда кодирование деталей программы (перевод их на алгоритмический язык) станет тривиальным. Возможно, детализация потребует нескольких стадий, от крупных блоков к все более мелким, и в результате должно получиться то, что называется алгоритмом решения задачи.
Алгоритм - центральное понятие программирования, поэтому познакомиться с ним следует как можно раньше.
Само слово “алгоритм” происходит от имени персидского математика Аль Хорезми, который в IX веке разработал правила четырех арифметических действий (сегодня мы бы сказали алгоритмы арифметических действий).
В начале ХХ века алгоритмы стали объектом изучения математиков, появились различные математические уточнения понятия “алгоритм” и возникла целая отрасль математики - теория алгоритмов. Результаты, полученные теорией алгоритмов, служат теоретическим фундаментом всей компьютерной технологии, но в повседневной программистской практике не используются, поэтому сейчас мы будем обсуждать алгоритмы в их интуитивном, “бытовом” понимании.
Итак, алгоритм - это описание некоторой последовательности действий, но не всякое, а обладающее определенными свойствами. К этим свойствам относятся: 1) дискретность - расчлененность описания на отдельные элементарные действия — операции, которые доступны исполнителю алгоритма (человеку, роботу, компьютеру,...); 2) детерминированность - на одинаковых исходных данных алгоритм должен всегда давать одинаковые результаты; 3) массовость - алгоритм должен работать на множестве однотипных исходных данных, потенциально бесконечном.
После того как алгоритм разработан, его записывают на алгоритмическом языке, и этот процесс называют кодированием алгоритма. Для выполнения данного этапа необходимо знать хотя бы один из многих существующих языков программирования, а лучше знать несколько, чтобы выбрать наиболее подходящий для решаемой задачи.
Хотя этап кодирования считается менее творческим, чем предыдущие, для его успешного выполнения требуется хорошее знание, как самого языка, так и средств разработки программ: транслятора, компоновщика, программных библиотек и многого другого.
Отладка и тестирование программы
Целью данного этапа является поиск и устранение ошибок в программе. Ошибки бывают синтаксические (нарушение грамматики алгоритмического языка) и смысловые (искажение самого алгоритма решения задачи). О первых мы не говорим, их обычно обнаруживают и исправляют на этапе кодирования, совершая пробную трансляцию программы. Вторые же можно выявить только в процессе проверки программы на специально подобранных входных данных или в ходе опытной эксплуатации программы.
Разделение процесса разработки программ на 5 этапов носит весьма условный характер. В случае простых программ, которые предстоит писать начинающим программистам, некоторые этапы сливаются, например проектирование с разработкой алгоритма или кодирование с отладкой. В случае сложных программ могут добавиться новые фазы разработки, например проектирование базы данных или создание изображений.
Более важным является то, что работа над сложной программой состоит в многократном прохождении цикла разработки, т.к. в процессе тестирования могут быть обнаружены такие ошибки, для исправления которых придется вернуться не только к кодированию или алгоритмизации, но и к проектированию, а в тяжелых случаях — пересмотреть и постановку задачи.
Если же удалось разработать полезную программу, то работа над ней не заканчивается этапом тестирования, а переходит в фазу сопровождения. Программа живет, приобретает новые функции, совершенствует старые, избавляется от последних ошибок и, наконец, умирает, уступив натиску более молодых программ, покоряющих сердца пользователей сверканием инструментальных панелей, трехмерностью изображений и стереофоничностью звуков.
электронный вычислительный система алгоритм
2. Элементарные алгоритмические структуры
Последовательная алгоритмическая структура
Всякий алгоритм имеет структуру. В программировании особое значение имеют три структуры алгоритма: последовательная, выбора и повторения.
Последовательной называется такая структура алгоритма, при которой его отдельные части (операторы) выполняются поочередно одна за другой. В качестве примера рассмотрим алгоритм заварки чая.
Начало
Вскипятить воду.
Ополоснуть чайник кипятком.
Положить туда чай.
Залить чайник кипятком.
Конец.
Очевидно, что результат выполнения алгоритма зависит от порядка следования его частей. Изменение этого порядка может плачевно сказаться на качестве чая.
В Паскале последовательный алгоритм реализован в виде составного оператора
Begin оператор; оператор; … оператор End
в Си составной оператор выглядит так:
{оператор оператор … оператор}
Алгоритмическая структура выбора
Хотя последовательная структура самая простая, а потому и самая привлекательная, далеко не все алгоритмы можно записать в виде простой последовательности операций. Пусть необходимо из двух чисел, A и B, выбрать большее и поместить его значение в переменную M. Алгоритм такого выбора можно записать так:
если A > B , то M = A , иначе M = B.
При выполнении алгоритма сначала вычисляется условие. Если условие истинно, выполняется оператор после слова "то", если условие ложно — оператор после слова "иначе".
Большинство языков программирования имеют специальную конструкцию для реализации алгоритма выбора — условный оператор. Например, в языке Си выбор числа будет выглядеть так:
if(A> B) M= A; elseM= B;
вПаскалетак:
if A > B then M := A else M := B.
Алгоритмическая структура повторения
Повторение определенных действий является необходимой частью большинства программ. Рассмотрим алгоритм утоления голода конфетами.
Пока хочется есть повторять съесть одну конфету.
Смысл этой алгоритмической структуры в том, что сначала проверяется условие и, если оно истинно, выполняется оператор, следующий за ключевым словом повторять.Затем снова проверяется условие и так далее, пока очередная проверка не установит, что условие ложно. На этом алгоритм заканчивается.
Для реализации повторений в алгоритмических языках служат операторы цикла.
В Паскале:
while хочется есть do
съесть одну конфету.
В Си:
while (хочется есть)
съесть одну конфету;
Три рассмотренные структуры служат своего рода контейнерами для размещения операторов, причем в качестве операторов могут выступать как элементарные операторы языка, так и алгоритмические структуры.
Покажем пример алгоритма, который вводит числа с клавиатуры и складывает их, пока не будет введено число 0. Накопленная сумма выводится на экран.