Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы алгоритмизации и программирования.docx
Скачиваний:
203
Добавлен:
14.02.2015
Размер:
94.58 Кб
Скачать

Программирование

Программирование это процесс составления компьютерной программы на основе некоторого алгоритма. Структурное программирование основывается на двух важнейших принципах:

  • последовательной детализации алгоритма;

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

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

  • линейной (последовательной) структуры;

  • разветвляющейся (ветвящейся) структуры;

  • циклической структуры.

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

Языки программирования. Компиляция и интерпретация

Программа – это набор машинных команд, которые следует выполнить компьютеру для реализации того или иного алгоритма. Иными словами, программа – это форма представления алгоритма для исполнения его машиной. Первым программистам приходилось писать команды в «машинных кодах», т.е. именно так, как их воспринимает машина Например, команда сложения двух чисел могла выглядеть примерно так: 15 0127 2677 3656. Число 15, указанное в начале команды, – это код операции, означающий: «Сложить два неких числа и сумму записать в память». Числа 0127, 2677 и 3656 – это номера ячеек памяти. В этих ячейках хранятся слагаемые. Алгоритм такой команды звучит так: сложить число, записанное в ячейке номер 0127, с числом, записанным в ячейке номер 2677, и результат (сумму) поместить в ячейку номер 3656. Такой способ составления программ был очень трудоемким, сопровождался большим количеством ошибок и имел множество других недостатков. Довольно быстро специалисты поняли, что можно автоматизировать процесс формирования машинного кода, если создать систему условных обозначений (язык программирования) для записи команд и составить программу, которая сама «переводила» бы такие команды в машинный код. Например, вместо указанной команды с кодом 15 можно написать: с = а+b В этой формуле содержится вся информация, представленная выше в словесном виде: знак «+» означает – сложить; знак «=»– записать (точнее, присвоить); латинские буквы обозначают некие переменные, значения которых хранятся а ячейках. Перед исполнением команды машина снабдит переменные реальными номерами ячеек. Подобным же образом можно записывать более сложные операции, выполняемые компьютером. Например, команду проверки условия а > m можно изложить по-английски: if a[i]>m then m=a[i] или по-русски: если a[i]>m, то m=a[i]. При таком подходе необходимо:

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

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

После этого на языке программирования можно писать множество программ, пользуясь единственной программой-переводчиком. «Грамматические» правила языка программирования формулируются предельно четко и не допускают вольного расположения отдельных элементов команды и знаков препинания (иначе программа-посредник «не поймет» ваши указания). Каждая команда имеет строго определенный синтаксис (правила записи). Например, если установлено, что условие «если» надо писать по-английски (if) и после условия (a[i]>m) нельзя ставить запятую, то всякая иная запись такой команды будет воспринята программой-посредником как ошибка. Команды на языке программирования часто называют операторами или инструкциями. Последовательность таких команд, реализующих тот или иной алгоритм, называют программой на исходном языке или просто исходным текстом. Это говорит о том, что, кроме исходного текста, конкретная программа может иметь еще и машинный код, который непосредственно исполняется на машине. Исходные тексты помещают в текстовые файлы. Существует два типа программ-посредников, работающих с исходными текстами: компилятор и интерпретатор. Программа-компилятор(от слова compile– составлять, собирать) переводит исходный текст в машинный код и записывает его на диск в форме исполняемого (загрузочного) файла. После этого программа выполняется независимо от исходного текста. Раньше программы-компиляторы называли просто и точно – трансляторами (переводчиками). Программа-интерпретаторвсегда работает совместно с исходным текстом. Она разбирает каждую инструкцию исходного текста (интерпретирует ее) и немедленно исполняет (т.е. файл на машинном языке не создается). Программа в режиме интерпретации работает гораздо медленнее, чем такая же программа в машинном коде. Это связано с тем, что каждую инструкцию приходится разбирать во время выполнения (а не заранее, как при компиляции). Многие инструкции в программе выполняются многократно, – и при каждом выполнении интерпретируются заново. Поэтому всюду, где возможно, стремятся заменить режим интерпретации режимом компиляции. Правда, интерпретация имеет и свои преимущества: с ее помощью проще отлаживать программу. Иногда пользуются режимом «псевдокомпиляции»: ускоряют интерпретацию за счет предварительного запоминания тех или иных элементов разобранных команд в памяти машины. В наше время машинные коды не используются, и каждая программа для компьютера составляется на том или ином языке программирования. Существует очень много языков, однако все они, как правило, содержат средства описания данных, арифметические операторы (подобные с = а+b), средства управления и организации циклов (подобные if), средства ввода и вывода информации. Многие языки пользуются похожими принципами организации программ, но – разным синтаксисом. Например, вот как выглядит алгоритм поиска максимального числа, написанный на языках BASIC и С:

m=0

m=0

FOR i=1 TO n

for(i=o; i<n; i++)

IF a(i)>m THEN m=a(i)

{if(a[i]>m) m=a[i];;}

NEXT i

 

Идеология очень похожа:

  • арифметические операторы одинаковы (m=0);

  • для организации цикла используется слово forдляiот 1 (или 0) до п;

  • проверка условия – if(если.., то...).

Одновременно множество «мелких» различий в синтаксисе: for и if написаны либо прописными, либо строчными буквами; индекс массива i заключен в круглые или квадратные скобки; в программе на С (читается «си») много знаков «точка с запятой»; в программе на языке BASIC – дополнительные слова ТО, THEN. NEXT Чем принципиально отличаются естественные языки от языков программирования? Естественные языки возникают и развиваются по объективным законам, не зависящим от воли отдельных людей. Если изучить английский язык, то уже проще освоить немецкий: приобретенный опыт и интуиция позволяют хотя бы иногда догадываться о значении тех или иных слов, о связях слов. Слова и синтаксис языков программирования придумываются искусственно. Например, если освоить язык С, то будешь твердо знать, что смысловые блоки исходного текста (составные операторы) выделяются фигурными скобками {...}. Перейдя на язык Pascal, обнаруживается, что это правило не работает. Никакая предварительная подготовка, никакая логика не позволят догадаться, что вместо фигурных скобок в этом языке следует писать begin (начало) и end (конец). Поэтому не следует стремиться к изучению как можно большего числа языков программирования Владеть дюжиной языков невозможно. Их можно знать, но знать и владеть – не одно и то же. Изучив один язык (скажем, BASIC), можно освоить главное – идеологию программирования. При необходимости можно легко перейти на другой язык, однако для продуктивной работы в нем придется довести до автоматизма навыки правильного написания команд, освоить множество функций, соглашений, умолчаний и других тонкостей, характерных именно для этого языка.