Logo GenDocs.ru


Поиск по сайту:  


Лекции по информатике - файл 1.doc


Лекции по информатике
скачать (1270.5 kb.)

Доступные файлы (1):

1.doc1271kb.16.11.2011 02:47скачать

содержание

1.doc

1   2   3   4   5   6   7   8   9   ...   15
Реклама MarketGid:
^

Принципы обработки программных кодов



Микропроцессор— это интегральная микросхема, которая управляет всем, что происходит в компьютере.

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

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

Электрические сигналы, с которыми имеет дело компьютер, могут иметь только два состояния (в зависимости от уровня напряжения): высокий уровень напряжения— электрический сигнал есть (состояние «включен») либо низкий уровень— электрический сигнал отсутствует (состояние «выключен»). Для того чтобы выполнить любую задачу, мы задаем микропроцессору последовательность сигналов в состоянии «включен» или «выключен».

Для того чтобы задавать инструкции компьютеру на самом низком уровне, используется цифра 0, означающая состояние «выключен», и цифра 1, означающая состояние «включен». Мы называем это двоичными цифрами (битами)* или двоичными кодами, так как они основаны на двоичной системе счисления, в которой, как известно, все числа представлены только при помощи комбинаций нулей и единиц.

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

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

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

^ Мнемонические коды— это несложные для запоминания слова или аббревиатуры, представляющие завершенное задание для микропроцессора. Например, код MOV указывает компьютеру на то, что некую информацию следует переместить из одной области памяти в другую, а код JMP указывает, что необходимо перейти в другую область памяти. Таким образом, вместо того, чтобы составлять последовательные ряды 0 и 1, программист на ассемблере может использовать мнемонические коды, подобные приведенным выше, каждый из которых представляет собой восемь или более бит.

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

В настоящее время большинство программистов работают с языками высокого уровня, где инструкции задают с помощью человеческих слов, а не мнемонических кодов или 0 и 1. Каждое слово представляет практически завершенную операцию, а не одно задание для микропроцессора. Например, функция языка Си puts() указывает компьютеру, что некая информация должна быть выведена на дисплей. Для выполнения этой же функции может потребоваться использование большого количества мнемонических кодов ассемблера и сотен бит.

Разумеется, сам по себе компьютер не понимает, что означает функция puts() и другие инструкции языков высокого уровня, поэтому, прежде чем компьютер реально сможет выполнить задание, оно должно быть переведено на его собственный язык— язык двоичных кодов.

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

Компиляторы


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

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

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

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

Си, Си++, Паскаль, Кобол и Фортран— это примеры компилирующих языков.

Интерпретатор


Интерпретатор переводит компьютеру все инструкции непосредственно в момент их выполнения.

Программа, обрабатываемая интерпретатором, существует только в виде исходного текстового файла. Язык BASIC, который поставляется с операционной системой MS-DOS, является примером интерпретирующего языка.

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

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

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

^

Язык С. История развития. Основные свойства языка


Язык Си (C) был создан в начале 70-х годов Дэннисом Ритчи, который работал в компании Bell Telephone Laboratories. Родословная языка Си (C) берет свое начало от языка Алгол и включает в себя Паскаль и ПЛ/I.

В 1978 году Ричи и Керниган опубликовали первую редакцию книги «Язык программирования Си». Эта книга, известная среди программистов как «K&R», служила многие годы неформальной спецификацией языка.

В конце 1970-х годов Си начал вытеснять Бейсик с позиции ведущего языка для программирования микрокомпьютеров. В 1980-х годах он был адаптирован для использования в IBM PC, что привело к резкому росту его популярности. В то же время Бьярне Страуструп и другие в лабораториях Bell Labs начали работу по добавлению в Си возможностей объектно-ориентированного программирования. Язык, который они в итоге сделали, C++, в настоящее время является самым распространённым языком программирования для платформы Microsoft Windows. Си остаётся более популярным в UNIX-подобных системах.

В 1983 году Американский Национальный Институт Стандартизации (ANSI) сформировал комитет для разработки стандартной спецификации Си. По окончании этого долгого и сложного процесса в 1989 году он был наконец утверждён как «Язык программирования Си» ANSI X3.159-1989. Эту версию языка принято называть ANSI C.

ANSI C сейчас поддерживают почти все существующие компиляторы. Почти весь код Си, написанный в последнее время, соответствует ANSI C.

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

^

Отличительные особенности языка C


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

Скорость

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

Кроме того, большинство компиляторов Си генерируют высоко оптимизированные коды. Вы помните, что компьютеру необходимы двоичные коды? Чем меньше этих кодов генерирует компилятор, тем более оптимизированным является код и тем быстрее работает программа. Многие компиляторы других языков генерируют менее оптимизированные коды, так что их программы работают медленнее.

Переносимость

Разумеется, можно создавать очень быстро работающие программы, если писать их на ассемблере. Однако мнемонические ассемблерные коды не одинаковы для каждого семейства микропроцессоров. Если бы вы написали на ассемблере программу для IBM PC или совместимого с ним компьютера, а затем решили выполнить те же самые процедуры на Apple Macintosh, вам пришлось бы переписать всю программу.

Си использует стандартные наборы ключевых слов. В общем случае вы пишете программу один раз, безотносительно того на какой платформе (с каким компьютером или операционной системой) собираетесь ее использовать. Тем не менее, хотя исходный файл сохраняется без изменений, необходимы два компилятора: один, чтобы перевести программу в двоичные коды, которые понимает IBM, другой, чтобы перевести программу в двоичные коды для Apple. Но сам текст программы вы создали раз и навсегда.

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

Структурирование

Каким бы легким для изучения ни был язык Си, у него есть свои требования. Делая программу на интерпретирующем языке BASIC, можно сидеть у компьютера и писать текст прямо «из головы». В Си это не так-то просто. Язык Си имеет свою структуру и правила создания программы, которые заставляют программиста мыслить логически. Можно обойтись без серьезного структурирования и быстро написать «корявую» программу, сравнительно простую и небольшого размера, но чтобы создать действительно серьезную программу на Си, требуется прежде всего хорошо подумать. Необходимость структурирования, однако, далеко не является обузой. Благодаря этому качеству программу на Си очень легко проектировать, поддерживать и отлаживать.

^ Библиотеки функций

Язык Си как таковой содержит небольшое количество операций. В отличие от других языков, Си не имеет встроенных средств ввода и вывода информации или работы со строками (строка— это последовательность символов, образующих слово или фразу). Например, первоначальный стандарт языка Си имел только 27 ключевых слов (keywords) или команд.

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

Существуют функции, которые используются так часто, что вместе со многими компиляторами поставляются их исходные тексты. Они содержатся в файлах, которые называются файлами заголовков (header file) и обычно имеют расширение .H. Файлы заголовков также содержат директивы компилятору и инструкции, указывающие использовать конкретные определения. Во время процесса компиляции содержимое файла заголовков добавляется к вашей собственной программе и для него также создаются объектные коды.

Файлы заголовков, в отличие от библиотечных файлов, не откомпилированы. Так же как и ваш исходный файл с текстом программы на Си, их можно читать, печатать на принтере и редактировать. Однако вам следует остерегаться вносить изменения в файлы заголовков, поставляемые с компилятором. Если вы сделаете ошибку, то компилятор больше не сможет генерировать для них объектные коды.

Именно использование библиотечных файлов делает Си легко переносимым.


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

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

Лексема - единица текста программы, которая при компиляции воспринимается, как единое целое и по смыслу не может быть разделена на более мелкие элементы.
1   2   3   4   5   6   7   8   9   ...   15

Реклама:





Скачать файл (1270.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru