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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Алгоритм и его свойства. Способы записи алгоритма

Информация:

Тип работы: курсовая работа. Добавлен: 20.08.2012. Сдан: 2011. Страниц: 16. Уникальность по antiplagiat.ru: < 30%

Описание (план):


      Введение. 

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

      1.Алгоритм и его свойства. Способы записи алгоритма.

      «Алгоритм»  является фундаментальным понятием информатики. Представление о нем необходимо для эффективного применения вычислительной техники к решению практических задач.
      Появление алгоритмов связывают с зарождением математики. Более 1000 лет назад (в 825 году) ученый из города Хорезма Абдулла (или Абу Джафар) Мухаммед бен Муса аль-Хорезми создал книгу по математике, в которой описал способы выполнения арифметических действий над многозначными числами. Само слово «алгоритм» возникло в Европе после перевода на латынь книги этого среднеазиатского математика, в которой его имя писалось как «Алгоритми». Первоначально под алгоритмами и понимали только правила выполнения четырех арифметических действий над многозначными числами.
      Алгоритм - это предписание исполнителю (человеку или автомату) выполнить точно определенную последовательность действий, направленных на достижение заданной цели.
      Алгоритм - это определённая последовательность действий, которые необходимо выполнить, чтобы получить результат.
      Хотя  правильно определение алгоритма  будет звучать так: алгоритм – понятное и точное предписание (указание) исполнителю совершить последовательность действий, направленных на достижение указанной цели
      Таким образом, алгоритм - это сформулированное на некотором языке правило, указывающее  на действия, последовательное выполнение которых приводит от исходных данных к искомому результату
      Алгоритм  может представлять собой некоторую  последовательность вычислений, а может - последовательность действий нематематического  характера.
      Алгоритм  должен быть составлен таким образом, чтобы исполнитель, в расчете на которого он создан, мог однозначно и точно следовать командам алгоритма и эффективно получать определенный результат. Это накладывает на записи алгоритмов ряд обязательных требований, суть которых вытекает, вообще говоря, из приведенного выше неформального толкования понятия алгоритма. Сформулируем эти требования в виде перечня свойств, которым должны удовлетворять алгоритмы, адресуемые заданному исполнителю.
      Свойства  алгоритма (отличающие его от любых  других предписаний):
      1) понятность (для конкретного исполнителя);
      2) дискретность (команды последовательны, с точной фиксацией моментов начала и конца выполнения команды);
      3) точность (после выполнения каждой команды точно известно, завершено ли исполнение алгоритма или же какая команда должна выполниться следующей);
      4) результативность (после конечного числа шагов задача решается или же становится ясно, что процесс решения не может быть продолжен);
      5) массовость (алгоритм единым образом применяется к любой конкретной формулировке задачи, для которой он разработан).
      Рассмотрим  свойства алгоритмов подробнее.
      1. Дискретность - разбиение алгоритма  на ряд отдельных законченных  действий-шагов. Выполнение алгоритма  разбивается на последовательность  законченных действий-шагов. Каждое действие должно быть закончено исполнителем алгоритма прежде, чем он приступит к исполнению следующего действия.
      2. Точность - однозначные указания. На  каждом шаге однозначно определено  преобразование объектов среды  исполнителя, полученной на предыдущих шагах алгоритма. Если алгоритм многократно применяется к одному и тому же набору исходных данных, то на выходе он получает каждый раз один и тот же результат. Запись алгоритма должна быть такой, чтобы на каждом шаге его выполнения было известно, какую команду надо выполнять следующей.
      3. Понятность - однозначное понимание  и исполнение каждого шага  алгоритма его исполнителем. Алгоритм  должен быть записан на понятном  для исполнителя языке.
      4. Результативность - обязательное получение результата за конечное число шагов. Каждый шаг (и алгоритм в целом) после своего завершения дает среду, в которой все объекты однозначно определены. Если это по каким-либо причинам невозможно, то алгоритм должен сообщать, что решение задачи не существует. Работа алгоритма должна быть завершена за конечное число шагов. Информатика оперирует только с конечными объектами и конечными процессами, поэтому вопрос о рассмотрении бесконечных алгоритмов остается за рамками теории алгоритмов.
      5. Массовость - применение алгоритма  к решению целого класса однотипных задач.
      6.Система команд исполнителя - точно описанная обстановка, включающая формулировку решаемой задачи, перечень объектов, вовлекаемых в условие задачи и в ее решение, и возможности исполнителя: свойства объектов, которые он может узнать и действия, которые он может совершить. Формальное исполнение алгоритма производит компилятор или интерпретатор, проверяя семантику.

      На  практике наиболее распространенными  являются следующие формы записи алгоритмов:

      1) графическая запись (блок-схемы);
      2) словесная запись (псевдокоды);
      3) язык программирования.
      1. Графическая форма записи, называемая также схемой алгоритма, представляет собой изображение алгоритма в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Графическая запись является более компактной и наглядной по сравнению со словесной. В схеме алгоритма каждому типу действий соответствует геометрическая фигура. Фигуры соединяются линиями переходов, определяющими очередность выполнения действий.
      2. Словесная форма записи алгоритма представляет собой описание на естественном языке последовательных этапов обработки данных. Словесный способ не имеет широкого распространения, так как такие описания строго не формализуемы, допускают неоднозначность толкования отдельных предписаний. Алгоритм, записанный с помощью псевдокода, представляет собой полуформализованное описание на условном алгоритмическом языке, включающее как основные элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и другие.
      Псевдокод представляет собой систему обозначений  и правил, предназначенную для  единообразной записи алгоритмов. Он занимает промежуточное место между  естественным и формальным языками.
      С одной стороны, он близок к обычному естественному языку, поэтому алгоритмы  могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.
    В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает  запись алгоритма на стадии его проектирования и дает возможность использовать более широкий набор команд, рассчитанный на абстрактного исполнителя. Однако в псевдокоде обычно имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от записи на псевдокоде к записи алгоритма на формальном языке. В частности, в псевдокоде, так же, как и в формальных языках, есть служебные слова, смысл которых определен раз и навсегда. Они выделяются в печатном тексте жирным шрифтом, а в рукописном тексте подчеркиваются. Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций.
      3. Язык программирования - язык, используемый для формальной записи алгоритмов. Большинство языков программирования относятся к алгоритмическим языкам. Запись алгоритма на алгоритмическом языке называют программой.
      Язык, используемый для формальной записи алгоритмов, называется алгоритмическим языком. При описании любого языка (в том числе естественного, например, русского, английского и т.д.) используются следующие понятия: алфавит, синтаксис и семантика.
      Алфавит языка - это множество простейших знаков, которые могут быть использованы в текстах этого языка. Последовательность символов алфавита называют словом. Правила, согласно которым образуются слова из алфавита, называются грамматикой. Сам же язык - это множество всех слов, записываемых в данном алфавите согласно данной грамматике.
      Синтаксис - это набор правил, определяющих возможные сочетания (конструкции) из букв алфавита. Для описания синтаксиса языка, как правило, используют другой язык (метаязык) или синтаксические диаграммы.
      Семантика - это набор правил, определяющих значение (смысл) отдельных конструкций языка.
      Одним из самых распространенных алгоритмических  языков является язык Pascal, который полезен как для начинающих, так и для опытных программистов. Обучение программированию чаще всего основывается на этом языке.
      При записи алгоритма в словесной  форме, в виде блок-схемы или на псевдокоде допускается определенный произвол при изображении команд. Вместе с тем такая запись точна настолько, что позволяет человеку понять суть дела и исполнить алгоритм.
      Однако  на практике в качестве исполнителей алгоритмов используются специальные  автоматы — компьютеры. Поэтому  алгоритм, предназначенный для исполнения на компьютере, должен быть записан на «понятном» ему языке. И здесь на первый план выдвигается необходимость точной записи команд, не оставляющей места для произвольного толкования их исполнителем.
      Следовательно, язык для записи алгоритмов должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языке — программой для компьютера.
      В практике в основном распространен  способ записи алгоритмов с использованием блок-схем алгоритмов. Они позволяют представить алгоритмы в более наглядном виде, это дает возможность анализировать их работу, искать ошибки в их реализации и т.д. В блок-схемах всегда есть начало и конец, обозначаемые эллипсами, между ними - последовательность шагов алгоритма, соединенных стрелками.

      Шаги  бывают «безусловными» (изображаются прямоугольниками, параллелограммами) и «условными» (изображаются ромбами). Из ромба всегда выходят две стрелки - одна означает дальнейший путь, в случае выполнения условия (обозначается обычно словом "да" или "+"), другая - невыполнение (словом "нет" или "-"). Ввод с клавиатуры или вывод на экран значения выражения изображается параллелограммом. Команда, выполняющая обработку действий (команда присваивания), изображается в прямоугольнике.

      Если  решение задачи сложное и достаточно длинное, то алгоритм может получиться очень большим. Избежать этого можно, заменив некоторую законченную последовательность шагов алгоритма блоками, которые будут являться вспомогательными алгоритмами. Блок обычно не элементарен, его размеры выбираются в зависимости от необходимости, однако если он правильно составлен, то обладает всеми необходимыми признаками алгоритмического шага: имеет точку входа (четко выделенное начало) и может быть условным или безусловным. Разные блоки алгоритма связаны друг с другом только через точки входа и выхода, поэтому если блок верно решает свою задачу, то его внутренняя структура несущественна для остальной части алгоритма. Такое блочное представление особенно удобно на первых этапах решения сложных задач, когда детализация блоков производится позднее и, возможно, другими разработчиками.
