Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике все.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
986.62 Кб
Скачать

Общее понятие алгоритма и алгоритмических языков.

Языки программирования и трансляторы

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

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

Первым алгоритмическим языком стал Fortran, созданный в 1957г. специалистами фирмы IBM под руководством Джона Бекуса. Сейчас существует большое множество алгоритмических языков: Pascal, C, Algol, PL1, Basic, Lisp, Prolog и многие другие.

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

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

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

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

- определенность - однозначная определенность результатов выполнения каждого шага алгоритма;

- конечность - однозначная определенность результатов выполнения каждого шага алгоритма за конечное время;

- результативность - получение конечного результата за конечное время;

- массовость - возможность использования алгоритма для некоторого класса исходных данных;

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

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

- графический способ – блок-схемы алгоритмов;

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

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

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

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

1) – Следование или линейная;

2) Развилка или ветвление;

3) Цикл.

Рассмотрим каждую из них на примерах:

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

Структура Развилка обеспечивает выбор одной из двух альтернатив:

если < условие > то

< действие 1 >

иначе

< действие 2 >

все

 Существует сокращенная форма структуры Развилка, которая позволяет выполнить действие или пропустить его:

если < условие > то

< действие >

все

Обобщением структуры Развилка является Множественный выбор:

если Var = Const1 то < действие 1 >

если Var = Const2 то < действие 2 >

. . .

если Var = Constn то < действие n >

все

 В зависимости от значения переменной Var выполняется одно из указанных действий, например, если Var = Const3, то выполняется <действие3>.

Примером этой структуры может служить алгоритм вычисления корней квадратного уравнения:

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

- цикл "от до"

- цикл "пока"

- цикл "до"

Цикл "от до" управляет повторением выполнения действия с помощью переменной цикла:

цикл от I := N1 до N2

< действие >

кц {конец цикла}

Здесь I - переменная цикла, N1, N2 - начальное и конечное значения переменной цикла, вычисляются один раз при входе в цикл. Переменная цикла пробегает все следующие друг за другом в порядке возрастания значения от начального до конечного. Изменение значения переменной цикла происходит автоматически после каждого выполнения действия, указанного внутри цикла. В зависимости от соотношения N1 и N2 цикл может не выполниться ни разу (N1 > N2) или выполниться ( N2 - N1 + 1 ) раз.

В цикле "пока" управление внутри цикла осуществляется с помощью логического условия:

цикл пока < условие >

< действие >

кц {конец цикла}

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

Третий тип структуры цикл "до" имеет вид:

цикл < действие > до < условие >

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

Пример: вычисление суммы Nпервых натуральных чисел.

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

Общее понятие алгоритма и алгоритмических языков.

Языки программирования и трансляторы

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

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

Первым алгоритмическим языком стал Fortran, созданный в 1957г. специалистами фирмы IBM под руководством Джона Бекуса. Сейчас существует большое множество алгоритмических языков: Pascal, C, Algol, PL1, Basic, Lisp, Prolog и многие другие.

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

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

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

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

- определенность - однозначная определенность результатов выполнения каждого шага алгоритма;

- конечность - однозначная определенность результатов выполнения каждого шага алгоритма за конечное время;

- результативность - получение конечного результата за конечное время;

- массовость - возможность использования алгоритма для некоторого класса исходных данных;

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

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

- графический способ – блок-схемы алгоритмов;

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

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

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