
- •Содержание
- •Информатика. Предмет информатики. Основные задачи информатики.
- •Информация – Свойства, Классификация. Показатели качества информации
- •Информация - от латинского слова informatio, что в переводе обозначает сведение, разъяснение, ознакомление.
- •Информация - снятая неопределенность наших знаний
- •Сообщение - наименьший элемент языка, имеющий идею или смысл, пригодный для общения.
- •Классификация информации по разным признакам
- •Меры и единицы количества и объема информации. Энтропия
- •Формы и способы представления информации. Системы счисления
- •Сводная таблица переводов целых чисел
- •Умножение
- •Диапазоны значений целых чисел без знака
- •Диапазоны значений целых чисел со знаком
- •2. А положительное, b отрицательное и по абсолютной величине больше, чем а.
- •3. А положительное, b отрицательное и по абсолютной величине меньше, чем а.
- •Кодирование информации (текст, числа, цвет, графика, звук)
- •Способы кодирования информации
- •Логические основы эвм. Логические операции. Законы логического вывода
- •Вопросы для самопроверки:
- •Глава2. Технические средства реализации информационных процессов История развития вычислительной техники
- •В 1924 году Холлерит создал фирму ибм (ibm, International Business Machines Corporation).
- •I поколение эвм
- •Второе поколение компьютеров, использующее транзисторы, появилось в 1955
- •Третье поколение эвм 1968 - 1973
- •Четвертое поколение эвм 1974 – ……….
- •Технические характеристики эвм четвертого поколения
- •Классификация компьютеров
- •Самый быстрый компьютер по данным сайта
- •1572864 Кол-во ядер
- •1572864 Гб памяти
- •Персональные компьютеры
- •Десктоп
- •Моноблок
- •Ноутбуки
- •Понятие и основные виды архитектуры эвм
- •1. Принцип программного управления. Из него следует, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
- •Состав и назначение основных элементов персонального компьютера, их характеристики
- •Устройства ввода/вывода данных, их разновидности и основные характеристики
- •Вопросы для самопроверки:
- •Глава 3. Программные средства реализации информационных процессов Понятие программного обеспечения Системное программное обеспечение: назначение, возможности, структура
- •Развитие операционных систем:
- •Прикладное программное обеспечение
- •Вопросы для самопроверки:
- •Глава 4. Офисные приложения
- •Вопросы для самопроверки:
- •Глава 5. Базы данных
- •Назначение и основы использования систем искусственного интеллекта
- •Вопросы для самопроверки:
- •Глава 6. Локальные и глобальные сети эвм
- •2. Hub (концентратор):
- •Bridle (Мост):
- •4. Router (маршрутизатор):
- •5. Switch (коммутатор):
- •Html- язык разметки гипертекста
- •Вопросы для самопроверки:
- •Глава 7. Основы защиты информации и сведений, составляющих государственную тайну. Методы защиты информации
- •Государство
- •Нормативные документы в области информационной безопасности
- •Выписка из уголовного кодекса рф (1 января 1997 года)
- •Угроза информационной безопасности государства
- •2. Техногенные :
- •3. Стихийные угрозы
- •5.Системы резервного копирования
- •6.Системы бесперебойного питания.
- •7.Антивирусные средства
- •8.Межсетевые экраны
- •4. По особенностям алгоритма вируса
- •Вопросы для самопроверки:
- •Раздел II. Моделирование, алгоритмизация и программирование Глава 1. Модели решения функциональных и вычислительных задач
- •Вопросы для самопроверки:
- •Глава 2. Алгоритмизация и программирование. Технологии программирования
- •Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур: следование, ветвление, цикл.
- •Вопросы для самопроверки:
- •Глава 3. Языки программирования
- •Логические типы данных
- •Вопросы для самопроверки:
- •Глоссарий
- •Список рекомендуемой литературы
Вопросы для самопроверки:
Что такое алгоритм?
Перечислите основные свойства алгоритма?
Что такое линейный алгоритм?
Какой алгоритм называется алгоритмом с условием?
Какой алгоритм называется циклом?
Перечислите виды циклов?
Назовите способы представления алгоритмов.
Перечислите классы информационных моделей.
Можете ли Вы связать понятия "яблоко", "гараж" и "компьютер"?
Элементы графического алгоритма. Название процессов.
Глава 3. Языки программирования
В развитии инструментального программного обеспечения рассматривают пять поколений языков программирования (ЯП). Языки программирования как средство общения человека с ЭВМ от поколения к поколению улучшали свои характеристики, становясь все более доступными в освоении непрофессионалам.
Первые три поколения ЯП характеризовались более сложным набором зарезервированных слов и синтаксисом. Языки четвертого поколения все еще требуют соблюдения определенного синтаксиса при написании программ, но он значительно легче для освоения. Естественные ЯП, разрабатываемые в настоящее время, составят пятое поколение и позволят определять необходимые процедуры обработки информации, используя предложения языка, весьма близкого к естественному и не требующего соблюдения особого синтаксиса.
Поколения ЯП
Поколения |
Языки программирования |
Характеристика |
Первое |
Машинные |
Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знания архитектуры ЭВМ |
Второе |
Ассемблеры, макроассемблеры |
Более удобны для использования, но по-прежнему машинно-зависимы |
Третье |
Языки высокого уровня |
Мобильные, человеко-ориентированные, проще в освоении |
Четвёртое |
Непроцедурные, объектно-ориентированные, языки запросов, параллельные |
Ориентированы на непрофессионального пользователя и на ЭВМ с параллельной архитектурой |
Пятое |
Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки |
Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками |
ЯП первого поколения представляли собой набор машинных команд в двоичном (бинарном) или восьмеричном формате, который определялся архитектурой конкретной ЭВМ. Каждый тип ЭВМ имел свой ЯП, программы на котором были пригодны только для данного типа ЭВМ. От программиста при этом требовалось хорошее знание не только машинного языка, но и архитектуры ЭВМ.
Второе поколение ЯП характеризуется созданием языков ассемблерного типа (ассемблеров, макроассемблеров), позволяющих вместо двоичных и других форматов машинных команд использовать их мнемонические символьные обозначения (имена). Являясь существенным шагом вперед, ассемблерные языки все еще оставались машинно-зависимыми, а программист все также должен был быть хорошо знаком с организацией и функционированием аппаратной среды конкретного типа ЭВМ. При этом ассемблерные программы все так же затруднительны для чтения, трудоемки при отладке и требуют больших усилий для переноса на другие типы ЭВМ. Однако и сейчас ассемблерные языки используются при необходимости разработки высокоэффективного программного обеспечения (минимального по объему и с максимальной производительностью).
Третье поколение ЯП начинается с появления в 1956 г. первого языка высокого уровня - Fortran, разработанного под руководством Дж. Бэкуса в фирме IBM. За короткое время Fortran становится основным ЯП при решении инженерно-технических и научных задач. Первоначально Fortran обладал весьма ограниченными средствами обеспечения работы с символьной информацией и с системой ввода-вывода. Однако постоянное развитие языка сделало его одним из самых распространенных ЯВУ на ЭВМ всех классов - от микро- до суперЭВМ, а его версии используются и для вычислительных средств нетрадиционной параллельной архитектуры. Вскоре после языка Fortran появились такие ныне широко известные языки, как Algol, Cobol, Basic, PL/1, Pascal, APL, ADA, C, Forth, Lisp, Modula и др. В настоящее время насчитывается свыше 2000 различных языков высокого уровня.
Языки четвертого поколения носят ярко выраженный непроцедурный характер, определяемый тем, что программы на таких языках описывают только Что, а не как надо сделать. В программах формируются скорее соотношения, а не последовательности шагов выполнения алгоритмов. Типичными примерами непроцедурных языков являются языки, используемые для задач искусственного интеллекта (например, Prolog, Langin). Так как непроцедурные языки имеют минимальное число синтаксических правил, они значительно более пригодны для применения непрофессионалами в области программирования.
Второй тенденцией развития ЯП четвертого поколения являются объектно-ориентированные языки, базирующиеся на понятии программного объекта, впервые использованного в языке Simula-67 и составившего впоследствии основу известного языка SmallTalk. Программный объект состоит из структур данных и алгоритмов, при этом каждый объект знает, как выполнять операции со своими собственными данными. На самом деле, различные объекты могут пользоваться совершенно разными алгоритмами при выполнении действий, определенных одним и тем же ключевым словом ("так называемое свойство полиморфизма). Например, объект с комплексными числами и массивами в качестве данных будет использовать различные алгоритмы для выполнения операции умножения. Такими свойствами обладают объектно-ориентированные Pascal, Basic, C++, SmallTalk, Simula, Actor и ряд других языков программирования.
Третьим направлением развития языков четвертого поколения можно считать языки запросов, позволяющих пользователю получать информацию из баз данных. Языки запросов имеют свой особый синтаксис, который должен соблюдаться, как и в традиционных ЯП третьего поколения, но при этом проще в использовании. Среди языков запросов фактическим стандартом стал язык SQL (Structured Query Language).
И, наконец, четвертым направлением развития являются языки параллельного программирования (модификация ЯВУ Fortran, языки Occam, SISAL, FP и др.), которые ориентированы на создание программного обеспечения для вычислительных средств параллельной архитектуры (многомашинные, мультипроцессорные среды и др.), в отличие от языков третьего поколения, ориентированных на традиционную однопроцессорную архитектуру. К интенсивно развивающемуся в настоящее время пятому поколению относятся языки искусственного интеллекта, экспертных систем, баз знаний (InterLisp, ExpertLisp, IQLisp, SAIL и др.), а также естественные языки, не требующие освоения какого-либо специального синтаксиса (в настоящее время успешно используются естественные ЯП с ограниченными возможностями - Clout, Q&A, HAL и др.).
Классификация ЯП
Изучение ЯП часто начинают с их классификации. Определяющие факторы классификации обычно жестко не фиксируются. Чтобы продемонстрировать характер типичной классификации, опишем наиболее часто применяемые факторы, дадим им условные названия и приведем примеры ЯП для каждой из классификационных групп.
Классификация ЯП
Фактор |
Характеристика |
Группы |
Примеры ЯП |
Уровень ЯП |
Степень близости ЯП к архитектуре ПК |
Низкий |
Автокод, ассемблер |
Высокий |
Fortran, Pascal, ADA, Basic, С и др. |
||
Сверхвысокий |
Сетл |
||
Специализация ЯП |
Потенциальная или реальная область применения |
Общего назначения (универсальные) |
Fortran (инженерные расчёты), Cobol (Коммерческие задачи), Refal, Lisp(символьная обработка), Modula, ADA(программирование в реальном времени) |
Специализированные |
|
||
Алгоритмичность (процедурность) |
Возможность абстрагироваться от деталей алгоритма решения задачи. Алгоритмичность тем выше, чем точнее приходится планировать порядок выполняемых действий |
Процедурные |
Ассемблер, Fortran, Basic, Pascal, ADA |
Непроцедурные |
Prolog, Langin |
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.
Любой алгоритм, как мы знаем, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.
По этому критерию можно выделить следующие уровни языков программирования:
машинные;
машинно-оpиентиpованные (ассемблеры);
машинно-независимые (языки высокого уровня).
Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных. Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.
Каждый компьютер имеет свой машинный язык, то есть свою совокупность машинных команд, которая отличается количеством адресов в команде, назначением информации, задаваемой в адресах, набором операций, которые может выполнить машина и др.
При программировании на машинном языке программист может держать под своим контролем каждую команду и каждую ячейку памяти, использовать все возможности имеющихся машинных операций.
Но процесс написания программы на машинном языке очень трудоемкий и утомительный. Программа получается громоздкой, труднообозримой, ее трудно отлаживать, изменять и развивать.
Поэтому в случае, когда нужно иметь эффективную программу, в максимальной степени учитывающую специфику конкретного компьютера, вместо машинных языков используют близкие к ним машинно-ориентированные языки (ассемблеры).
Язык ассемблера — это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде.
Язык ассемблера позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др.
Программы, написанные на языке ассемблера, требуют значительно меньшего объема памяти и времени выполнения. Знание программистом языка ассемблера и машинного кода дает ему понимание архитектуры машины. Несмотря на то, что большинство специалистов в области программного обеспечения разрабатывают программы на языках высокого уровня, таких, как Object Pascal или C, наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера.
Языки высокого уровня были разработаны для того, чтобы освободить программиста от учета технических особенностей конкретных компьютеров, их архитектуры. В противоположность этому, язык ассемблера разработан с целью учесть конкретную специфику процессора. Следовательно, для того, чтобы написать программу на языке ассемблера для конкретного компьютера, важно знать его архитектуру.
Перевод программы с языка ассемблера на машинный язык осуществляется специальной программой, которая называется ассемблером и является, по сути, простейшим транслятором.
Основные преимущества таковы:
алфавит алгоритмического языка значительно шире алфавита машинного языка, что существенно повы шает наглядность текста программы;
набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного пред ложения задать достаточно содержательный этап обра ботки данных;
требуемые операции задаются с помощью общепринятых математических обозначений;
данным в алгоритмических языках присваиваются индивидуальные имена, выбираемые программистом;
в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных.
Таким образом, алгоритмические языки в значительной мере являются машинно-независимыми. Они облегчают работу программиста и повышают надежность создаваемых программ.
Алгоритмический язык (как и любой другой язык) образуют три его составляющие:
алфавит, синтаксис и семантика.
Алфавит — это фиксированный для данного языка набор основных символов, т.е. "букв алфавита", из которых должен состоять любой текст на этом языке — никакие другие символы в тексте не допускаются.
Синтаксис — это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза. Точнее говоря, синтаксис языка представляет собой набор правил, устанавливающих, какие комбинации символов являются осмысленными предложениями на этом языке.
Семантика определяет смысловое значение предложений языка. Являясь системой правил истолкования отдельных языковых конструкций, семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.
Каждое понятие алгоритмического языка подразумевает некоторую синтаксическую единицу (конструкцию) и определяемые ею свойства программных объектов или процесса обработки данных.
Понятие языка определяется во взаимодействии синтаксических и семантических правил. Синтаксические правила показывают, как образуется данное понятие из других понятий и букв алфавита, а семантические правила определяют свойства данного понятия
Основными понятиями в алгоритмических языках обычно являются следующие.
1. Имена (идентификаторы) — употpебляются для обозначения объектов пpогpаммы (пеpеменных, массивов, функций и дp.).
2. Опеpации. Типы операций:
аpифметические опеpации + , — , * , / и дp. ;
логические опеpации и , или , не ;
опеpации отношения < , > , <= , >= , = , <> ;
опеpация сцепки (иначе, "присоединения", "конкатенации" ) символьных значений дpуг с другом с образованием одной длинной строки; изображается знаком "+".
3. Данные — величины, обpабатываемые пpогpаммой. Имеется тpи основных вида данных: константы, пеpеменные и массивы.
Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.
Примеры констант:
числовые 7.5 , 12 ;
логические да (истина), нет (ложь);
символьные (содержат ровно один символ) "А", "+";
литерные (содержат произвольное количество символов) "a0", "Мир", "" (пустая строка).
Переменные обозначаются именами и могут изменять свои значения в ходе выполнения программы. Переменные бывают целые, вещественные, логические, символьные и литерные.
Массивы — последовательности однотипных элементов, число которых фиксировано и которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами (одним, в случае одномерного массива, или несколькими, если массив многомерный). Иногда массивы называют таблицами.
4. Выражения - предназначаются для выполнения необходимых вычислений, состоят из констант, переменных, указателей функций (например, exp(x)), объединенных знаками операций.
Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, "многоэтажных" дробей и т.д.), что позволяет вводить их в компьютер, последовательно нажимая на соответствующие клавиши клавиатуры.
Различают выражения арифметические, логические и строковые.
Арифметические выражения служат для определения одного числового значения. Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=p/2 - единице.
Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения - "истина" или "ложь" (да или нет). Рассмотрим в качестве примера логическое выражение x*x + y*y < r*r , определяющее принадлежность точки с координатами (x, y) внутренней области круга радиусом r c центром в начале координат. При x=1, y=1, r=2 значение этого выражения - "истина", а при x=2, y=2, r=1 - "ложь".
Строковые (литерные) выражения, значениями которых являются текcты. В строковые выражения могут входить литерные и строковые константы, литерные и строковые переменные, литерные функции, разделенные знаками операции сцепки. Например, А + В означает присоединение строки В к концу строки А . Если А = "куст ", а В = "зеленый", то значение выражения А + В есть "куст зеленый".
5. Операторы (команды). Оператор — это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных. В состав операторов входят:
ключевые слова;
данные;
выражения и т.д.
Операторы подразделяются на исполняемые и неисполняемые. Неисполняемые операторы предназначены для описания данных и структуры программы, а исполняемые — для выполнения различных действий (например, оператор присваивания, операторы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и дp.).
При решении различных задач с помощью компьютера бывает необходимо вычислить логарифм или модуль числа, синус угла и т.д. Вычисления часто употребляемых функций осуществляются посредством подпрограмм, называемых стандартными функциями, которые заранее запрограммированы и встроены в транслятор языка.
Элементы языков программирования могут рассматриваться на следующих уровнях: алфавит - совокупность символов, отображаемых на устройствах печати и экранах и/или вводимых с клавиатуры терминала. Обычно это набор символов Latin-1, с исключением управляющих символов. Иногда в это множество включаются неотображаемые символы, с указанием правил их записи (комбинирование в лексемы);
лексика - совокупность правил образования цепочек символов (лексем), образующих идентификаторы (переменные и метки), операторы, операции и другие лексические компоненты языка. Сюда же включаются зарезервированные (запрещенные, ключевые) слова ЯП, предназначенные для обозначения операторов, встроенных функций и пр.
Иногда эквивалентные лексемы, в зависимости от ЯП, могут обозначаться как одним символом алфавита, так и несколькими. Например, операция присваивания значения в Си обозначается как "=", а в языке Pascal - ":=". Операторные скобки в Си задаются символами "{" и "}", а в Pascal - BEGIN и END. Граница между лексикой и алфавитом, таким образом, является весьма условной, тем более что компилятор обычно на фазе лексического анализа заменяет распознанные ключевые слова внутренним кодом (например, BEGIN - 512, END - 513) и в дальнейшем рассматривает их как отдельные символы;
cинтаксис - совокупность правил образования языковых конструкций, или предложений ЯП - блоков, процедур, составных операторов, условных операторов, операторов цикла и пр. Особенностью синтаксиса является принцип вложенности (рекурсивность) правил построения конструкций. Это значат, что элемент синтаксиса языка в своем определении прямо или косвенно в одной из его частей содержит сам себя. Например, в определении оператора цикла телом цикла является оператор, частным случаем которого является все тот же оператор цикла;
семантика - смысловое содержание конструкций, предложений языка, семантический анализ - это проверка смысловой правильности конструкции. Например, если мы в выражении используем переменную, то она должна быть определена ранее по тексту программы, а из этого определения может быть получен ее тип. Исходя из типа переменной, можно говорит о допустимости операции с данной переменной. Семантические ошибки возникают при недопустимом использовании операций, массивов, функций, операторов и пр.
Исходная программа, как правило, состоит из следующих частей (впервые эти требования были сформулированы в языке Cobol): раздел идентификации - область, содержащая наименование программы, а также дополнительную информацию для программистов и/или пользователей; раздел связи - фрагмент текста, описывающий внешние переменные, передаваемые вызывающей программой (если таковая имеется), т.е. ту часть исходных данных, которая обязательно поступает на вход программы при ее запуске. Эти переменные часто называют параметрами программы;
раздел оборудования (среда) - описание типа ЭВМ, процессора, требований к оперативной и внешней памяти, существенных с точки зрения выполнимости программы.
Дело в том, что даже среди семейства однотипных ЭВМ могут существовать отличия в наборе машинных инструкций (команд), средств программирования ввода-вывода, кодированного представления данных, в связи с чем описание среды, приводимое в данном разделе оказывается необходимым транслятору с языка с точки зрения оптимизации выполнения или вообще оценки возможности создания рабочей программы;
раздел данных - идентификация (декларация, объявление; описание) переменных, используемых в программе, и их типов. Понятие типа позволяет осуществлять проверку данных на совместимость в операциях еще на этапе трансляции программы и отвергнуть недопустимые преобразования; раздел процедур - собственно программная часть, содержащая описание процессов обработки данных. Элементами процедуры являются операторы и стандартные функции, входящие в состав соответствующего языка программирования.
Необходимо отметить, что конкретные ЯП могут не требовать наличия всех выше перечисленных разделов исходного модуля. В некоторых случаях описания переменных могут размещаться произвольно в тексте, или опускаются, при этом тип переменной определяется компилятором, исходя из системы умолчаний; есть средства программирования, в которых тип переменной задается в момент присвоения ей значения другой переменной или константы и т.д. Существуют фрагменты описания данных, которые могут быть отнесены как к разделу данных, так и к разделу оборудования (указания на устройство, длину и формат записи, организацию файла и т.п.).
Этапы создания программы, программирование
Программирование — это анализ проблемы, постановка задачи, проектирование алгоритмов и получение правильно работающего программного кода. Программирование состоит из следующих компонентов.
1. Написание программы.
Проектирование, или алгоритмирование — описание требо
ваний, составление алгоритмов, блок-схем.
Реализация, или кодирование — написание программы, коди
рующей алгоритмы на языке программирования.
2. Устранение ошибок.
Отладка— устранение синтаксических и других элементар
ных ошибок в программах на этапах трансляции и сборки.
Тестирование — проверка правильности работы программы на
заранее подготовленных тестах, для которых известен точный результат.
Кодирование, или написание программы на языке программирования, представляет собой управление двумя синтаксическими объектами.
1. В алгоритмах и программах обязательно содержатся переменные, ко
торые являются именами данных.
2. Действия над переменными кодируются операторами.
Переменные в языке Паскаль похожи на буквенные обозначения в ал
гебре. Они имеют имена, которые придумывают сами программисты.
Переменная — это именованная область в оперативной памяти компьютера. Эта область выделяется для хранения данных программы.
Значением переменной является содержание памяти компьютера, именованной этой переменной. Значение переменной может изменяться в ходе выполнения программы.
Имя переменной
Переменная как именованная область памяти имеет имя. Имя, или идентификатор, переменной подчиняется следующим трем правилам.
Обязательное правило. Все идентификаторы в головной программе
уникальны, т. е. имя переменной дается только одной переменной и не по
вторяется. Внутри модулей, оформленных как функции, находятся свои
уникальные переменные.
Рекомендуемое правило. Имя переменной (как и имя файла) отражает
ее значение.
Правило вкуса. Длина имени не превышает 8 символов (как и имени
файла в стандарте 8.3).
Трансляторы языка программирования обычно накладывают на имена переменных следующие четыре жестких ограничения:
в имени могут использоваться только латинские буквы, цифры и
знак подчеркивания;
знак пробела недопустим;
первым символом не может быть цифра;
имя не может совпадать с зарезервированными ключевыми словами
Паскаля, входящими в состав языка (такими, как var, begin, end и т. д.).
Тип переменной
Переменные бывают разного типа. Тип переменной определяет следующие ее характеристики:
количество байт, которое эта переменная будет занимать в памяти;
набор операций, который можно производить над этой переменной в программе.
Самые элементарные типы переменных называются стандартными. Стандартные типы переменных— это кирпичики программирования, из которых строятся более сложные структуры данных.
К стандартным типам переменных относятся:
логические значения;
целые типы;
вещественные типы;
множество литер, или символов, выводимые на экран или печать.
Целые числа
Число, записанное в листинге программы в явном виде, называется константой. Перед константой можно записывать положительный или отрицательный знак числа. пробелы в константах не допускаются.
Целые числа, или целые константы, записываются в Паскале так же, как и в математике.
Примеры положительных целых констант: 12345, 001, +128, +5.
Примеры отрицательных целых констант: -777, -03.
Целые переменные
Первое, что делает программист при написании программы, это задает переменные. Опишем, как их задавать.
Целочислительный тип обозначает конечное множество целых чисел, действующих на данной вычислительной машине. Целочислительный тип называется типом integer. Слово «integer» в переводе с английского означает «целое число».
Три переменные типа integer можно объявить в разделе описания переменных следующим образом. По традиции целым переменным могут отводиться имена, начинающиеся с латинских букв i—n.
Примеры объявления целых переменных
{
Целые
переменные i,
j
и n можно объявить так} var
i,j,n
: integer;
{ Целые переменные i, j и n можно объявить и так} var i : integer; j : integer; n : integer;
Вещественные числа
Вещественные числа, или вещественные константы, записываются в Паскале по-разному, но всегда дробная часть отделяется от целой точкой. Нуль перед или после точки можно опустить.
«Маленькие» константы с фиксированной точкой записываются так же, как и в английской математике.
Примеры констант с фиксированной точкой:
123.45, 0.01,+128.,-.5.
«Большие» константы с плавающей точкой записываются с использованием английской буквы e. Буква e означает степень десяти. Знак плюс или минус может находиться как непосредственно перед числом, так и перед показателем степени десяти.
Примеры констант с плавающей точкой:
1.23e45 = 1,23×1045; +0.01e-011 =0,01 × 10–11; -128.e+32 =-128,0 × 1032.
9.5e-34 = 9,5×10–34.
Вещественные переменные
Вещественный тип называется типом real. Вещественный тип определяет в машине вещественные числа.
Слово «real» в переводе с английского означает «вещественное число».
Три переменные типа real можно объявить в разделе описания переменных следующим образом. По традиции вещественным переменным могут отводиться имена, начинающиеся с латинских букв a—h и o—z.
Примеры объявления вещественных переменных
{ Вещественные переменные a, t и x объявляются так} var a,t,x : real;
{ Вещественные переменные объявляются и так} var a : real; t : real; х : real;
Массив
Структурой называется составной тип данных, составленный из стандартных типов данных.
Самой распространенной структурой, реализованной во всех языках программирования, является массив. Массив состоит из элементов, или компонент, которые все имеют один и тот же стандартный тип integer или real. Номер элемента массива называется индексом.
Программа при выполнении может сразу получить нужный ей элемент массива сразу по номеру, что является прямым доступом к памяти.
Объявление массива
Массив в листинге объявляется так же, как и переменная, только перед типом добавляется конструкция array [0..n] of, где 0 и n — соответственно первый и последний индексы массива, разделенные двумя точками.
Английское слово «array» означает «ряд».
Для работы с массивом нужен цикл.
По два массива типа integer и типа real можно объявить в разделе описания переменных следующим образом. По традиции имена массивов могут начинаться с тех же букв, что и имена переменных: целых — с латинских букв i—n, вещественных — с латинских букв a—h и o—z. Примеры объявления целых и вещественных массивов длиной 10
{Массивы с индексами от 0 до 9 объявляются так} var k,l : array [0..9] of integer; var v,w : array [0..9] of real;
{Массивы с индексами от 0 до 9 объявляются и так} var k,l : array [0..9] of integer; v,w : array [0..9] of real;
{Массивы с индексами от 0 до 9 объявляются и так} var k : array [0..9] of integer; 1 : array [0..9] of integer; v : array [0..9] of real; w : array [0..9] of real;
Классы языков программирования
-
Программирование
Императивное
Декларативное
функциональное
логическое
Императивные языки программирования – Бейсик, Паскаль, Си и прочие (включая объектно-ориентированные).
Императивное программирование наиболее популярное. Характеризуются последовательным, пошаговым изменением состояния вычислителя. При этом управление изменениями полностью определено и полностью контролируемо.
Одна из характерных черт императивного программирования – наличие переменных с операцией "разрушающего присвоения". То есть, была переменная А, было у нее значение Х. Алгоритм предписывает на очередном шаге присвоить переменной А значение Y. То значение, которое было у А, будет "навсегда забыто".
Если задача описывается последовательным исполнением операций ("открыть кран, набрать воды"), то такие задачи идеальные кандидаты на императивную реализацию.
Декларативные языки программирования:
Функциональные языки программирования – LISP, ISWIM (If you See What I Mean), ML (Meta Language), Miranda
В языках функционального программирования основными конструктивными элементами являются функции. Тексты программ на функциональных языках программирования описывают «как решить задачу», но не предписывают последовательность действий для решения.
Способ решения задачи описывается при помощи зависимости функций друг от друга (в том числе возможны рекурсивные зависимости) без указания последовательности шагов.
Функциональное программирование, как и другие модели "неимперативного" программирования, обычно применяется для решения задач, которые трудно сформулировать в терминах последовательных операций. Практически все задачи, связанные с искусственным интеллектом, попадают в эту категорию. Среди них следует отметить задачи распознавания образов, общение с пользователем на естественном языке, реализацию экспертных систем, автоматизированное доказательство теорем, символьные вычисления. Эти задачи далеки от традиционного прикладного программирования, поэтому им уделяется не так много внимания в учебных программах по информатике.
Логические языки программирования – Prolog.
Если в функциональном программировании программы - это выражения, и их исполнение заключается в вычислении их значения, то в логическом программировании программа представляет из себя некоторую теорию (описанную на достаточно ограниченном языке), и утверждение, которое нужно доказать. В доказательстве этого утверждения и будет заключаться исполнение программы.
Логическое программирование и язык Пролог появились в результате исследования группы французских ученых под руководством Колмерье в области анализа естественных языков. В последствии было обнаружено, что логическое программирование столь же эффективно в реализации других задач искусственного интеллекта, для чего оно в настоящий момент, главным образом, и используется. Но логическое программирование оказывается удобным и для реализации других сложных задач; например, диспетчерская система лондонского аэропорта Хитроу в настоящий момент переписывается на Прологе. Оказывается, логическое программирование является достаточно выразительным средством для описания сложных систем.
Программирование |
|
Процедурное |
Объектно-ориентированное |
Процедурные языки программирования – используют процедуры (подпрограммы, методы или функции). Процедуры содержат последовательность шагов для выполнения. В ходе выполнения программы любая процедура может быть вызвана из любой точки.
Ада, Бейсик, Си, C++, С# (из Microsoft) КОБОЛ, Паскаль, Delphi, Фортран, Java, Перл, Visual Basic, PHP
Объектно-ориентированные подход к программированию - это подход к разработке программного обеспечения, основанный на объектах, а не на процедурах.
Java, Си, Visual Basic
При процедурном программировании программа разбивается на части в соответствии с алгоритмом: каждая часть (подпрограмма, функция, процедура) является составной частью алгоритма. При объектно-ориентированном программировании программа строится как совокупность взаимодействующих объектов.
Объект – это базовое понятие ООП. Любой объект принадлежит одному или нескольким классам, которые в свою очередь определяют, описывают поведение объекта.
Примеры классов: "Гном", "Хоббит", "Маг". Примеры объектов: "хоббит по имени Фродо Бэггинс", "маг по имени Гэндальф".
Каждый объект характеризуется свойствами, методами и событиями.
Свойства – описание объекта. Примеры атрибутов: "имя", "рост". Набор конкретных значений определяет текущее состояние объекта.
Метод – это действие объекта, изменяющее его состояние или реализующее другое его поведение. Пример методов: "назвать свое имя", "стать невидимым".
Объект, класс, метод, свойства, события – это базовые понятия ООП.
Рассмотрим ситуацию из обыденной жизни. Например, Вам надо сообщить поздравить своего родственника, живущего в другом городе с днем рождения. Для это Вы идете на почту и посылаете телеграмму. Вы сообщаете оператору, что хотите переслать данный текст по некоторому адресу. И Вы можете быть уверены, что ваше поздравление попадет по нужному адресу.
Итак, для решения своей проблемы Вы нашли объект (почту) и передали ему сообщение, содержащее запрос. Обязанностью почты (или работников почты) будет удовлетворить Ваш запрос любым известным только им способом. Вас совершенно не интересует каким именно. Имеется некий метод - т.е. алгоритм, или последовательность операций, которые используют почтовые работники для выполнения запроса. Вам не надо знать какой конкретно метод используется.
Итак, действие в ООП инициируется посредством передачи сообщений объекту, ответственному за действия. Сообщение содержит запрос на осуществление действия и сопровождается дополнительной информацией (аргументами), необходимой для его выполнения.
К концепции ООП относится:
Полиморфизм – это взаимозаменяемость объектов с одинаковым интерфейсом. Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество методов». В зависимости от типа объекта одно и то же сообщение может соответствовать различным действиям – методам для достижения требуемого результата.
Пример полиморфизма: в ответ на призыв "К оружию! Защищайся!" гном схватит боевой топор, эльф приготовит лук и стрелы, а хоббит спрячется за дерево (у него нет метода, для выполнения требуемых действий). Объекты реагируют на одно и тоже сообщение строго специфичным для них образом.
Пример с почтой: Вы можете попросить своего товарища, летящего в город, где живут ваши родственники, поздравить их, и метод, который он изберет для решения этого запроса будет отличаться от того, который использовали на почте. Хотя родственники будут поздравлены. Если же Вы попросите коменданта общежития поздравить Ваших родственников, то у нее вероятно вообще не найдется метода для решения этой задачи, а если она и примет сообщение, то выдаст диагностическое сообщение об ошибке.
Наследование - возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Пример наследования: на основании класса "Личность" создаются его подклассы "Хоббит", "Маг", "Эльф" и "Человек", каждый из которых обладает свойствами и поведением "Личности", но добавляет собственные свойства и меняет поведение.
Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейс (от английского interface — внешнее лицо, т. е. список декларируемых свойств и методов) класса и не вникать в его внутреннюю реализацию. Этот принцип (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов. Свойство объекта скрывать некоторые свои свойства и методы. Смысл инкапсуляции состоит в том, что внешний пользователь не знает детали реализации объекта, работая с ним путём предоставленного объектом интерфейса.
Программирование |
|
Неструктурное |
Структурное |
Неструктурное программирование допускает использование в явном виде команды безусловного перехода (в большинстве языков GOTO). Типичные представители неструктурных языков - ранние версии Бейсика и Фортрана.
Однако в языках высокого уровня наличие команды перехода влечет за собой массу серьезных недостатков: программа превращается в "спагетти" с бесконечными переходами вверх-вниз, ее очень трудно сопровождать и модифицировать. Фактически неструктурный стиль программирования не позволяет разрабатывать большие проекты. Ранее широко практиковавшееся первоначальное обучение программированию на базе неструктурного языка (обычно Бейсика) приводило к огромным трудностям при переходе на более современные стили. Как отмечал известный голландский ученый Э. Дейкстра, "программисты, изначально ориентированные на Бейсик, умственно оболванены без надежды на исцеление".
Структурное программирование
задача разбивается на большое число мелких подзадач, каждая из которых решается своей процедурой или функцией (декомпозиция задачи). При этом проектирование программы идет по принципу сверху вниз: сначала определяются необходимые для решения программы модули, их входы и выходы, а затем уже эти модули разрабатываются. Такой подход вместе с локальными именами переменных позволяет разрабатывать проект силами большого числа программистов.
как доказал Э. Дейкстра, любой алгоритм можно реализовать, используя лишь три управляющие конструкции:
последовательное выполнение,
ветвление
цикл
не должно быть безусловных переходов!!!!!!!!!
Программирование:
• Алгоритмическое или процедурное
• Структурное
• Объектно-ориентированное
а) Алгоритмическое программирование
Основная идея алгоритмического программирования – разбиение программы на последовательность модулей, каждый из которых выполняет одно или несколько действий. При этом выполнение модуля всегда начинается с первой команды и заканчивается самой последней, чтобы нельзя было попасть на команды модуля извне и передать управление из модуля на другие команды минуя заключительную. Алгоритм на выбранном языке записывается с помощью команд описания данных, вычисления значений и управления последовательностью выполнения программы. Текст программы представляет собой линейную последовательность операторов. Используется для решения не сложных задач, когда программа состоит из нескольких сот строк кода.
b ) Структурное программирование
При создании средних по размеру приложений (несколько тысяч строк исходного кода) используется структурное программирование. Его идея заключается в том, что структура программы должна содержать структуру решаемой задачи, чтобы алгоритм решения был явно виден из исходного текста. В качестве средства создания программы используется подпрограмма – набор операторов, выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество мелких подпрограмм (занимающих до 50 операторов – критический порог для быстрого понимания цели программы), каждая из которых выполняет одно из действий, предусмотренных исходным заданием. Комбинируя эти программы, удается формировать итоговый алгоритм уже не из простых операторов, а из законченных блоков кода, имеющих определенную смысловую нагрузку, причем обращаться к таким блокам можно по названиям. Получается, что подпрограммы – это новые операторы или операции языка, определяемые программистом. Подпрограммы бывают двух видов процедуры и функции. Процедура просто выполняет группу операторов. Функция - выполняет группу операторов, вычисляет некоторое значение и передает его обратно в главную программу. При этом значение имеет определенный тип.
Возможность использования подпрограмм относит язык программирования к классу процедурных языков.
Наличие подпрограмм позволяет вести проектирование и разработку приложения сверху вниз – такой подход называется нисходящим проектированием . При этом задача разбивается на большое число мелких подзадач, каждая из которых решается своей процедурой или функцией (декомпозиция задачи). При этом проектирование программы идет по принципу сверху вниз: сначала определяются необходимые для решения про граммы модули, их входы и выходы, а затем уже эти модули разрабатываются. Такой под ход вместе с локальными именами переменных позволяет разрабатывать проект силами большого числа программистов.
Подпрограммы могут быть вложенными, если она вызывается не только из главной программы, но и из любых подпрограмм. Допускается вызов подпрограммы из самой себя – такой прием называется рекурсией.
Структура подпрограммы: заголовок с параметрами, тело подпрограммы (операторы, которые будут выполняться при ее вызове), завершение подпрограммы.
Параметры, которые указываются в заголовке программы, могут быть
• формальными , которые нужны только для описания тела программы;
• фактическими - конкретные значения, которые указываются в момент вызова подпрограммы.
Как доказал Э. Дейкстра, любой алгоритм можно реализовать, используя лишь три управляющие конструкции:
• последовательное выполнение,
• ветвление
• цикл
Не должно быть безусловных переходов!
Правила композиции, используемые при структурном подходе к составлению алгоритмов:
а) альтернативный выбор
б) цикл
с) подпрограмма
с) Объектно-ориентированный подход к программированию - это подход к разра ботке программного обеспечения, основанный на объектах.
Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта. Объект – совокупность свойств (структур данных, характерных для этого объекта), методов их обработки (подпрограмм изменения свойств) и событий, на которые данный объект может реагировать и, которые приводят, как правило, к изменению свойств объекта.
Класс – новый тип, совокупность объектов имеющих идентичную структуру, отличающихся только значениями. Каждый конкретный объект называют экземпляром класса . Описание нового класса похоже на описание новой структуры данных, только к полям (свойствам) добавляются методы – подпрограммы.
Важнейшая характеристика класса – возможность создания на его основе новых классов с наследованием всех свойств и методов добавления собственных. Класс, не имеющий предшественника, называют базовым. Например, класс «животные» имеет свойства «название», «размер», методы «идти», «размножаться». Созданный на его основе класс «кошка» наследует все его свойства и методы, к которым дополнительно добавляется свойство «окраска» и метод «пить».
Свойство объектов переопределять методы наследуемого класса называется полиморфизмом . Например, в большинстве случаев методы базового класса у классов-наследников приходится переопределять – объект класса «кошка» выполняет метод «идти» совсем не так как «амеба». Все переопределяемые методы по названию (написанию) будут совпадать с методами базового объекта. Компилятор по типу объекта (его классу) распознает, какой конкретный метод надо использовать. И не вызовет для класса «амеба» метод «идти» класса «кошка».
Этапы разработки программ.
• Постановка задачи:
сбор информации о задаче;
фоpмулиpовка условия задачи;
определение конечных целей решения задачи;
определение формы выдачи результатов;
описание данных (их типов, диапазонов величин, структуры и т.п. ).
• Анализ и исследование задачи, модели:
• анализ существующих аналогов;
• анализ технических и программных средств;
• pазpаботка математической модели;
• разработка структур данных.
• Разработка алгоритма:
• выбор метода проектирования алгоритма;
• выбор формы записи алгоритма (блок-схемы, псевдокод и др.);
• выбор тестов и метода тестирования;
• проектирование алгоритма.
• Пpогpаммиpование:
• выбор языка программирования;
• уточнение способов организации данных;
• запись алгоритма на выбранном языке пpогpаммиpования.
• Тестирование и отладка:
• синтаксическая отладка;
• отладка семантики и логической стpуктуpы;
• тестовые расчеты и анализ результатов тестирования;
• совершенствование пpогpаммы.
• Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2 — 5.
• Сопровождение программы:
• доработка программы для решения конкретных задач;
• составление документации к решенной задаче, к математической модели, к алгоритму, к пpогpамме, к набору тестов, к использованию.
Языки программирования высокого уровня
Языки программирования высокого уровня |
|||
Неструктурные (BASIC, Fortran) |
Структурные (Pascal, Algol) |
Логические (Prolog, Simula) |
Функциональные (Lisp, ЛОГО) |
Объектно-ориентированные (Smalltalk, C++, Object Pascal, Delphi, Java) |
Языки программирования баз данных (SQL, Oracle) |
Языки программирования для Интернет (HTML, Perl, Vrml) |
Lazarus - это среда визуального программирования. Здесь программист получает возможность не просто создавать программный код, но и наглядно (визуально) показывать системе, что бы он хотел увидеть.
Работа с файлами в среде Lazarus осуществляется при помощи пункта меню Файл. Команды этого пункта меню можно разбить на группы:
создание новых файлов – Создать модуль, Создать форму, Создать...;
загрузка ранее созданных файлов – Открыть, Открыть недавнее, Вернуть;
сохранение файлов – Сохранить, Сохранить как…, Сохранить все;
закрытие файлов – Закрыть, Закрыть все файлы редактора;
вывод на печать – Печать…;
перезагрузка среды – Перезапуск;
выход из среды – Выход.
Команды, предназначенные для редактирования текста программного кода, собраны в меню Правка.
Инспектор объектов — окно, с помощью которого можно описать внешний вид и поведение выделенного объекта (подробно см. п. 1.4.8);
Редактор исходного кода — окно, в котором можно создавать и редактировать текст программы (подробно см. п. Ошибка: источник перекрестной ссылки не найден);
Обозреватель кода — содержит общую информацию о проекте;
Редактор LazDoc — редактор шаблонов;
Браузер кода — окно проводника проекта.
Следующая группа команд пункта меню Просмотр тоже открывает диалоговые окна. Эти окна носят информационный характер. Так команды Модуль... и Форма... выводя список модулей и форм данного проекта. Назначение команд Показать зависимости модулей и Показать сведения о модуле говорят сами за себя. Последняя команда этой группы Переключить модуль/форму активизирует либо окно редактора, либо форму.
В последней группе команд следует отметить команды Показать палитру компонентов и Показать кнопки быстрого доступа. Устанавливая метки рядом с этими командами, пользователь выводит на экран или наоборот убирает панели инструментов. Командой Окна отладки пользуются во время отладки программного кода. Здесь можно вызывать Окно наблюдений, Окно отладчика, просматривать точки останова и значения переменных в процессе выполнения программы.
Команды пункта меню Проект предназначены для выполнения различных операций с проектом:
команды создания проекта — Создать проект и Создать проект из файла;
команды вызова ранее созданного проекта — Открыть проект, Открыть недавний проект, Закрыть проект;
команды сохранения проекта — Сохранить проект, Сохранить проект как..., Опубликовать проект;
команды управления проектом — Инспектор проекта, Настройка проекта..., Параметры компилятора и т.д.
Команды, позволяющие запускать проект на выполнение и выполнять его отладку, содержатся в пункте главного меню Запуск: Собрать — сборка программы из откомпилированных файлов;
Собрать все — скомпоновать все файлы проекта;
Быстрая компиляция — компиляция файлов программы;
Запуск — запуск проекта с помощью отладчика (компиляция, компоновка и выполнение);
Пауза — приостановка выполнения программы до нажатия любой клавиши;
Шаг с входом — режим пошагового отладочного выполнения программы с входом в вызываемые процедуры и функции;
Шаг в обход — режим пошагового отладочного выполнения программы без входа в вызываемые процедуры и функции;
Запуск до курсора - отладка и выполнение программы в этом режиме осуществляются до оператора, стоящего в строке помеченной курсором;
Останов — прерывание выполнения программы;
Сброс отладчика - сброс всех ранее задействованных отладочных средств и прекращение выполнения программы;
Настройка сборки+запуска... - настройка параметров компоновки и запуска;
Вычислить\Изменить - возможность просмотреть значение переменной и/или найти значение выражения в процессе выполнения программы, при необходимости можно изменить значения любой переменной;
Добавить наблюдения — в открывающемся окне можно указать переменные и/или выражения, за изменением значений которых следует понаблюдать при отладке программы;
Добавить точку останова - установка в текущей строке контрольной точки; после запуска программного кода отладчик прекратит его выполнение перед оператором, помеченным точкой останова; в программе можно указать произвольное количество таких точек. Точку останова также можно добавить щелчком мыши по номеру строки программного кода.
Работа с окнами в Lazarus выполняется при помощи пункта меню Окна. Названия команд этого пункта совпадают с названиями окон, и выбор любой команды приведет к активации соответствующего окна.
Пункт меню Справка это справочная информация о системе. Здесь можно вызывать средства справочной системы и выполнять ее настройку.
Окно формы
Окно формы - это проект интерфейса будущего программного продукта.
Вначале это окно содержит только стандартные элементы – строку заголовка и кнопки развертывания, свертывания и закрытия. Рабочая область окна заполнена точками координатной сетки.
Задача программиста – используя панель компонентов, заполнить форму различными интерфейсными элементами, создавая тем самым внешний вид своей программы.
Команды настройки окна формы находятся на вкладке Редактор форм в меню Окружение — Настройки окружения.
Окно редактора Lazarus
Окно редактора (рис. 1.15) тесно связано с окном формы (рис. 1.18) и появляется вместе с ним при создании нового проекта.
Окно редактора по умолчанию находится на первом плане и закрывает окно формы. Переключаться между этими окнами можно командой Просмотр - Переключить модуль/форму, клавишей F12 или просто щелчком мыши.
Окно редактора предназначено для создания и редактирования текста программы, который создается по определенным правилам и описывает некий алгоритм. Если окно формы определяет внешний вид будущей программы, то программный код, записанный в окне редактора, отвечает за ее поведение.
Рассмотрим программный код построчно.
Строка 1. Заголовок подпрограммы. Он состоит из ключевого слова procedure и имени подпрограммы TForm1.Button1Click, а в скобках обычно указывают список параметров подпрограммы, если таковые имеются.
Строка 2. Открывает блок описания переменных (var – от variable переменная);
Строка 3. Описывает переменные pud и funt. Компьютер понимает эту запись как команду выделить в памяти место для хранения двух целых чисел21.
Строка 4. Описывает одной вещественной переменной kg.
Строка 5. Начинает программный блок (begin – начало).
Строка 6. Команда, выполняющая следующие действия. Из свойства Text поля ввода Edit1 считывает введенную туда информацию. Эта информация воспринимается компилятором как строка текста (например, '360' – это строка из трех символов), а поскольку нам для вычислений нужны числовые значения, то функция StrToInt преобразовывает ее в целое число. Результат этих преобразований записывается в память компьютера под именем pud. Символы «:=» обозначают оператор присваивания. Например, запись a:=3.14 читается так: переменной a присвоить значение 3.14. Выражение 3.14:=a не имеет смысла.
Строка 7. Информация из поля ввода Edit2 преобразовывается в целое число и записывается в переменную funt. Фактически команды, записанные в шестой и седьмой строках, осуществляют ввод исходных данных.
Строка 8. Вычисляется значение выражения, результат которого присваивается переменной kg. Обратите внимание, что умножение здесь обозначается звездочкой, деление – наклонной чертой, сложение – знаком «+». Записывая математическое выражение на языке программирования, нужно четко указывать все операции. Нельзя, например, опустить знак умножения, как это принято в математике.
Строка 9. Изменяет свойство Caption объекта Label4. В него будет помещен текст, состоящий из двух строк. Первая – 'В килограммах:', вторая значение переменной kg. Знак «+» в этом выражении применяют для конкатенации (слияния) строк. Кроме того, поскольку значение переменной kg – вещественное число, оно преобразовывается в строку функцией FloatToStr. Фактически в этой строке был выполнен вывод результатов.
Строка 10. Конец программного блока (end – конец).
Теперь наша программа может быть откомпилирована и запущена на выполнение. Процесс компиляции представляет собой перевод программы с языка программирования в машинные коды. Для компиляции нужно выполнить команду Запуск - Быстрая компиляция. Во время компиляции проверяется наличие синтаксических ошибок. В случае их обнаружения процесс компиляции прерывается. Мы специально допустили ошибку в восьмой строке программного кода (пропустили двоеточие в операторе присваивания). Результат компиляции программы с синтаксической ошибкой показан на рис. 1.49. Строка с ошибкой выделена красным цветом, а под окном редактора появилось окно Сообщение22, в котором описана допущенная ошибка. Ошибку нужно исправить, а программу еще раз откомпилировать.
После успешной компиляции всех файлов, входящих в проект, необходимо собрать (скомпоновать) проект из объектных (откомпилированных) файлов (с расширением .о — для Linux, .obj - для Windows). Для этого следует выполнить команду Запуск - Собрать или воспользоваться комбинацией клавиш Ctrl+F9.
В результате компоновки будет сгенерирован выполнимый файл, имя которого совпадает с
Вообще говоря, если команду Запуск — Быстрая компиляция опустить, а сразу выполнить команду Запуск — Собрать, то произойдет и компиляция всех файлов проекта и его компоновка.
После успешной компиляции и сборки программу нужно сохранить (Проект - Сохранить) и запустить.
именем проекта.
Обратите внимание, что ошибки могут возникать и после запуска программы. Например, в нашем примере исходные данные – целые числа. Если ввести дробь, появится аварийное сообщение. В подобной ситуации следует прервать выполнение программы командой Запуск—Останов (Ctrl+F2).
Операторы ввода - вывода данных
Ввод информации с клавиатуры осуществляется с помощью оператора read. Он может иметь один из следующих форматов:
read (x1, x2, …, xn); readln (x1, x2, …, xn); где x1, x2, …, xn – список вводимых переменных. При вводе вещественных значений целую и дробную часть числа следует разделять точкой.
Программа на языке Free Pascal может содержать следующие символы:
•латинские буквы A, B, C…, x, y, z;
•цифры 0, 1, 2…, 9;
•специальные символы + ,–, /, =, <, >, [, ], ., (, ), ;, :, {, }, $, #, _, @, ‘, ^.
Данные в языке Free Pascal
Для решения задачи в любой программе выполняется обработка каких-либо данных. Они хранятся в памяти компьютера и могут быть самых различных типов: целыми и вещественными числами, символами, строками, массивами. Типы данных определяют способ хранения чисел или символов в памяти компьютера. Они задают размер ячейки, в которую будет записано то или иное значение, определяя тем самым его максимальную величину или точность задания. Область памяти (ячейка), в которой хранится значение определенного типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменной в языке Free Pascal осуществляется с помощью служебного слова var:
var имя_переменной: тип_переменной;
Если объявляется несколько переменных одного типа, то описание выглядит следующим образом: var переменная_1,…,переменная_N: тип_переменных;
Например:
var
//Объявлена целочисленная переменная.
ha: integer;
//Объявлены две вещественные переменные.
hb, c: real;
Константа – это величина, которая не изменяет своего значения в процессе выполнения программы. Тип константы определяется ее значением. Описание константы имеет вид:
const имя_константы = значение;
Символьный тип данных
Данные символьного типа в памяти компьютера всегда занимают один байт. Это связано с тем, что обычно под величину символьного типа отводят столько памяти, сколько необходимо для хранения одного символа.
Описывают символьный тип с помощью служебного слова char.
Например:
var c: char;
В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: 'а', 'b', '+'.
Целочисленный тип данных
Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или восемь байт.
-
Byte
Word
LongWord
ShortInt
Integer
LongInt
Smallint
Int64
Cardinal
0 .. 255
0 .. 65535
0 .. 4294967295
-128 .. 127
-2147483648 .. 2147483647
-2147483648 .. 2147483647
-32768 .. 32767
–263 .. 263
0 .. 4294967295
1 байт
2 байта
4 байта
1 байт
4 байта
4 байта
2 байта
8 байт
4 байта
Вещественный тип данных
Внутреннее представление вещественного числа в памяти компьютера отличается от представления целого числа. Оно представлено в экспоненциальной форме mE ± p, где m – мантисса (целое или дробное число с десятичной точкой), p – порядок (целое число). Чтобы перейти от экспоненциальной формы к обычному представлению числа, необходимо мантиссу умножить на десять в степени порядок. Например:
–36.142Е + 2 = –36.142∙102 = –3614.2;
7.25E – 5 = 7.25∙10–5 = 0.0000725.
Вещественное число в Pascal может занимать от четырех до десяти байтов.
Вещественные типы данных
Тип |
Диапазон |
Количество значащих цифр |
Размер |
Single |
1.5Е-45 .. 3.4E+38 |
7 — 8 |
4 байта |
Real |
2.9E-39 .. 1.7E+38 |
15 — 16 |
8 байтов |
Double |
5.0Е-324 .. 1.7E+308 3.4Е- |
15 — 16 |
8 байтов |
Extended |
4932 .. 3.4E+4932 |
19 — 20 |
10 байтов |
Comp |
-263 .. 263 |
19 — 20 |
8 байтов |
Currency |
-922337203685477.5808 .. 922337203685477.5807 |
19 — 20 |
8 байтов |
Тип дата-время
Тип данных дата-время TDateTime предназначен для одновременного хранения даты и времени. В памяти компьютера он занимает восемь байтов и фактически представляет собой вещественное число, где в целой части хранится дата, а в дробной – время.
Логический тип данных
Данные логического типа могут принимать только два значения: истина (true) или ложь (false). В стандартном языке Pascal был определен лишь один логический тип данных – boolean.