- •Лекция 1 Информация.
- •Характеристики ценности информации.
- •Развитие информационных технологий.
- •Лекция 2 Компьютерные информационные системы.
- •Лекция 3 слайд 36 Деловые информационные системы.
- •Отработанные часы
- •Обработка данных платежной ведомости
- •Оплата за
- •Лекция 4 слайд 52 Кодирование
- •Лекция 5 Системы счисления
- •Представление целых неотрицательных чисел
- •Представление дробных и отрицательных чисел
- •Перевод чисел из одной системы счисления в другую
- •Лекция 6 Введение в компьютерную цифровую логику.
- •Лекция 7 Шифрование сообщений Основные положения.
- •Шифр Гай Юлия Цезаря
- •Книжный шифр
- •Квадрат Полибия
- •Тюремный шифр
- •Магические квадраты
- •Решетка Кардано
- •Лекция 8 Алгоритмы и языки программирования
- •Лекция 9 История развития вычислительных машин.
- •Из истории развития компьютеров в ссср
- •Лекция 10 Архитектура и Функциональные единицы компьютеров
- •Лекция 11 Поколения компьютеров.
- •Интернет и Всемирная Паутина
Лекция 8 Алгоритмы и языки программирования
За время своего существования человечество выработало правила поведения в конкретных ситуациях. Часто эти правила можно представить в виде инструкций, состоящих из последовательно выполняемых шагов (например, пошаговые инструкции по сборке мебели). Для того, чтобы исполнители таких инструкций могли использовать их на практике, инструкции должны удовлетворять определенным требованиям:
должны быть представленными в форме, понятной исполнителю (сформулированы на понятном для него языке);
состоять из описаний отдельных элементарных шагов. Это свойство называется дискретностью (от лат. discretus – прерывистый);
после завершения каждого шага исполнителю должно быть точно известно, какой шаг выполнять следующим. Это свойство называется детерминированностью (от лат. determinate – определенность);
возможностью многократного использования инструкции в похожих ситуациях (массовость);
независимо от исходной ситуации тот или иной окончательный результат должен быть достигнут за конечное число шагов (результативность). Это означает, что последовательность выполняемых шагов не должна быть бесконечной.
Описание последовательности действий, обладающее свойствами понятности, дискретности, детерминированности, массовости и результативности называется алгоритмом.
С
ам
термин “алгоритм” произошел от имени
математика IX века Абу Джафара ибн Мусы
аль-Хорезми (в Европе его имя писали
по-латински – Alhoritmi).
Описание алгоритма в форме, приемлемой для компьютера, называется программой. Программа – это перечень последовательных инструкций (команд) для компьютера, позволяющих компьютеру решить требуемую проблему. Чтобы быть приемлемыми для компьютера, инструкции должны быть закодированы в двоичной форме. Компьютеры не могут функционировать без программ, которые дают им команды.
Имеются два традиционных метода написания программ.
Первый - в виде блок-схем, второй – известен как «псевдокод». Блок-схема - план в форме графического или рисованного представления, которое использует определенные символы, чтобы иллюстрировать логику программы. Это «картина» логических шагов, которые должны быть выполнены компьютером. Форма каждого символа соответствует определенному действию, а специфические особенности вписаны в пределах символа. Этот метод характеризуется большой наглядностью и считается особенно полезным на начальных стадиях обучения программированию.
Наименование блока |
Обозначение блока |
Содержание |
Процесс |
|
Обработка информации |
Принятие решения |
|
Логический блок проверки истинности или ложности некоторого условия |
Передача данных |
|
Ввод или вывод информации
|
Пуск, остановка |
|
Начало или конец программы |
Модификация |
|
Организация циклического процесса – заголовок цикла |
Выполняемые на каждом шаге действия записываются внутри прямоугольных блоков. Внутрь ромбов вписывают условия выполнения шагов. Овалами обозначают начало и конец алгоритма. Линии указывают последовательность выполнения действий. Если прямая линия или последнее звено ломаной линии не заканчиваются стрелкой, то двигаться по ним нужно в направлении сверху вниз.
Структурный проект – так же один из известных подходов к разработке и развитию прикладного программного обеспечения. Смысл структурного проекта состоит в том, чтобы разделить большую, трудную проблему на несколько меньших проблем (на модули), каждая из которых достаточно проста в управлении и решается независимо. Эти модули могут многократно использоваться в других различных программах. Такие блоки или модули программного обеспечения обычно дешевле в развитии и обслуживании и их легче изменять и модернизировать через какое-то время.
Основная цель структурного программирования состоит в том, чтобы упорядочить и уменьшить сложность программ компьютера.
Основная идея структурного программирования состоит в том, чтобы улучшить логический поток программы, разделив программу на группы предложений (наименьших выполняемых блоков в языке программирования). Эти группы сформированы согласно их функций. Одна группа может читать данные, в то время как другая группа выполняет некую задачу обработки данных. При использовании структурного подхода к программированию, предложения в группе должны соответствовать стандартизированной структуре. Может иметься только одна точка ввода в блок предложений и только одна точка выхода из него.
Поэтому, Вы не можете присоединиться или отделиться от середины структурированной группы предложений. Это ограничение устраняет много ошибок программирования и делает отладку программы более легкой. Кроме того, не должно иметься никаких предложений, которые не могут быть достигнуты или выполнены. В соответствии со структурным подходом к программированию, каждая группа может быть проверена отдельно
Как показано на рисунке ниже, в структурном программировании используют три типа структур: структуру следования, структуру ветвления и структуру цикла
Y = 3 x X
Y + 3xX+ 5
1 = 1 + 1
(
T = T + X (1)
Структура
следования
No
(Loop)
Структура цикла
В структуре следования (линейной), должны иметься точка начала и точка окончания. После начала структуры следования, предложения программы выполняются одно за другим, пока все они не будут выполнены. Тогда программа или заканчивается или продолжается в другой структуре.
Структура ветвления позволяет компьютеру передавать управление другой команде, в зависимости от некоторых условий. Обычно, имеются только две возможных ветви.
Последняя структура - структура цикла. Фактически, имеются две обычно используемых структуры цикла. Первая – Do-Until «делай, пока не» и вторая – Do-While «делай, пока еще». Обе оканчиваются тем же самым. В структуре Do-Until «делай, пока не», цикл выполняется, пока некоторое условие не выполнено (т.е. пока условие имеет значение «ложь»). Для структуры Do-While «делай, пока еще» цикл выполняется, пока существует некоторое условие (т.е. пока условие имеет значение «истина»).
Вообще, хороший подход к написанию большой программы состоит в том, чтобы начать с главного модуля и спуститься до других модулей. Это называется нисходящим подходом к программированию. Такой подход используется в структурном проектировании программ и структурном программировании. Хотя концепция нисходящего программирования проста, она может помочь упорядочить размещение модулей, избежать кодирования и устранять неполадки. Процесс начинается с написания главного модуля. Затем пишутся модули следующего уровня. Эта процедура продолжается, пока все модули не будут написаны. В дополнение к кодированию программы, нисходящий подход должен использоваться в тестировании и отладке программы. Таким образом, после написания первого, или главного, модуля, его проверяют и отлаживают. Но главный модуль посылает компьютер к модулям на втором уровне, которые еще не были написаны.
Простые же модули на втором уровне так написаны, что им ничего не остается делать, как посылать компьютер назад к главному модулю, с тем, что бы он был полностью проверен. Если ошибки найдены в главном модуле, они немедленно исправляются.
На рисунке приведена блок-схема алгоритма Евклида.
Второй метод для написания программ называется «псевдокод». Псевдокод - имитация фактически используемых программных команд. Он требует меньше времени для профессионального программиста, чем разработка программ в виде блок-схем.
Процесс написания команд программы называется кодированием. Кодирование программы - написание необходимой команды на языке, отобранном, чтобы решить проблему, поставленную в первом шаге, проанализированной и решенной во втором шаге. Инструкции, которые программист пишет, должны быть переведены в машинно-считываемую форму и быть написаны согласно определенному набору правил. Эти правила - основа языка программирования.
Первичная функция языка программирования - приспособить последовательность команд к компьютерной системе, чтобы последняя могла их исполнять. Каждый язык программирования – это набор символов, которые имеют специальное значение. Каждый язык также имеет его собственный набор правил, называемых синтаксисом языка. Синтаксис языка диктует, как символы должны быть объединены в предложения, способные к передаче в виде инструкций в центральный процессор (CPU).
Имеются более 200 проблемно-ориентированных языков.
Три типа языка могут быть идентифицированы: языки разметки, языки сценариев и языки программирования.
Языки разметки – это фактически не языки программирования. Это набор кодов в текстовом файле, указывающий компьютеру, как формировать файл при выводе на принтер или на дисплей. Рассмотрим некоторые из них.
HTML (HyperText Mark-up Language - язык гипертекстовой разметки) - самый простой язык разметки, используемый для создания web-страницы и intranet -страниц.
XML (eХtensible Mark-up Language -расширяемый язык разметки) – расширяет возможности и основан на HTML; он по существу упрощенная версия SGML, который разработан прежде всего для разметки web и intranet -документов.
SGML (standard generalized mark-up language - стандартный язык обобщенной разметки) - широко используемый в публикациях и исследованиях; это - сложная и всесторонняя система, которая определяет правила для разметки (или «тегирования») элементов документа.
Динамический HTML или DHTML – расширение HTML, который позволяет включение мультипликации и интерактивных элементов в веб-страницы.
Языки сценариев - являются языками, на которых обычно пишут сценарии, которые по сути являются простыми программами. Они часто используются на web - страницах и в компьютерных играх.
JavaScript - часто используется для выполнения простых задач, типа проверки, напрамер, что пользователь заполнил все требуемые поля форм на веб-странице перед щелчком на «подчиненной» кнопке.
Perl или PERL (practical extraction and report language- практическое извлечение и язык сообщений) – вероятно, наиболее часто используемый язык сценариев. Он используется на Web для обработки вводимого текста, в задачах типа проверки тестов в диалоговом режиме и посылки этих результатов тестируемым студентам.
Сценарии - относительно простые программы. Однако, более сложные программы требуют более мощных языков.
Имеется огромное разнообразие языков программирования. Языки программирования разрабатывались, чтобы помогать решить специфические типы проблем.
BASIC (beginners’ all-purpose symbolic instruction code - универсальный символический код обучения новичков) - относительно простой язык. Более мощная модернизированная версия этого языка - VisualBasic или VB - часто используется для создания программ, которые объединяют и автоматизируют операции при работе с приложениями операционной системы Windows.
COBOL (common business oriented language - общий бизнес-ориентированный язык) – используется главным образом в бизнесе, чтобы писать коммерческие приложения (запускаемых прежде всего на мейнфреймах). Хотя некоторые считают его устаревшим и громоздким, он все еще широко используется.
FORTRAN (formula translation - преобразователь формул) – разработан для использования учеными и инженерами. Включает обширные математические и статистические возможности и было первым языком программирования высокого уровня.
Pascal - часто используется при обучении программированию. Его относительная негибкость не дала ему возможности стать популярным за пределами академических кругов.
ALGOL (алгоритмический язык) - используется главным образом математиками и учеными.
LISP (list processing -обработка списка данных) - используется в исследованиях в области искусственного интеллекта.
Delphi – используется во многих приложениях, особенно в базах данных; он позволяет разработчикам быстро развивать приложения
C и C ++ - широко используемые языки высокого уровня. Это- наиболее часто используемые языки программирования.
Java - мощный язык высокого уровня, который является подобным C ++. Был разработан, главным образом, чтобы использоваться на Web и в Интранете.
Желание эффективно применять всю мощь компьютерной обработки информации к решению проблем не уменьшилось и языки программирования продолжают развиваться.
Важная концепция использования компьютера непосредственно для облегчения работы программиста появилась весьма рано в истории цифровой обработки данных. Люди поняли, что компьютер можно использовать, чтобы перевести программы с более удобной для прочтения человеком формы в удобный для обработки в компьютере двоичный код. Эта концепция привела к созданию двух типов языков программирования.
Машинно-ориентированные языки программирования дали возможность программистам писать программы, которые выполнил бы компьютер, но не могли читать люди. Функционально-ориентируемые языки программирования попытались освободить программиста от деталей машинных команд.
Первое поколение языков программирования – машинные языки. Машинные языки считаются языками низкого уровня, потому что не имеется никакой другой схемы кодирования программы, проще, чем использование двоичных символов 1 и 0. Двоичный буквенно-цифровой код ASCII использует только 0 и 1 чтобы представить все буквы алфавита. Поскольку это - язык CPU, текстовые файлы, переведенные в двоичный код ASCII, могут читаться почти каждой платформой компьютерной системы.
Все языки вне первого поколения называются символьными языками, потому что их акцент находится на использовании легко понятых людям символов.
Язык ассемблера - второе поколение языков программирования, который заменяет двоичные цифры легко понятыми символами. Этот удобочитаемый человеком код позволяет программисту сосредотачиваться на построении решения проблемы больше, чем на специфических сложностях кодирования программ для компьютера. Программы системного программного обеспечения, типа операционных систем и программ-утилитов часто написаны на языке ассемблера.
Ассемблер – компьютерный утилит, который переводит программные предложения, написанные на языке ассемблера, известные как «исходный текст», предложение за предложением в приемлемый для компьютера двоичный код. Каждое предложение программы, написанное на языке ассемблера, соответствует одной машинной команде. Ассемблер - самая простая форма программы-переводчика, преобразующей написанный в удобочитаемой для человека форме текст на машинный язык. Язык ассемблера считается языком низкого уровня.
Языки высокого уровня продолжили тенденцию к большему использованию символьного кода и очень далеки от конкретного инструктирования компьютера, как выполнить ту или иную операцию.
Существует так же третье поколение языков программирования (3GLs). Третье поколение включает языки высокого уровня, типа BASIC, COBOL, FORTRAN и использует англо-подобные предложения и команды. Этот тип языка более легкий в изучении и использовании, чем машинный код и языки ассемблера, потому что более близко походит для каждодневного человеческого общения и понимания.
Языки четвертого поколения (4GLs) - языки программирования, которые являются менее процедурными и еще более англо-подобными, чем языки высокого уровня. Они называются языками запросов и управления базами данных. Считается, что получение от компьютера результата более важно, чем то, каким образом будет написана программа. В результате, много менеджеров и пользователей с маленьким или отсутствием навыков программирования и работы на компьютерах, используют языки четвертого поколения, например, Structured Query Language (SQL - язык структурированных запросов), FOCUS ( Federation on Computing in the US – Американская федерация по компьютеризации), Powerhouse, SAS.
Языки пятого поколения (5GLs) – это языки программирования, которые используются, чтобы создать программы, использующие искусственный интеллект и экспертные системы. Другое название для языков программирования пятого поколения - естественные языки, потому что они позволяют программистам общаться с компьютером, используя нормальные фразы на английском языке. Обычно, чтобы запрограммировать компьютер, Вы должны сначала изучить специальные команды, языки и ключевые слова. Это требует много времени и усилий и влечет много ошибок. Естественные языки позволяют конечным пользователям иметь доступ к данным и взаимодействовать с компьютером, используя естественные или обычные слова так, что делает компьютер чрезвычайно удобным в использовании. Например, программы INTELLECT and Clout.
