Смекни!
smekni.com

Этапы подготовки и решения задач на элекронных вичислительных системах. Стили программирования (стр. 2 из 4)

Начало

Занести в переменную сумму S число 0;

Ввести с клавиатуры число X;

Пока Х не равно 0 повторять

Начало

Добавить к сумме S значение Х;

Ввести с клавиатуры число X;

Конец;

Сумму S вывести на экран дисплея;

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

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

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

Пошаговая детализация алгоритма

Теоретически доказано, что трех алгоритмических структур: последовательности, выбора и повторения достаточно, чтобы записать любой алгоритм, который способна выполнить ЭВМ. При этом каждый внутренний оператор любой структуры может быть элементарным оператором или одной из алгоритмических структур. Все это поможет нам ответить на мучительный вопрос, встающий перед каждым начинающим программистом: “С чего начать разработку алгоритма?”.

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

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

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

Разработка алгоритма вычисления Sin X

Перейдем от теории к практике и рассмотрим примеры разработки алгоритмов.

Задача. Ввести X и подсчитать значение функции Sin X по формуле

Решение.

Как правило, на верхнем уровне детализации алгоритм имеет вид последовательности операторов.

Начало

Ввести X;

Подсчитать сумму SinX;

Вывести сумму SinX на экран.

Конец

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

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

Начало

Очистить переменную SinX = 0;

Получить первое слагаемое Piece = X;

Пока Piece > 0.0001 повторять

Начало

Прибавить очередное слагаемое к сумме SinX = SinX + Piece;

Вычислить следующее слагаемое Piece;

Конец

Конец

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

Начало

Очистить переменную SinX = 0;

Получить первое слагаемое Piece = X;

Установить номер первого слагаемого i = 1;

Пока Piece > 0.0001 повторять

Начало

Прибавить очередное слагаемое к сумме SinX = SinX+Piece;

Определить номер следующего слагаемого i = i+2;

Вычислить следующее слагаемое

Piece= Piece* ( - X* X) / (( i- 1) * i);

Конец

Конец

Окончательно алгоритм примет следующий вид:

Начало

Ввести X;

Очистить переменную SinX = 0;

Получить первое слагаемое Piece = X;

Установить номер первого слагаемого i = 1;

Пока Piece > 0.0001 повторять

Начало

Прибавить очередное слагаемое к сумме SinX = SinX+Piece;

Определить номер следующего слагаемого i = i+2;

Вычислить следующее слагаемое Piece = Piece * (-X*X) / ((i-1)*i);

Конец

Вывести сумму SinX на экран;

Конец.

3. Основы программирования

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

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

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

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

Двоичный язык является непосредственно машинным языком. В настоящее время такие языки программистами практически не применяются.

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

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

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

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

Язык программирования С (Си) первоначально был разработан для реализации операционной системы UNIXв начале 70-х годов. В последующем приобрел высокую популярность среди системных и прикладных программистов. В настоящее время этот язык реализован на большинстве ЭВМ.

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

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

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

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

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

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