2. Линейная алгоритмическая  структура. 

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

    
 
 
 
 
 
 
 

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

      Но  линейные алгоритмы встречаются очень редко. Часто возникает условие, которое надо либо выполнять, либо нет. Порядок выполнения действий будет зависеть от выполнения некоторого условия. И появляется еще одна графическая структура. Алгоритмы с такой структурой называются разветвляющимися. 

3. Разветвляющаяся алгоритмическая структура. 

      Разветвляющийся алгоритмическая структура – алгоритмическая структура, в которой в зависимости от условия выполняется либо одна, либо другая последовательность действий.
      Ветвление - это такая форма организаций  действий, при которой в зависимости  от выполнения или невыполнения некоторого условия совершатся либо одна, либо другая последовательность действий.
      Условие — выражение, находящееся между словом «если» и словом «то» и принимающее значение «истина» или «ложь».
      Примеры разветвляющих алгоритмов: если пошел  дождь, то надо открыть зонт; если болит горло, то прогулку следует отменить; если билет в кино стоит не больше десяти рублей, то купить билет и занять свое место в зале, иначе (если стоимость билета больше 10 руб.) вернуться домой.
    
 
 
 
 
 
 
 
 
 
 
 

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

      В общем случае схема разветвляющего алгоритма будет выглядеть так: «если условие, то..., иначе...». Такое представление алгоритма получило название полной формы.
      Неполная форма, в которой действия пропускаются: «если условие, то...».
      Вспомогательный алгоритм — алгоритм, который можно использовать в других алгоритмах, указав только его имя.
      Например: вы в детстве учились суммировать  единицы, затем десятки, чтобы суммировать  двузначные числа содержащие единицы  вы не учились новому методу суммирования, а воспользовались старыми методами.
      Алгоритмы, при исполнении которых порядок  следования команд определяется в зависимости  от результатов проверки некоторых  условий, называют разветвляющимися. Для  их описания в алгоритмическом языке  используют специальную составную  команду - команда ветвления. Она соответствует блок-схеме «альтернатива» и также может иметь полную или сокращенную форму. Применительно к исполнителю-роботу условием может быть проверка нахождения робота у края рабочего поля (край/не_край); проверка наличия объекта в текущей клетке (есть/нет) и некоторые другие:  
 
 
 

