Краткая история развития информатики и вычислительной техники.

Краткая история развития информатики и вычислительной техники.

С увеличением объёма вычислений появился первый счётный переносной инструмент - “Счёты”.В начале 17 века возникла необходимость в сложных вычислениях. потребовались счётные устройства, способные выполнять большой объём вычислений с высокой точностью. В 1642 г. французский математик Паскаль сконструировал первую механическую счётную машину - “Паскалину”.В 1830 г. английский учёный Бэбидж предложил идею первой программируемой вычислительной машины (“аналитическая машина”). Она должна была приводиться в действие силой пара, а программы кодировались на перфокарты. Реализовать эту идею не удалось, так как было не возможно сделать некоторые детали машины.
Первый реализовал идею перфокарт Холлерит. Он изобрёл машину для обработки результатов переписи населения. В своей машине он впервые применил электричество для расчётов.В 1930 г. американский учёный Буш изобрел дифференциальный анализатор - первый в мире компьютер.Большой толчок в развитии вычислительной техники дала вторая мировая война. Военным понадобился компьютер, которым стал “Марк-1” - первый в мире цифровой компьютер, изобретённый в 1944 г. профессором Айкнем. В нём использовалось сочетание электрических сигналов и механических приводов. Размеры: 15 X 2,5 м., 750000 деталей. Могла перемножить два 23-х разрядных числа за 4 с.В 1946 г. группой инженеров по заказу военного ведомства США был создан первый электронный компьютер - “Эниак”. Быстродействие: 5000 операций сложения и 300 операций умножения в секунду. Размеры: 30 м. в длину, объём - 85 м3., вес - 30 тонн. Использовалось 18000 эл. ламп.Первая машина с хронимой программой - ”Эдсак” - была создана в 1949 г., а в 1951 г. создали машину “Юнивак” - первый серийный компьютер с хронимой программой. В этой машине впервые была использована магнитная лента для записи и хранения информации.

Структура программного обеспечения (системное, прикладное и инструментальное). Особенности распространения и установки ПО.

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

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

Системное ПО: Это программы общего пользования не связаны с конкретным применением ПК и выполняют традиционные функции: планирование и управление задачами, управления вводом-выводом и т.д.

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

Отладка и тестирование алгоритмов и программ. Этапы тестирования. Требования к тестовым данным. Примеры

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

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

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

Учитывая разнообразие источников ошибок, при составлении плана тестирования классифицируют ошибки на два типа: 1 – синтаксические; 2 – семантические (смысловые).

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

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

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

В план тестирования обычно входят следующие этапы:

Сравнение программы со схемой алгоритма.
Визуальный контроль программы на экране дисплея или визуальное изучение распечатки программы и сравнение ее с оригиналом на программном бланке. Первые два этапа тестирования способны устранить больше количество ошибок, как синтаксических (что не так важно), так и семантических (что очень важно, так как позволяет исключить их трудоемкий поиск в процессе дальнейшей отладки).
Трансляция программы на машинных язык. На этом этапе выявляются синтаксические ошибки. Компиляторы с языков Си, Паскаль выдают диагностическое сообщение о синтаксических ошибках в листинге программы (листингом называется выходной документ транслятора, сопровождающий оттранслированную программу на машинном языке – объектный модуль).
Редактирование внешних связей и компоновка программы. На этапе редактирования внешних связей программных модуле программа-редактор внешних связей, или компоновщик задач, обнаруживает такие синтаксические ошибки, как несоответствие числа параметров в описании подпрограммы и обращении к ней, вызов несуществующей стандартной программы. например, 51 H вместо 51 N, различные длины общего блока памяти в вызывающем и вызываемом модуле и ряд других ошибок.

