- •Наука информатика Глава 1. Информатика — предмет и задачи
- •1.1. Появление и развитие информатики
- •1.2. Структура информатики
- •1.3. Влияние информатики на развитие общества: информационные революции
- •1.4. Информационные технологии: этапы развития
- •Глава 2. Технические средства информатики
- •2.1. Классификация эвм
- •2.2. Архитектура эвм
- •2.3. Основные характеристики вычислительной техники
- •2.4. Архитектура персонального компьютера
- •2.4.1. Системный блок
- •2.4.2. Материнская плата
- •2.4.3. Внутренняя память
- •2.4.4. Внешняя память
- •2.4.5. Устройства ввода
- •2.4.6. Устройства вывода
- •Глава 3. Программные средства информатики.
- •3.1. Классификация программных продуктов
- •3.2. Системное программное обеспечение
- •3.3. Пользовательское программное обеспечение
- •3.4. Инструментарий технологии программирования
- •II. Информация и информационные процессы. Глава 1. Информация.
- •1.1. Информация и данные.
- •1.2. Количественные характеристики информации.
- •Синтаксическая мера информации.
- •Семантическая мера информации
- •1.3. Качественные характеристики информации.
- •Глава 2. Технологии работы с информацией.
- •2.1. Технология кодирования информации
- •Кодирование чисел
- •Двоичная система счисления
- •Кодирование музыки
- •Кодирование текста
- •Кодирование изображений
- •Кодирование фильмов
- •2.2. Технология упаковки информации
- •1. Для любой последовательности данных существует теоретический предел сжатия, который не может быть превышен без потери части информации.
- •2. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой он обеспечит лучшую степень сжатия, чем другие методы.
- •3. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой данный алгоритм вообще не позволит получить сжатия.
- •Сжатие с потерей информации
- •Обратимое сжатие информации
- •2.3. Технология шифрования информации
- •Алгоритмы симметричного шифрования
- •Алгоритмы ассиметричного шифрования
- •Сравнение алгоритмов шифрования
- •Глава 3. Информационные процессы и информационные системы.
- •3.1. Информационная деятельность и информационные процессы
- •Получение информации
- •Передача и хранение информации
- •Обработка и преобразование информации
- •3.2. История развития вычислительных устройств
- •3.3. Информационные системы
- •Задачи, решаемые информационными системами
- •Алгоритмизация и программирование. Глава 1. Технология решения задач
- •1.1. Этапы решения задачи на эвм
- •1.2. Категории специалистов, занятых разработкой и сопровождением программного обеспечения
- •Глава 2. Алгоритмизация
- •2.1. Понятие, определение и свойства алгоритма
- •2.2. Способы записи алгоритмов
- •2.3. Виды алгоритмов
- •Глава 3. Программирование
- •Виды языков программирования
- •3.2. Основные понятия программирования
- •3.3. Основные конструкции языка программирования на примере basic
- •3.4. Жизненный цикл программного продукта
- •Основы информационной культуры Глава 1. Информационное общество
- •1.1. Представление об информационном обществе и информационной культуре
- •1.2. Информационные ресурсы и рынок информационных услуг
- •Глава 2. Всемирная компьютерная сеть
- •2.1. Разновидности компьютерных сетей
- •Модель взаимодействия «клиент – сервер».
- •4. Смешанные топологии
- •2.2. История Интернет
- •2.3. Структура Интернет
- •2.4. Сервисы Интернет Электронная почта
- •Поисковые системы
- •Телеконференции
- •Чаты (irc)
- •Содержание
3.2. Основные понятия программирования
Программирование — это раздел информатики, изучающий методы и приемы составления программ для компьютеров. Кроме того, программирование — это подготовка задачи к решению ее на компьютере.
Программа — это последовательность команд, понятных компьютеру. Программа записывается в виде символов, к числу которых относятся латинские и русские буквы, цифры, знаки препинания и знаки операций. К программе могут быть предъявлены определённые требования:
минимальные требования к компьютеру, на котором работает программа.
ясность входных и выходных данных и простота программы.
минимальное время создания программы и простота её изменения.
минимальное время работы программы, минимум занимаемой памяти и минимум использованных в программе операторов.
Чтобы программа удовлетворяла этим противоречивым требованиям, необходимо обладать искусством программирования.
Свойства программ — выполнимость, мобильность, правильность, эффективность. Выполнимость — возможность выполнения программы на данном типе компьютеров. Мобильность — возможность переноса программы на другой тип компьютеров. Правильность программы — правильность результатов, получаемых с помощью данной программы. Эффективность — минимум времени выполнения, минимум машинной памяти и других ресурсов компьютера.
Программа на языке высокого уровня состоит из команд, обычно имеющих осмысленные имена, а также управляющих структур, таких как циклы и условные операторы. Команды выполняются последовательно, сверху вниз. Циклы необходимы для того, чтобы определенный отрезок программы повторялся несколько раз. Обычно различают циклы с фиксированным числом повторений, циклы с предусловием и циклы с постусловием.
Второй важной управляющей структурой является условный оператор или оператор ветвления. В случае оператора ветвления, если условие истинно, то выполняется группа операторов, следующая за условием, а если ложно, то операторы, находящиеся на ветке «иначе». В случае оператора выбора, значение выражения проверяется на эквивалентность с каждой из констант выбора, и если они равны, то выполняются соответствующие операторы. Если же среди всех констант выбора не будет найдена константа равная какому-нибудь выражению, то выполняются операторы, следующие за ключевым словом «альтернатива».
for (int I=0; I>=10; I++) printf("Интерация цикла N\%d",I);
if (x < 0) printf("X-меньше нуля");
switch (MenuItem){
case 1:printf("выбран первый пункт");
break;
case 2:printf("выбран второй пункт");
default:error();
}
Пример 2: Оператор цикла, условный оператор и оператор выбора на языке С
Используя подобный набор операций, в принципе, возможно создать программу любой сложности. Можно упомянуть такие черты современного императивного языка, как модульность, подпрограммы и интегрированная среда разработки, сочетающая текстовый редактор, компилятор, линкер и отладчик в одной системе.
Основная идея объектно-ориентированных языков в том, что программисту дается инструмент для создания своего типа данных — объекта или класса.
Класс — это некая структура данных объединяющая данные и методы их обработки в одном объекте. То есть методы класса, и только методы класса имеют доступ к полям данных класса, не требуя передачи их в качестве параметров. Методы подразделяются на статические и виртуальные. Виртуальный метод отличается от статического тем, что реализующий его код присоединяется к вызову не в процессе компиляции, а в процессе выполнения, что достигается, так называемым, поздним связыванием. Это дает возможность стоить иерархию классов с одинаковыми названиями методов, реализуемыми различными кодами. Кроме обычных методов внутри класса могут использоваться конструкторы и деструкторы. Конструктор — это специальный метод, инициализирующий класс, содержащий виртуальные методы. Конструктор инициализирует класс установлением связи между классом и специальной таблицей виртуальных методов, содержащей адреса кодов, реализующих виртуальные методы. Конструктор может также использоваться для инициализации полей данных класса. Деструктор — это специальный метод, освобождающий память кучи от динамических объектов.
Основными отличительными свойствами классов являются:
инкапсуляция — объединение полей данных с функциями-методами, работающими с этими данными;
наследование — задание класса, затем использование его для построения иерархии порожденных классов с наследованием доступа каждого из порожденных классов к коду и данным предка;
полиморфизм — задание одного имени действию, которое передается вверх и вниз по иерархии классов, с реализацией этого действия способом, соответствующим каждому классу в иерархии.
Допустим, наши практические интересы лежат в области построений изображений звездных тел в двумерной проекции. Очевидно, что основой всякого изображения является положение (позиция) отдельного элемента на экране, описываемая координатами X и Y. Что можно сделать с парой координат? Во-первых, может потребоваться задать значения координат. Во-вторых, нам может потребоваться знание фактических значений координат. При обычном подходе нам необходимо было бы объявить структуру данных описывающую координаты, а также функции, получающие эту структуру в качестве параметра. Логично было бы связать данные и функции в одну структуру. Объектно-ориентированный язык программирования предоставляет для этого мощный и удобный инструмент.
class position{
private:
int x,y;
public:
void Init(int CoordX, int CoordY);
int GetX();
int GetY();
};
Эта структура лишь объявляет класс, реализация методов обычно выполняется после. Теперь рассмотрим объект звезду с координатами X и Y. Ее можно сделать видимой или невидимой, ей можно задать цвет, ее можно переместить. Заметим, что поля X, Y и методы GetX, GetY класса position подходят и нашему объекту - звезде. Объектно-ориентированный язык предоставляет возможность учесть эту ситуацию. Новый класс следует считать порожденным от класса position.
class star : position{
private:
int Visible;
unsigned int Color;
public:
void Init(int, int, int);
int IsVisible();
void Show();
void Blind();
void Move(int, int);
}
Класс star теперь наследует свойства класса position. Поля X, Y явно не заданы в star, но star ими обладает благодаря наследованию.