4. Циклические алгоритмические структуры. 
 

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

      Циклический алгоритм — описание действий, которые должны по вторяться указанное число раз или пока не выполнено заданное условие. Перечень повторяющихся действий называется телом цикла.
      Многие  процессы в окружающем мире основаны на многократном повторении одной и  той же последовательности действий. Каждый год наступают весна, лето, осень и зима. Жизнь растений в  течение года проходит одни и те же циклы. Подсчитывая число полных поворотов минутной или часовой стрелки, человек измеряет время.
      Условие — выражение, находящееся между словом «если» и словом «то» и принимающее значение «истина» или «ложь».
      Рассмотрим  алгоритм нахождения суммы первых натуральных нечетных чисел до n.

     В схеме циклического процесса блоки имеют следующее назначение:
     1 - блок задания начального значения  параметра цикла;
     2 - тело цикла, то есть участок вычислительного процесса, который многократно повторяется;
     3 - блок изменения параметра цикла;
     4 - блок проверки условия выхода  из цикла.
      Цикл  программы – последовательность команд (серия, тело цикла), которая  может выполняться многократно (для новых исходных данных) до удовлетворения некоторого условия. 

  5. Основные операторы  циклов и ветвлений. 

      В своей практической деятельности человек  постоянно сталкивается с задачами, при решении которых требуется  многократно повторять одни и  те же действия. Для составления алгоритмов решения таких задач используются команды повторения (цикла).
      Циклом  называется многократно выполняемая  последовательность действий (операторов).
      Операторы цикла предназначены для многократного  повторения одних и тех же операций (операторов) в программе. Цикл завершается после выполнения условий окончания цикла, после чего следуют остальные операторы алгоритма. Если выхода из цикла нет, то говорят, что программа «зацикливается».
      Имеется 3 вида циклов:
    Цикл с предварительным условием (с предусловием);
    Цикл с последующим условием (с постусловием);
    Цикл с параметром.
    Операторы с предусловием.
      Оператор  цикла «Пока» (с предусловием).
      Самым «строгим» циклом (в смысле его  соответствия правилам структуры программирования) является цикл «Пока». Его синтаксис следующий:
      while <условие> do <оператор>,
      где <условие> - условие входа в цикл и его окончания (в случае несовпадения значения выражений этому условию продолжения цикла). Условием может быть переменная логического типа, или операция отношения между целыми, вещественными, символьными константами и переменными, и выражений с ними,
      <оператор> - любой допустимый оператор или блок операторов языка программирования.
      Приведем  схему выполнения оператора «while».
    Вычисляется выражение-условие ВЫРАЖЕНИЕ.
    Если оно истинно, то выполняются операторы блока БЛОК и осуществляется возврат к пункту 1.
    Если выражение-условие ложно, то оператор цикла завершает свою работу и передает управление следующему после него оператору программы.
      Таким образом, оператор цикла «while» является управляющей конструкцией цикла с предусловием: сначала проверяется условие завершения цикла, и потом только выполняется тело цикла, определяемое блоком БЛОК. Поэтому может оказаться, что тело цикла не будет выполнено ни одного раза, если при первом вхождении в цикл условие окажется ложным. Это обстоятельство следует учитывать при программировании с циклом «while».
      Для корректной работы цикла «while» необходимо, чтобы на каждом шаге цикла изменялось выражение-условие, иначе мы получим бесконечный цикл, если при вхождении в него это выражение истинно. Изменение выражения-условия на каждой итерации цикла можно реализовать либо непосредственно в самом выражении, например, использовать операцию чтения из стандартного входного потока <>, либо при выполнении операторов блока БЛОК обеспечить изменение значений переменных, входящих в выражение-условие.
      На  блок-схеме оператор цикла «Пока» - имеет вид, приведенный на рис.5.1.:
 

      Рис. 5.1. Оператор цикла «пока» на блок-схеме.  

      Для реализации цикла «пока» должны быть выполнены следующие условия:
    условие входа в цикл;
    условие выхода из цикла;
    последнее условие должно меняться в теле цикла.