Выполнение программы. После устранения обнаруженных транслятором и редактором внешних связей (компоновщиком задач) синтаксических ошибок переходят к следующему этапу – выполнению программы на ЭВМ на машинном языке: программа загружается в оперативную память, в соответствие с программой вводятся исходные данные и начинается счет. Проявление ошибки в процессе вода исходных данных или в процессе счета приводит к прерыванию счета и выдаче диагностического сообщения рабочей программы. Проявление ошибки дает повод для выполнения отладочных действий; отсутствие же сообщений об ошибках не означает их отсутствия в программе. План тестирования включает при этом проверку правильности полученных результатов для каких-либо допустимых значений исходных данных.
Тестирование программы. Если программа выполняется успешно, желательно завершить ее испытания тестированием при задании исходных данных, принимающих предельные для программы значения. а также выходящие за допустимые пределы значения на входе.

Контрольные примеры (тесты) – это специально подобранные задачи, результаты которых заранее известны или могут быть определены без существенных затрат.

Наиболее простые способы получения тестов:

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

Файловый тип данных: технология работы с файлами. Примеры.

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

В Турбо Паскале определены три файловых типа: текстовые, типизированные и нетипизированные файлы.

Для задания типа-файла следует использовать зарезервированные слова File и Of, после чего указать тип компонент файла.

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

1) text означает текстовый файл.

Пример:

var

tekst: text;

2) под file of тип подразумевается типизированный файл,

Пример:

var

fail: file of char;

3) file означает нетипизированный файл.

Пример:

var

failik: file;

Var
Z : File Of Word;

Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и т.д.). Их можно использовать лишь для выполнения операций с файлами (чтение, запись и т.д.).

Перед тем, как осуществлять ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом при помощи процедуры Assign.

Формат:
Assign(<Имя файловой переменной>,<Имя файла>);

После этого файл должен быть открыт одной из процедур:
Reset(<Имя файловой переменной>);
Открывается существующий файл для чтения, указатель текущей компоненты файла настраивается на начало файла. Если физического файла, соответствующего файловой переменной не существует, то возникает ситуация ошибки ввода-вывода.

Rewrite(<Имя файловой переменной>);
Открывается новый пустой файл для записи, ему присваивается имя, заданное процедурой Assign. Если файл с таким именем уже существует, то он уничтожается.

После работы с файлом он, как правило, должен быть закрыт процедурой Close.
Close(<Имя файловой переменной>);

Это требование обязательно должно соблюдаться для файла, в который производилась запись.

Теперь рассмотрим непосредственную организацию чтения и записи.

Для ввода информации из файла, открытого для чтения, используется уже знакомый вам оператор Read. Правда, в его формате и использовании вы заметите некоторые изменения:
Read(<Имя файловой переменной>, <Список ввода>);
Происходит считывание данных из файла в переменные, имена которых указаны в списке ввода. Переменные должны быть того же типа, что и компоненты файла.

Процедуры

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

Глобальные переменные объявляются вне процедур и функций и находятся в сегменте данных.

Локальные переменные объявляются в процедурах и функциях и находятся в сегменте стека.

Параметры-значения

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

Параметры-переменные

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

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

Параметры-константы

Часто в качестве параметра в подпрограмму необходимо передать ту или иную переменную, которую подпрограмма не должна изменять. В этом случае нежелательно передавать этот параметр как параметр-переменную. Можно его передать как параметр-значение, однако, если эта переменная имеет большой размер (массив, запись и т.п.), то копия такого параметра займет большую часть стека и даже может его переполнить. Это же приводит и к увеличению времени выполнения программы из-за затрат на формирование копии параметра в стеке. В этой ситуации параметр лучше передать как параметр-константу. Такой параметр, если он структурного типа, передается по ссылке, т.е. своим адресом, но предусматривается автоматическая защита от его изменения. Использовать параметр-константу можно только в версии 7.0.
Параметр-константа указывается в заголовке подпрограммы аналогично параметру-значению, но перед именем параметра (или списком имен) записывается зарезервированное слово const. Действие слова const распространяется до ближайшей точки с запятой, т.е. в пределах одной группы.

End.

Описание модулей

Исходный текст каждого модуля хранится в отдельном файле с расширением .pas. Общая структура модуля:

