Автор работы: Пользователь скрыл имя, 24 Марта 2015 в 06:26, курс лекций
Основные понятия и определения информатики.
Начало развития информатики как науки положило появление ЭВМ в 50-е годы прошлого столетия.
Выделению информатики в отдельную науку способствовало наличие единой формы представления информации в компьютерах: числовая, символьная и аудиовизуальная (звук, изображение) представляется в двоичной форме.
Алгоритм, который содержит несколько структур одновременно, называется комбинированным. На рис. 9 представлен пример комбинированного алгоритма.
Рис. 9. Блок – схема комбинированного алгоритма
Образуется последовательностью действий, следующих одно за другим. Структура изображена в табл.1.
Ветвление в алгоритмах позволяет выполнить действие (или серию действий) в зависимости от выполнения или невыполнения какого-нибудь условия.
Условие представляет собой строку, содержащую операцию сравнения с использованием знаков <>=.
Например: x>5; Z3>=3 (больше или равно); t<=0(меньше или равно).
Если условие соблюдается, то выполняются действия, расположенные в ветви под названием "Да". В случае несоблюдения условия будут выполнены действия, расположенные в ветви "Нет". Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран.
Служебное слово если обозначает начало ветвления, а все - конец ветвления.
Кроме базовых вариантов структуры "ветвление" на практике применяются еще один вариант разветвления "выбор" (рис. 10).
Рис.10. Блок-схема алгоритмической структуры "выбор"
Примеры структуры "ветвление" приведены в табл. 2.
Фрагменты блок-схем разветвляющихся алгоритмов
Таблица 2
Алгоритмический язык |
Язык блок-схем |
1 |
2 |
если x > 0 то y = sin(x) все |
|
если a > b> 0 то a= a * 2; b= 1 иначе b= 2 * b все |
|
Выбор при n = 1: y = sin(x) при n = 2: y = cos(x) при n = 3: y = 0 все |
Структура "цикл" используется при составлении алгоритмов, в которых необходимо многократно повторять какие-либо действия.
При записи алгоритма в словесной форме, в виде блок-схемы или на псевдокоде допускается некоторый произвол при изображении команд. Вместе с тем такая запись точна настолько, что позволяет человеку понять суть дела и исполнить алгоритм.
Однако на практике в качестве исполнителей алгоритмов используются специальные автоматы — компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на понятном ему языке. И здесь на первый план выдвигается необходимость точной записи команд, не оставляющей места для произвольного толкования их исполнителем.
Следовательно, язык для записи алгоритмов должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языке — программой.
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.
Любой алгоритм есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.
По этому критерию можно выделить следующие уровни языков программирования:
Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных. При программировании на машинном языке программист может держать под своим контролем каждую команду и каждую ячейку памяти, использовать все возможности имеющихся машинных операций. Процесс написания программы на машинном языке очень трудоемкий и утомительный. Программа получается громоздкой, труднообозримой, ее трудно отлаживать, изменять и развивать.
Ассемблер представляет собой мнемоническую (условную) запись машинных команд и позволяет получить высокоэффективные программы на машинном языке. Однако его использование требует высокой квалификации программиста и больших затрат времени на составление и отладку программ.
Пример – начальный загрузчик ОС разрабатывается на языке ассемблеpа (на другом языке его не напишешь, т.к. работа происходит с «голой аппаратурой»).
Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.
Языки высокого уровня делятся на:
Сфера применения очень широкая и прикладные (1С – целая система программ) и системные программы (программы, служащие для разработки других программ и для обслуживания компьютера.
Комплекс средств, включающих в себя входной язык программирования, транслятор, машинный язык, библиотеки стандартных программ, средства отладки оттранслированных программ и компоновки их в единое целое, называется системой программирования. Пример, Delphi, C++Builder, Visual C++.
Транслятором языка программирования называется программа, осуществляющая перевод текста программы с языка программирования в (как правило) машинный код.
В системе программирования транслятор переводит программу, написанную на входном языке программирования, на язык машинных команд конкретной ЭВМ. В зависимости от способа перевода с входного языка (языка программирования) трансляторы подразделяются на компиляторы и интерпретаторы.
В компиляции процессы трансляции и выполнения программы разделены во времени. Сначала компилируемая программа преобразуется в набор объектных модулей на машинном языке, которые затем собираются (компонуются) в единую машинную программу, готовую к выполнению и сохраняемую в виде файла на магнитном диске. Эта программа может быть выполнена многократно без повторной трансляции.
Интерпретатор осуществляет пошаговую трансляцию и немедленное выполнение операторов исходной программы: каждый оператор входного языка программирования транслируется в одну или несколько команд машинного языка, которые тут же выполняются без сохранения на диске. Таким образом, при интерпретации программа на машинном языке не сохраняется и поэтому при каждом запуске исходной программы на выполнение ее нужно (пошагово) транслировать заново. Главным достоинством интерпретатора по сравнению с компилятором является простота.
Библиотека стандартных программ организованная на машинном носителе совокупность компьютерных программ, доступ к которым осуществляется по их именам (или индексам). Библиотека стандартных программ ускоряет и облегчает процесс создания пользовательской программы, позволяя применять в качестве составных частей уже готовые функции (подпрограммы), для чего достаточно указать имя соответствующей функции. Благодаря библиотеке стандартных программ процесс программирования становится более технологичным, а сама пользовательская программа легче для восприятия. Существенной частью программного обеспечения библиотеки стандартных программ является набор сервисных программ (утилит), обеспечивающих создание библиотеки, включение и исключение функций (подпрограмм), вывод оглавления и др.
Семь шагов по созданию программы.
1. Определение целей создания
программы.
Что программа должна делать.
2. Составление проекта программы.
Как программа будет это выполнять, кто
будет конечным пользователем, сколько
времени понадобится на разработку программы,
как будут представлены данные в программе,
и какие методы будут использоваться для
обработки данных.
3. Создание программного кода.
После того как будет составлена блок-схема
вашей программы, можно приступить к ее
реализации, т.е. начать создавать программный
код. Для создания файла, называемого исходным
кодом, применяется текстовый редактор.
4. Компиляция.
Компилятор - это программа, задача которой
заключается в преобразовании исходного
кода в исполняемый код программы. Исполняемый
код - это код программы на машинном языке,
т.е. родном языке компьютера. Компьютеры
различных типов имеют разные машинные
языки. Компилятор языка С преобразует
код программы на языке С в код программы
на конкретном машинном языке. Конечным
результатом будет исполняемый файл, содержащий
код, который компьютер понимает и может
выполнить. Компилятор также проверяет,
что код программы написан на языке С без
ошибок. Если компилятор обнаруживает
ошибки, то он выдает соответствующее
сообщение на экран и не создает исполняемый
файл.
5. Выполнение программы.
Исполняемый файл - программа, которая
выполняется компьютером.
6. Тестирование и отладка программы
Программа может работать, но она может
работать неправильно, т.е. делать не то,
что вы от нее ожидаете.
Отладка - процесс обнаружения и устранения
программных ошибок. Например, вы можете
поставить скобки в неправильном месте,
можете пропустить ввод непредвиденных
данных, некорректно использовать язык
С. Много видов ошибок перехватывает компилятор.
Существуют также различные способы, помогающие
обнаруживать ошибки, которые не перехватываются
компилятором.
Большинство пользователей
склонны пренебрегать 1 и 2 этапами. Первые
программы достаточно просты и весь процесс
можно проделать мысленно. Ошибку легко
обнаружить. По мере усложнения программ
ошибки находить будет все труднее. Если
пренебрегать планированием будущей программы
- то неизбежны потеря времени, путаница,
малопонятные и плохо работающие программы.
Поэтому планирование программы должно
войти в привычку.
Чтобы преобразовать исходный код в исполняемый файл (содержащий готовый к выполнению код на машинном языке), необходимо проделать два этапа: компиляцию и компоновку
Компилятор преобразует исходный код в промежуточный код. Создается промежуточный файл - файл объектного кода, или объектный файл, с расширением obj. Хотя объектный файл содержит код на машинном языке, его нельзя выполнить. Объектный файл - результат трансляции исходного кода, но не является законченной программой.
В объектный файл не включается код запуска - код, который служит интерфейсом между программой и операционной системой
И также в объектный файл не включается код стандартных библиотечных подпрограмм. Во всех программах языка С используются стандартные подпрограммы, называемые функциями, которые входят в стандартную библиотеку языка С. Функции - это строительные блоки С. Например, функции printf() и scanf(). Объектный файл не содержит код этих функций. Сам код функций хранится в другом файле, называемом библиотекой. Библиотечный файл содержит коды многих функций.
Так вот, собирает эти три элемента - объектный код программы, стандартный код запуска для конкретной операционной системы и библиотечный код, программа, называемая компоновщиком. Она объединяет все эти три элемента, помещает их в один исполняемый файл.
исходный файл > компилятор > объектный код + библиотечный код + код запуска > компоновщик > исполняемый файл
Итак, объектный файл и исполняемый
файл состоят из инструкций машинного
языка. Но объектный файл содержит перевод
на машинный язык только кода программы,
созданной программистом, а исполняемый файл - также и машинный
код для используемых стандартных библиотечных
подпрограмм и для кода запуска.
Такой двухступенчатый подход применяется
с целью упрощения
создания модульных программ
(разбиение программы на модули). Модули
можно компилировать по отдельности, а
потом с помощью компоновщика объединить
скомпилированные модули. Если потребуется
изменить один модуль - не придется повторно
компилировать остальные.
В одних системах компилирующие и компонующие
программы выполняются отдельно. В других
компилятор автоматически запускает программу
компоновщика.
Структура программы:
#include<stdio.h>
void main()
{
printf("Привет Мир! \n");
return 0;
}
#include - означает, включить
в программу информацию из
файла stdio.h, который является стандартной
частью всех пакетов
В описании каждой функции указывается,
какие заголовочные файлы ей требуются.
Поэтому stdio.h включается не во все программы,
а только в те, в которых используются
стандартные библиотечные функции, в описании
которых указан заголовочный файл stdio.h.
Например, если мы используем printf(), то
в ее описании говорится, что ей необходим
stdio.h. Значит нужно подключить stdio.h. Компилятор
использует информацию из файла stdio.h для
построения программы, а та информация
из него, которая не будет использоваться,
не станет частью программы.
int main( void ) - Программа состоит из одной
или более функций - основных модулей программы.
Данная программа состоит только из одной
функции, которая называется main(). Круглые
скобки - признак того, что это функция.
Программа на С всегда начинается с выполнения
главной функции - функции main(), с нее начинается
вся работа.
int - указывет на то, что функция main() возвращает
целое число (число без десятичной точки
и дробной части). Эта информация используется
компилятором для того, чтобы в оперативной
памяти выделить для переменной num определенный
размер памяти.
Слово int - ключевое слово языка С, обозначающее
тип данных языка С. С типами данных мы
познакомимся позднее, а пока необходимо
запомнить, что ключевые слова нельзя
использовать в качестве имен переменных
или имен функций. Если тип int не указан,
то по умолчанию всегда подразумевается
int.