1.2. Оператор цикла  «До … пока»  (с предусловием).
      Этот  оператор аналогичен оператору цикла  «пока», за исключением того, что  операторы в теле цикла будут  исполняться минимум один раз. Синтаксис этого оператора следующий:
      do <оператор> while <условие>
      где <условие> - условие окончания цикла (в случае несовпадения значения выражений этому условию продолжения цикла). Условием может быть переменная логического типа, или операция отношения между целыми, вещественными, символьными константами и переменными, и выражений с ними), а
      <оператор> - любой допустимый оператор или блок операторов языка программирования, который выполняется определенное число раз («тело цикла»). В теле цикле должно находиться условие, прекращающее цикл. В противном случае цикл будет повторяться бесконечное число раз (будет «зацикливаться»).
      На  блок-схеме цикл «До … пока» имеет следующий вид, изображенный на рис.5.2.: 

 

      Рис. 5.2. Оператор цикла «До … пока» на блок-схеме.
2. Оператор цикла с постусловием («repeat»).
      В операторе цикла с постусловием (начинающимся со слова «repeat») выражение, которое управляет повторным выполнением последовательности операторов содержится внутри оператора «repeat».
      Иногда  при решении задач возникает  необходимость выполнить тело цикла  хотя бы один раз, а потом, проверив условие, определить, повторять ли тело цикла еще раз. Эту задачу выполнит другой вид цикла – цикл «Repeat».
      Операторы, заключенные между ключевыми  словами «repeat» и «until», выполняются  последовательно до тех пор, пока результат выражения  не  примет значение «True». Последовательность операторов выполнится по крайней мере один раз, поскольку вычисление  выражения производится после каждого выполнения последовательности операторов. Его синтаксис следующий:
      repeat {повторяй} {операторы операторы} until <условие>;
      {до  тех пор, пока условие не  будет истинным}

      5.3. Оператор цикла с постусловием  на блок-схеме. 

    Оператор  цикла с параметром (оператор «for»).
      При выполнении циклов «while» заранее  не известно, сколько итераций (последовательности операций) необходимо выполнить, но иногда в программе необходимо выполнить заранее известное количество повторений определенной группы операторов. Например, нужно прочитать из файла 5 строк и видоизменить их по определенным правилам. Для решения подобных задач с заранее известным числом повторений предлагается специальную конструкцию цикла - цикл «for». Его синтаксис выглядит следующим образом:
      [МЕТКА] for (ВЫРАЖЕНИЕ1; ВЫРАЖЕНИЕ2; ВЫРАЖЕНИЕ3) БЛОК 
      ВЫРАЖЕНИЕ1, называемое инициализирующим выражением, используется для установки начальных значений переменных, управляющих циклом. Обычно это одна или несколько операций присваивания, разделенных запятыми.
      ВЫРАЖЕНИЕ2 определяет условие, при выполнении которого будут повторяться итерации цикла. Оно, как и выражение-условие цикла «while», вычисляется в булевом контексте и должно быть истинным, чтобы началась следующая итерация цикла. Как только это выражение становится ложным, цикл «for» прекращает свое выполнение и передает управление следующему за ним в программе оператору.
      ВЫРАЖЕНИЕЗ  вычисляется после завершения каждой итерации цикла и «отвечает» за увеличение/уменьшение значений переменных цикла на каждом его шаге. Его иногда называют изменяющим выражением.
      Приведем  схему выполнения цикла «for».
    Вычисляется инициализирующее выражение ВЫРАЖЕНИЕ1.
    Вычисляется выражение-условие ВЫРАЖЕНИЕ 2. Если оно истинно, то выполняются операторы блока БЛОК, иначе цикл завершает свое выполнение.
    После выполнения очередной итерации вычисляется выражение увеличения/уменьшения (ВЫРАЖЕНИЕ З) и повторяется пункт 2.
      Несмотря  на то, что цикл с параметром - одна из первых синтаксических конструкций, не существует единого стандарта  на его запись. В наиболее общей  форме этот цикл записывается так:
      для <пер> от <начало> до <конец> шаг <шаг> делать <оператор>
      где <пер> является переменной целого типа, принимающая значение переменной - индекса. Вне цикла ее значение не определено (попросту, ее нельзя использовать вне цикла).
      <начало> означает начальное значение индекса в цикле, <конец> - конечное значение индекса в цикле, а
      <шаг> - приращение цикла на каждой итерации (по умолчанию используется приращение переменной цикла, равное "+1"). <начало>, <конец> и <шаг> могут принимать значения констант и переменных, однако переопределение этих параметров в цикле запрещено.
      Параметр <оператор> имеет то же значение, что и в описании цикла «пока».
      Конструкция, задает переменной <пер> последовательность значений: <начало>, <начало>+<шаг>, <начало>+2·<шаг>, …, <конец> на каждой итерации. При этом "тело цикла" повторяется int((<конец>-<начало>)/<шаг>)+1 число раз, Это число должно быть больше нуля.
      n := int( (<конец>-<начало>)/<шаг>)+1
      На  блок-схеме цикл с параметром имеет  следующий вид (см. рис. 5.4.). 

      
 

      Рис. 5.4. Оператор цикла с параметром на блок-схеме.  

      Цикл  с параметром используются в следующих случаях:
      - при задании точного числа повторений тела цикла;
      - для последовательного изменения «индекса массива» (при операциях с ними в теле цикла).