unit имя; { заголовок модуля }

interface { интерфейсная секция модуля }

{ описание глобальных элементов модуля (видимых извне) }

implementation { секция реализации модуля }

{ описание локальных (внутренних) элементов модуля }

begin { секция инициализации }

{ может отсутствовать }

end.

В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS и GRAPH3. Модули GRAPH, TURBOS и GRAPHS выделены в отдельные TPU-файлы, а остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES.

Понятие и виды рекурсии. Примеры рекурсивных алгоритмов.

Рекурсия — это такая организация выполнения работы функции, при которой данная функция вызывает сама себя.

Виды:

Прямая рекурсия - вызов функцией самой себя делается непосредственно в этой же функции

Косвенная рекурсия - создаётся за счёт вызова данной функции из какой-либо другой функции, которая сама вызывалась из данной функции

Пример рекурсивного алгоритма:

Числа Фибоначчи

Function F(n:byte):longint;
begin
if n <= 1
then F:=1
else F:= F(n-1)+F(n-2)

Указатели

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

Указатели делятся на стандартные и определяемые программистом. Величины стандартного типа – pointer, предназначены для хранения адресов данных произвольного типа:

var p : pointer;

Программист может определить указатель на данные или подпрограмму конкретного типа. Как и для других нестандартных типов, это делается в разделе type:

type pword = ^word; { читается как "указатель на word" }

...

var pw : pword;

Такие указатели называются типизированными. Можно описать указатель на любой тип данных, кроме файловых. Тип указателя на данные можно описать и непосредственно при описании переменной:

var pw : ^word;

Основные понятия

Абстракция

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

Инкапсуляция

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

Наследование

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

Полиморфизм

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Класс

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

Объект

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

Прототип

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.

Декомпозиция:

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

При объектной декомпозиции между объектами устанавливается отношения:

{loadposition adsense2}

1) использования – первый объект (активный) передает сообщение другому (пассивному), между ними могут быть объекты посредники.

2) включения – если объект является результатов декомпозиции более сложного объекта.

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

Краткая история развития информатики и вычислительной техники.

С увеличением объёма вычислений появился первый счётный переносной инструмент - “Счёты”.В начале 17 века возникла необходимость в сложных вычислениях. потребовались счётные устройства, способные выполнять большой объём вычислений с высокой точностью. В 1642 г. французский математик Паскаль сконструировал первую механическую счётную машину - “Паскалину”.В 1830 г. английский учёный Бэбидж предложил идею первой программируемой вычислительной машины (“аналитическая машина”). Она должна была приводиться в действие силой пара, а программы кодировались на перфокарты. Реализовать эту идею не удалось, так как было не возможно сделать некоторые детали машины.
Первый реализовал идею перфокарт Холлерит. Он изобрёл машину для обработки результатов переписи населения. В своей машине он впервые применил электричество для расчётов.В 1930 г. американский учёный Буш изобрел дифференциальный анализатор - первый в мире компьютер.Большой толчок в развитии вычислительной техники дала вторая мировая война. Военным понадобился компьютер, которым стал “Марк-1” - первый в мире цифровой компьютер, изобретённый в 1944 г. профессором Айкнем. В нём использовалось сочетание электрических сигналов и механических приводов. Размеры: 15 X 2,5 м., 750000 деталей. Могла перемножить два 23-х разрядных числа за 4 с.В 1946 г. группой инженеров по заказу военного ведомства США был создан первый электронный компьютер - “Эниак”. Быстродействие: 5000 операций сложения и 300 операций умножения в секунду. Размеры: 30 м. в длину, объём - 85 м3., вес - 30 тонн. Использовалось 18000 эл. ламп.Первая машина с хронимой программой - ”Эдсак” - была создана в 1949 г., а в 1951 г. создали машину “Юнивак” - первый серийный компьютер с хронимой программой. В этой машине впервые была использована магнитная лента для записи и хранения информации.

Наши рекомендации