5. Оператор выхода  из цикла «break».
      Иногда  в реализации алгоритма возникают  условия, когда нужно выйти из цикла до завершения всех его итераций. Именно для этих целей служит оператор выхода из цикла. Его синтаксис следующий:
      break;
      Этот  оператор прекращает действие текущего цикла, и переводит выполнение программы  в точку за прерванным циклом (в тело программы или в тело «родительского» цикла).
      6. Оператор новой итерации «continue».
      Часто в реализации алгоритма требуется  прервать выполнение тела цикла и  перейти к следующей итерации. Эта операция реализована в разных языках по-разному. С Синтаксис его следующий:
      continue;
      В языках, не имеющих конструкции «continue», (например - в Quick Basic), данную операцию можно "моделировать" с помощью безусловного перехода «goto» на метку после последнего оператора тела цикла.
7. Оператор безусловного  перехода «goto».
      Этот  оператор является самым  первым оператором для  изменения последовательности выполняемых действий. В настоящее время  его применение считается  «дурным тоном», поэтому его использования необходимо избегать. Однако он не заменим в следующих случаях:
    В языке  отсутствуют другие конструкции  алгоритма, более «структурированные»;
    Необходимо выполнить «кессонный» выход из цикла при возникновении «исключительной ситуации».
      Примечание: "Кессонный выход" из вложенного цикла подразумевает прекращение итераций и выход не только из «текущего цикла» (в котором возникла исключительная ситуация), но также из «родительского цикла» и даже вообще из всех циклов, заставив ЭВМ продолжать выполнение программы вслед за вложенными циклами. «Кессонным» этот выход называется так потому, что он как бы соответствует «немедленному подъему водолаза на поверхность», без предварительной адаптации его к пониженным давлениям. В результате этого подъема у водолаза может наблюдаться «кессонная болезнь»", которая заключается в закупоривании сосудов пузырьками сжатого воздуха. Поскольку этот подъем небезопасен, его используют редко. То же самое относится к "кессонному выходу из цикла": при возможности его следует избегать.
      Синтаксис оператора безусловного перехода следующий:
      goto <метка>
      где <метка> - меткой называется номер строки, число либо идентификатор, стоящий перед оператором и указывающий, куда будет перенаправлено выполнение программы после оператора перехода.
      На  блок-схеме безусловный переход  указывается линией со стрелкой. 

     Операторы ветвления.
     Выделяют  следующие операторы ветвления:
     1) оператор условия;
     2) оператор ветвления;
     3) оператор множественного выбора.
    Оператор  условия.
      Этот  оператор служит для реализации реакции  алгоритма на некоторое условие: значения переменной, или событие в ЭВМ и ее окружении. Синтаксис оператора следующий:
      IF <условие> THEN <оператор>
      где <условие> - переменная булевского (логического) типа или операция отношения между целыми, вещественными, символьными константами, переменными и выражениями, а
      <оператор> - любой допустимый оператор языка, группа этих операторов в скобках (в блоке) либо (в старых языках программирования) - оператор безусловного перехода на метку (меткой называется номер строки, число либо идентификатор, стоящий перед оператором и указывающий, куда будет перенаправлено выполнение программы после оператора перехода.). Оператор вычисляется в случае истинности условия в этом операторе.
      Оператор «условие» на блок-схеме представляется так, как показано на рис.5.5.:
 

      Рис. 5.5. Оператор «условие» на блок-схеме.
      Оператор  условия является самым «древним» оператором изменения последовательности действий операторов алгоритма.
2. Оператор «ветвления».
      При реализации алгоритмов всегда возникают  ситуации, когда какой-либо оператор или группу операторов надо выполнить  в случае возникновения определенных условий, тогда как другую группу при этих же условиях вообще не следует выполнять. Для организации подобного ветвления в программах предусмотрены операторы «if», которые и называются операторами ветвления,
      Отличительной особенностью всех этих операторов является то, что в них вычисляется некоторое выражение, называемое условием, и в зависимости от его истинности или ложности выполняются или не выполняются операторы некоторого блока. Это означает, что выражения условия во всех операторах ветвления вычисляются в булевом контексте. Этот оператор очень похож на оператор условия. Его синтаксис следующий:
      if <условие> then <оператор-истина> else <оператор-ложь>
      где <условие> - переменная булевского (логического) типа или операция отношения между целыми, вещественными, символьными константами, переменными и выражениями,
      <оператор-истина> - оператор или группа операторов, выполняемых в случае истинности условия, а
      <оператор-ложь> выполняется в случае невыполнения условия оператора ветвления. После выполнения оператора ветвления продолжается выполнение последовательности операторов, нарушенной при вызове оператора ветвления.
      На  блок-схеме оператор «ветвления»  представлен так, как показано на рис. 5.6.
 

      Рис. 5.6. Оператор ветвления на блок-схеме.
      Оператор  ветвления появился сравнительно недавно, в 1970 году в языке «Паскаль». 
 

3. Оператор множественного выбора.
      Этот  оператор используется для выбора одной  из нескольких альтернатив выполнения алгоритма, задающихся значением целой  переменной. Его синтаксис примерно следующий:
      Для <переменная> выбор <откр_скобка>
      при <значение1>:
         <тело 1>; break;
      при <значение2>:
         <тело 2>; break;
      
      иначе:
         <последнее тело>;
      <закр_скобка>
      где <откр_скобка><закр_скобка> - "составной оператор";
      <переменная> - переменная целого типа или типа, приводимого к целому (например, перечисления, одиночный символ и т.п.);
      <значение n> - одно из возможных значений этой переменной,
      < тело n> - последовательность действий для этого значения переменной; и
      <последнее тело> - последовательность операций в случае, если переменная не принимает ни одного из значений в блоке.
      Замечание: оператор множественного выбора может «моделироваться» повторением оператора ветвления, например:
      если <значение 1> то <тело 1>
      иначе если <значение 2> то <тело 2>
      иначе если …
      иначе <последнее тело>
                 
      где <тело> - оператор или последовательность операторов, заключенных в скобки.
      Замечание: оператор множественного выбора не часто встречается в символьных вычислениях.

      Рис. 5.7. Множественный выбор на блок-схеме.
4. Составной оператор.
      Блок  операторов представляет собой допустимую последовательность операторов, заключенных  в скобки (например, в Си/C++ это  фигурные скобки: "{…}") или между  лексемами: "Begin … End" (как в Паскале  и Алголе).
      На  блок-схеме такие операторы никак не выделяются, а представляют собой просто последовательности операторов.
      Составной оператор применяется в следующих  случаях:
    В операциях условия, цикла, ветвления, множественного выбора, когда вместо одного оператора необходимо выполнить несколько операций (блок);
    Необходимо определить "локальные переменные", определяемые лишь внутри блока;
    Нужно написать тело функции или процедуры.
      Новые переменные определяются только в начале блока, и их действие заканчивается  после выхода из блока. 

      6. Типовые алгоритмы.
      Основное  назначение циклов - обработка большого объема данных. Математически эта  обработка зачастую сводится к поиску, выбору и статистической обработке  нужных величин. Практически в любой  реальной задаче мы ищем максимальные и минимальные значения в наборе данных, суммируем или перемножаем требуемые данные, определяем арифметическое среднее или количество элементов, отвечающих условию. Для решения всех этих распространенных задач существуют типовые алгоритмы, задающие правила выполнения соответствующих расчетов.
      Разумеется, настоящие задачи, встающие перед  программистами, значительно сложнее, чем приведенные далее примеры, но из типовых алгоритмов, как из кирпичиков, строится здание любой  сложной программы.
      Известна  мысль о том, что программирование - одна из самых трудных отраслей прикладной математики. Некоторые приемы программирования основываются непосредственно на интуиции и в настоящее время, пожалуй, нет универсальных средств получения надежных алгоритмов. Однако, накоплен богатый опыт разработки типовых алгоритмов, овладение которыми позволит свести задачу большой сложности к комбинации более простых задач. Приведем эти алгоритмы. Начнем с классической задачи вычисления суммы и произведения элементов массива.
Дано: - число элементов  в массиве A, N
  A[1:N] - N элементов массива A.
Вычислить: Sum - сумма элементов массива,
  Proiz - их произведение.
      Основная  идея этого алгоритма очень проста: на каждом шаге алгоритма сумма элементов  вычисляется прибавлением к уже  имеющейся сумме очередного элемента. Чтобы реализовать эту идею для каждого элемента, начиная с первого, присвоим сумме в качестве начального значения 0 (Sum := 0). Тогда для всех элементов массива сумма вычисляется одним и тем же действием:
  Sum := Sum + A[I] , где I = 1, 2, .., N.
      Аналогично  вычисляется произведение:
  Proiz := Proiz * A[I], где I = 1, 2, .., N.
      В качестве начального значения произведению естественно присвоить 1. Оформим  на псевдокоде алгоритм, являющийся реализацией  этой идеи. (Пример 1.)

Пример  1.

  Алгоритм Вычисление суммы и произведения элементов массива
    Начало
      ввод(N, A[1:N]
      Sum := 0; 
      Proiz:= 1 {инициализация} 
      цикл от I := 1 до N
      {цикл просмотра N элементов}
        Sum := Sum + A[I] 
        Proiz := Proiz * A[I]

      кц 
      вывод (Sum, Proiz)

    Конец
      Одной из часто встречающихся задач  в программировании является поиск наибольшего (наименьшего) элемента в массиве (Пример 2.).

Пример  2.

Дано: N - число элементов в массиве A
  A[1:N] - N элементов  массива A.
Вычислить: наибольший  элемент в массиве Max и его номер NMax.
      Принцип вычисления заключается в сравнении каждого элемента массива со значением в Max и запоминанием в нем элемента, который оказался больше значения Max. Для корректного первого сравнения в качестве начального значения Max можно использовать первый элемент массива. Тогда сравнения в цикле целесообразно начинать сI = 2.
Алгоритм Поиск максимального элемента в массиве и его номера
    Начало
      ввод(N, A[1:N]
      Max := A[1]; NMax := 1 {инициализация}  
      цикл от I := 2 до N

        если A[I] > Max то
          Max := A[I] {запоминание  наибольшего элемента} 
          NMax := I {и его номера}

        все
      кц 
      вывод(Max,NMax)

    Конец
      Заметим, что значение, полученное в Max, совпадает со значением A[NMax].
      При поиске максимального среди элементов  массива, удовлетворяющих некоторому условию, например, только среди отрицательных, нельзя инициализировать Max так же, как в примере 7 (Max = A[1]), т.к. A[1] может не быть отрицательным. В этом случае в качестве начального значения Max можно использовать очень маленькое число. Как только встретится отрицательный элемент массива больший Max, значение Max будет заменено на этот элемент. Если Max останется неизменным, это значит, что в массиве нет элементов, удовлетворяющих заданному условию (в нашем случае - отрицательных). 
Для поиска минимального среди элементов массива в качестве начального значения Min надо использовать большое положительное число (
Пример 3).

      Пример  3.

Алгоритм Поиск минимального среди положительных элементов
    Начало
      ввод(N, A[1:N]
      Min := 1E38 
      {при поиске минимума среди элементов вещественного типа в качестве начального значения Min присваивается очень большое значение например,1E38; при поиске максимума в качестве начального значения переменной присваивается очень маленькое значение -1Е38} 
      цикл от I := 1 до N

        если A[I] > 0 и A[I] < Min то {сложное условие}
          Min := A[I]
        все
      кц 
      вывод(Min)

    Конец
      В этом случае естественно организовать цикл, начиная с первого номера элемента (I = 1). Заметим, что вместо сложного условия в ветвлении можно использовать два простых:
если A[I] 0 то 
    если A[I] Min то 
        Min := A[I]  
    все 
все
      Однако, первый вариант представляется более  наглядным. Следующая группа задач объединяется под условным названием вычисление новых массивов на основе заданных. Эти задачи принято разделять на две группы:
      - вычисление нового массива, число  элементов которого совпадает  с числом элементов заданного  массива;
      - вычисление массива, число элементов  которого может не совпадать  с числом элементов заданного массива.
      Разработка  алгоритмов для задач первой группы обычно не вызывает затруднений. Рассмотрим одну из них.
Дано: N - число элементов массива A,
  A[1:N] - N элементов массива A.
Вычислить: новый массив B, элементы которого определяются по формуле
  

  Очевидно, что в новом массиве B будет столько же элементов, сколько и в исходном массиве, т.к. для каждого A[I] в зависимости от условия вычисляется соответствующий B[I]. Таким образом, одна переменная I определяет номер элемента в массиве A и номер элемента в массиве B. (Пример 9).

Пример 9

Алгоритм Вычисление нового массива с известным числом элементов
    Начало
      ввод(N, A[1:N]
      цикл от I := 1 до N {цикл просмотра элементов}

        если A[I] < 0 то
          B[I] := -1
        иначе
          если A[I] <= 10 то
            B[I] := A[I]
          иначе B[I] := 1 
          все

        все
      Кц
      вывод(B[1:N]) {вывод N вычисленных элементов массива B}
    Конец
      В алгоритмах задач второй группы, когда вычисляется новый массив с неизвестным заранее числом элементов, используется понятие "счетчик". Счетчик- это некоторая переменная, которая определяет номер текущего элемента в новом массиве, если такой элемент существует. Очевидно, что номер последнего элемента массива совпадает с числом элементов в этом массиве. Идею использования счетчика продемонстрируем на следующей задаче.
Дано: N - число элементов массива A,
  A[1:N] - N элементов массива A,
  Z1, Z2 - два числа, причем Z1 < Z2 < 0.
Вычислить: массив C, содержащий отрицательные элементы массива A, удовлетворяющие условию Z1 < A[I] < Z2.
      Введем  некоторую переменную K - счетчик, которая будет определять число элементов в новом массиве. Эту переменную можно использовать в качестве индекса при вычислении очередного элемента нового массива. Если найдутся элементы в массиве A, для которых выполняются сформулированные условия, новый массив C будет содержать K элементов. В начале алгоритма K равно 0. Для каждого A[I] < 0 и Z1 < A[I] < Z2 K увеличивается на 1 и вычисляется C[K] := A[I]. Если в конце алгоритма K останется равным нулю, то в новый массив не попал ни один элемент.
      Рассмотрим  алгоритмы, которые решают задачу удаления (вставки) элементов в массиве. Предположим, что в заданном массиве A[1:N] надо удалить все элементы, удовлетворяющие условию X < A[I] < Y; X, Y заданы, причем X < Y. Воспользуемся идеей "счетчика", позволяющей вычислить новый массив A на месте исходного массива A. Пусть M - счетчик, определяющий номер элемента и число элементов в новом массиве A. Вычислим новый массив A из элементов исходного массива, для которых не выполняется условие X < A[I] < Y. Алгоритм удаления представлен в Примере 11.

Пример 11.

Алгоритм Удаление элементов в массиве
    Начало
      ввод(N, A[1:N], X, Y
      M := 0 {счетчик}  
      цикл от I := 1 до N {цикл просмотра N элементов исходного массива}

        если (A[I] <= X) или (A[I] >= Y) то
          {оставить такой элемент}
          и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.