Особенности графического интерфейса.
Вся работа с программами, файлами и документами происходит в окнах – определенных очерченных рамкой частях экрана.
Все программы, файлы, документы, устройства и другие объекты представляются в виде значков-пиктограмм и при активизации объекта (запуске программы) превращаются в окна.
Все действия с объектами осуществляются с помощью меню (перечня команд).
Основным устройством взаимодействия пользователя с GUI является манипулятор мышь или трекбол, при помощи которых, указатель (курсор) перемещается на нужный графический объект и таким образом осуществляется его выбор.
Объектно-ориентированный подход
Windows является объектно-ориентированной ОС и обеспечивает пользователю условия для документно-ориентированной работы.
Основным понятием является объект – то, с чем может работать система. Например, программа, устройство, документ…
Объект заключает в себе (инкапсулирует) описывающие его свойства и средства изменения этих свойств (методы).
Объекты: все элементы ОС, интерфейса и т.д.
свойства: данные, описывающие объект
методы: возможные операции над объектом, средства обработки данных
Например,
Объект: файл
свойства: имя, размер, местоположение, время создания и т.д.
методы: создать, сохранить, копировать, удалить, переместить и др.
Объекты, имеющие одинаковый перечень свойств и методов, объединяются в классы. Каждый отдельный объект является экземпляром класса. Различные экземпляры класса отличаются различными значениями свойств.
Так, все файлы обладают в ОС одним и тем же набором свойств и образуют класс ФАЙЛЫ.
Каждый отдельный файл является экземпляром этого класса.
Все объекты представлены значками (пиктограммами). Разновидностью пиктограммы является ярлык, он не представляет объект, а лишь указывает на него. Объект может иметь несколько ярлыков.
Для удобства пользователя объекты могут объединяться в папки.
Хотя каждый объект имеет свой набор свойств и допустимых операций, технология работы с объектами универсальна. Ознакомиться со свойствами объектов и выполнить над ними действия возможно с помощью контекстного меню. Оно открывается при щелчке правой кнопкой мыши на объекте.
Каждый объект характеризуется событиями – действиями, которые распознает объект. Например, нажатие кнопки, щелчок мыши, двойной щелчок, воздействие другого объекта.
Объект определенным образом реагирует на то или иное событие. Так, щелчок правой кнопкой мыши по объекту вызывает контекстное меню, подведение курсора к границе окна меняет вид курсора и т.д.
Окна
Окна являются важнейшим элементом графического интерфейса.
Типы окон:
· Окно приложения. В этом окне выполняется запущенное приложение или отражается содержимое папки. Открытие или закрытие окна приложения равносильно запуску или завершению приложения.
· Окно документа. Открываются внутри окна приложения для отображения отдельного документа.
· Диалоговые окна. Содержат только элементы управления.
Элементы окон.
Общие элементы:
· Строка заголовка;
· Рамка окна;
· Кнопки управления размером;
· Элементы окон приложения:
· Рабочая область;
· Строка меню;
· Панели инструментов;
· Полосы прокрутки;
Элементы управления в диалоговых окнах:
· Командные кнопки;
· Вкладка;
· Текстовое поле;
· Поле со списком;
· Список;
· Переключатели (один вариант);
· Флажки (несколько вариантов);
· Палитра (графическая разновидность списка);
· Счетчик;
· Позиционируемый движок;
· Область предварительного просмотра;
·
|
![Особенности графического интерфейса. Особенности графического интерфейса. - student2.ru](/images/programmirovanie/osobennosti-graficheskogo-interfeysa-1346682-4.gif)
Таким образом, существует несколько классов окон. Каждое окно содержит объекты других классов (меню, кнопки, списки и др.).
Применение объектно-ориентированного подхода позволяет придерживаться единого пользовательского интерфейса в различных приложениях Windows.
Вопрос№14. Компьютерные вирусы и другие вредоносные программы
Компьютерные вирусы и антивирусные средства
Выделяют два типа программ, выполняющих какие-либо деструктивные действия и причиняющих ущерб пользователям: троянцы (троянские кони) и вирусы.
Троянцы –программы, которые при запуске выполняют скрытые (отсюда и название) деструктивные функции (например, форматирование диска, кодирование информации на диске, удаление файлов и другие несанкционированные операции). Обычно, подобные программы маскируются под известные или привлекательные программы, побуждая пользователя их запустить. Самостоятельно распространяться не могут. Такие программы не подлежат лечению, их нужно удалять.
Более строгое определение
Первые исследования саморазмножающихся искусственных конструкций проводились в середине нынешнего столетия. В работах фон Неймана, Винера и других авторов дано определение и проведен математический анализ конечных автоматов, в том числе и самовоспроизводящихся. Термин "компьютерный вирус" появился позднее – официально считается, что его впервые употребил сотрудник Лехайского университета (США) Ф.Коэн в 1984 г. на 7-й конференции по безопасности информации, проходившей в США. С тех пор прошло немало времени, острота проблемы вирусов многократно возросла, однако строгого определения, что же такое компьютерный вирус, так и не дано, несмотря на то, что попытки дать такое определение предпринимались неоднократно.
Необходимым свойством компьютерного вируса является возможность самопроизвольно создавать свои дубликаты (не обязательно совпадающие с оригиналом) и внедрять их в файлы, системные области компьютера и другие выполняемые объекты.
Вот почему точного определения вируса нет до сих пор, и вряд ли оно появится в обозримом будущем. Следовательно, нет точно определенного закона, по которому "хорошие" файлы можно отличить от "вирусов". Более того, иногда даже для конкретного файла довольно сложно определить, является он вирусом или нет. Например, есть программа ALREADY.COM, которая сама себя копирует в разные подкаталоги на диске в зависимости от системной даты, т.е. ведет себя как типичный вирус-червь, сам себя расползающий по дискам (включая сетевые). Однако это не вирус, а компонента от какого-то программного обеспечения. Но если этот файл выдернуть из этого ПО, то ведет он себя как типичный вирус.
Основные разновидности вирусов.
· Файловые вирусы – наиболее известны, распространялись еще в DOS. Для своего распространения используют стандартные функции ОС. Первоначальное заражение происходит при запуске зараженной программы.
· Загрузочные вирусы (бутовые) – местом их обитания является загрузочный сектор диска. Подменяя собой стандартный загрузчик ОС такой вирус попадает в память раньше ОС. Заражение происходит в момент загрузки с зараженного диска.
· Резидентные вирусы оставляют в памяти свою часть после завершения работы зараженной программы.
· Макрокомандные вирусы живут в среде макрокоманд. Этот класс вирусов быстро развивается, что обусловлено большим документооборотом. Ряд таких вирусов жизнеспособен и в среде обычных файлов.
· Полиморфные вирусы способны менять свой код при заражении очередного объекта. Результатом этого может быть вирус, весьма отличающийся от исходного, но выполняющий сходные действия.
· Стелс-вирусы умеют скрывать свое присутствие в системе. Просматривая файл средствами ОС, увидеть стелс-вирус невозможно, так как он удаляет свое тело из файла, а после просмотра заражает его снова. Такие вирусы имеют резидентный блок, который перехватывает команды ОС и соответствующим образом реагирует на них.
Вопрос №15. Защита информации. Комплексная защита компьютера.
HIPS.Host-based Intrusion Prevention System (HIPS) – это система защиты от вторжений на уровне отдельно стоящего хоста (IP адреса). В основе работы HIPS лежат технологии анализа событий в системе. Как только злоумышленник или вредоносный код пытается изменить параметры операционной системы или другого программного обеспечения, HIPS сообщит об этом пользователю и сможет их предотвратить.
Антивирус.Антивирусные программы (антивирусы) предназначены для защиты компьютера от установки на них (заражения) вредоносных программам, их обнаружение (если оно ранее произошло) и лечения (устранение последствий).
Антиспам.Антиспам (анг. Anti-spam) или спам-фильтры – это программное обеспечение для автоматического определения и фильтрации нежелательных электронных сообщений (спама). Антиспам может использоваться как на персональных домашних компьютерах, так на корпоративных почтовых серверах или интернет-шлюзах.
Антифишинг.Антифишинг (от анг. Anti-phishing) - это набор технологий, используемых для защиты от сетевого мошенничества и хищения личных данных, так называемого фишинга. В основе антифишинга лежит механизм оповещение интернет-пользователей о попадании на подложные веб-сайты, которые специально создаются злоумышленниками для сбора конфиденциальных данных (паролях доступа к онлайн-банкам, платежным системам и другим сервисам).
Антишпион.Антишпионы (анг. Anti-spyware) – это специальное программное обеспечение для обнаружения и удаления шпионских программ (spyware) на персональных компьютерах.
Веб-фильтрация
Защита личной информации
Персональный Backup
Персональный Firewall
Персональный сетевой экран (также брандмауэр или фаервол) — это аппаратное или программное средство, установленное на домашнем компьютере или рабочей станции, которое предназначено для контроля и фильтрации проходящих через него сетевых пакетов по различным протоколам в соответствии с заданными правилами.
Родительский контроль.Ограничение доступа детей и подростков к нежелательным сайтам в Интернет, например, порносайтам, пропаганде насилия, сайтам знакомств, игровым сайтам, социальным сетям и т.д.
Персональный компьютер
Есть несколько методов защиты информации на персональном компьютере или рабочей станции сети. Основной из них - шифрование с достаточной длиной ключа. Применяя персональное шифрование, можно быть полностью уверенным в сохранности информации. Существует множество реализаций этого способа: от бесплатной программы PGP, до системы защиты информации Secret Disk, использующей для хранения паролей электронные ключи. Зашифрованную информацию можно передавать любыми способами (и по электронной почте, и с курьером), так как злоумышленник, каким либо способом получив зашифрованный файл, ничего не сможет с ним сделать. Подмена также исключена.
Также существуют системы защиты, блокирующие загрузку компьютера до предъявления электронного идентификатора.
Не стоит забывать и об антивирусной защите персональных ресурсов. В этом отлично зарекомендовал себя антивирусный комплекс "Kaspersky Antivirus" Лаборатории Касперского, ранее известный, как "Антивирус Касперского".
Корпоративная сеть
В настоящее время уже многие компании владеют доступом в Интернет, пользуются электронной почтой. Соответственно, появляется вопрос о защите внутренних корпоративных сетевых ресурсов, защите файловых, почтовых и web-серверов и безотказной их работы, ограничении и разделении полномочий сотрудников, работающих с сетью Интернет. Как правило, организации используют для этого так называемые межсетевые экраны.
Особенно насущная проблема - защита каналов передачи данных между головным офисом и филиалами компании. Так как данные передаются через открытые сети (например, Интернет), то это вынуждает полностью "закрывать" канал. Для этого используются VPN (Virtual Private Network), то есть виртуальные частные сети. Сейчас к этой аббревиатуре добавилась буква S (SVPN - Secure Virtual Private Network), то есть защищенная виртуальная частная сеть. VPN организует шифрованный канал точка-точка или точка - многоточка между офисами, филиалами или удаленными сотрудниками компании.
Среди всего разнообразия межсетевых экранов особенно выделяется продукция компании Check Point Software Technologies - мирового лидера по производству систем сетевой защиты. Компания вошла в рейтинг NASDAQ и в этом году выпустила новый продукт Next Generation, который пришел на смену выдающемуся МЭ Check Point Firewall-1/VPN-1.
Для защиты информации на корпоративных серверах также используется шифрование и применяется антивирусная защита.
Сети питания и другие каналы
Существует вероятность снятия информации и другими, более изощренными способами. Как, например, по сетям электропитания, по электромагнитным и виброакустическим излучениям.
Для предотвращения таких случаев обычно используют помехоподавляющие фильтры или проводят серию мероприятий, направленных на невозможность использования технических средств снятия информации.
Уничтожение информации
Некоторые организации или частные лица не доверяют обычному стиранию информации, отслужившей свой срок, форматированию носителей. Также у некоторых компаний есть желание иметь систему, которая срочно, за доли секунды, сможет гарантировано уничтожить носитель на магнитных дисках (жесткий диск, дискета, zip, стримерная кассета). Причем как работающий, так и хранящийся в сейфе.
В такой ситуации оправданным будет использование уничтожителей информации на магнитных носителях и специальные информационные сейфы с источником бесперебойного питания, в которых, например, жесткий диск может работать и, при необходимости, его можно безвозвратно уничтожить.
Вопрос №16. Инструментальное программное обеспечение.
Инструмента́льное програ́ммное обеспе́чение — программное обеспечение, предназначенное для использования в ходе проектирования, разработки и сопровождения программ, в отличие от прикладного и системного программного обеспечения.
Системы программирования
К этой категории относятся программы, предназначенные для разработки программного обеспечения:
- ассемблеры — компьютерные программы, осуществляющие преобразование программы в форме исходного текста на языке ассемблера в машинные команды в виде объектного кода.
- трансляторы - программы или технические средства, выполняющее трансляцию программы.
- компиляторы — Программы, переводящие текст программы на языке высокого уровня, в эквивалентную программу на машинном языке.
- интерпретаторы — Программы (иногда аппаратные средства), анализирующие команды или операторы программы и тут же выполняющие их
- компоновщики (редакторы связей) — программы, которые производят компоновку — принимают на вход один или несколько объектных модулей и собирают по ним исполнимый модуль.
- препроцессоры исходных текстов — это компьютерные программы, принимающие данные на входе и выдающие данные, предназначенные для входа другой программы, например, такой, как компилятор
- Отла́дчик (debugger)- является модулем среды разработки или отдельным приложением, предназначенным для поиска ошибок в программе.
- текстовые редакторы — компьютерные программы, предназначенные для создания и изменения текстовых файлов, а также их просмотра на экране, вывода на печать, поиска фрагментов текста и т. п.
- специализированные редакторы исходных текстов — текстовые редакторы для создания и редактирования исходного кода программ. Специализированный редактор исходных текстов может быть отдельным приложением, или быть встроен в интегрированную среду разработки (IDE).
- библиотеки подпрограмм — сборники подпрограмм или объектов, используемых для разработки программного обеспечения.
- Редакторы графического интерфейса
Перечисленные инструменты могут входить в состав интегрированных сред разработки
Виды инструментального ПО
- Текстовые редакторы
- Интегрированные среды разработки
- SDK
- Компиляторы
- Интерпретаторы
- Линковщики
- Парсеры и генераторы парсеров (см. Javacc)
- Ассемблеры
- Отладчики
- Профилировщики
- Генераторы документации
- Средства анализа покрытия кода
- Средства непрерывной интеграции
- Средства автоматизированного тестирования
- Системы управления версиями
- и др.
Вопрос №17. Классификация языков программирования.
Существуют различные классификации языков программирования.По наиболее распространенной классификации все языки программирования, в соответствии с тем, в каких терминах необходимо описать задачу, делят на языки низкого и высокого уровня.Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам, – языком низкого уровня. В группу языков низкого уровня входят машинные языки и языки символического кодирования: Автокод, Ассемблер. Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно–зависимыми.
Машинно–ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).
К языкам программирования высокого уровня относят Фортран (переводчик формул – был разработан в середине 50–х годов программистами фирмы IBM и в основном используется для программ, выполняющих естественно – научные и математические расчеты), Алгол, Кобол (коммерческий язык – используется, в первую очередь, для программирования экономических задач), Паскаль, Бейсик (был разработан профессорами Дармутского колледжа Джоном Кемени и Томасом Курцом.), Си (Деннис Ритч – 1972 году), Пролог (в основе языка лежит аппарат математической логики) и т.д.
Эти языки машинно–независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.
Программу, написанную на языке программирования высокого уровня, ЭВМ не понимает, поскольку ей доступен только машинный язык. Поэтому для перевода программы с языка программирования на язык машинных кодов используют специальные программы – трансляторы.
Существует три вида транслятора: интерпретаторы (это транслятор, который производит пооператорную обработку и выполнение исходного кода программы), компиляторы (преобразует всю программу в модуль на машинном языке, после чего программа записывается в память компьютера и лишь потом исполняется) и ассемблеры (переводят программу, записанную на языке ассемблера, в программу на машинном языке).
Языки программирования также можно разделять на поколения:
– языки первого поколения: машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения.
– языки второго поколения: с мнемоническим представлением команд, так называемые автокоды.
– языки третьего поколения: общего назначения, используемые для создания прикладных программ любого типа. Например, Бейсик, Кобол, Си и Паскаль.
– языки четвертого поколения: усовершенствованные, разработанные для создания специальных прикладных программ, для управления базами данных.
– языки программирования пятого поколения: языки декларативные, объектно–ориентированные и визуальные. Например, Пролог, ЛИСП (используется для построения программ с использованием методов искусственного интеллекта), Си++, Visual Basic, Delphi.
Языки программирования также можно классифицировать на процедурные и непроцедурные.
В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий.
Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.
Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, К непроцедурному программированию относятся функциональные и логические языки.
В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь делятся на еще более простые задачи и т.д. Один из основных элементов функциональных языков – рекурсия. Оператора присваивания и циклов в классических функциональных языках нет.
В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Программа на Прологе содержит, набор предикатов–утверждений, которые образуют проблемно–ориентированную базу данных и правила, имеющие вид условий.
Можно выделить еще один класс языков программирования – объектно–ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно–ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме.
Первый объектно-ориентированный язык программирования Simula был создан в 1960-х годах Нигаардом и Далом.
Ява – язык для программирования Internet, позволяющий создавать безопасные, переносимые, надежные, объектно–ориентированные интерактивные программы. Язык Ява жестко связан с Internet, потому, что первой серьезной программой, написанной на этом языке, был браузер Всемирной паутины.
В последнее время, говоря о программировании в Internet, часто имеют в виду создание публикаций с использованием языка разметки гипертекстовых документов HTML. Применение специальных средств (HTML–редакторов) позволяет не только создавать отдельные динамически изменяющиеся интерактивные HTML–документы, используя при этом данные мультимедиа, но и редактировать целые сайты.
Вопрос №18. Парадигмы программирования.
Паради́гма программи́рования — это совокупность идей и понятий, определяющих стиль написания программ. Парадигма в первую очередь определяется базовой программной единицей и самим принципом достижения модульности программы. В качестве этой единицы выступают определение (декларативное, функциональное программирование), действие (императивное программирование), правило (продукционное программирование), диаграмма переходов (автоматное программирование) и др. сущности. В современной индустрии программирования очень часто парадигма программирования определяется набором инструментов программиста, а именно, языком программирования и используемыми библиотеками.
Парадигма программирования определяет то, в каких терминах программист описывает логику программы. Например, в императивном программировании программа описывается как последовательность действий, а в функциональном программировании представляется в виде выражения и множества определений функций (слово определение (англ. definition) следует понимать в математическом смысле). В популярном объектно-ориентированном программировании (в дальнейшем ООП) программу принято рассматривать как набор взаимодействующих объектов. ООП, в основном[1], есть по сути императивное программирование, дополненное принципом инкапсуляции данных и методов в объект (принцип модульности) и наследованием (принципом повторного использования разработанного функционала).
Важно отметить, что парадигма программирования не определяется однозначно языком программирования — многие современные языки программирования являются мультипарадигменными, то есть допускают использование различных парадигм. Так на языке Си, который не является объектно-ориентированным, можно писать объектно-ориентированным образом, а на Ruby, в основу которого в значительной степени положена объектно-ориентированная парадигма, можно писать согласно стилю функционального программирования.
Приверженность определённого человека какой-то одной парадигме иногда носит настолько сильный характер, что споры о преимуществах и недостатках различных парадигм относятся в околокомпьютерных кругах к разряду так называемых «религиозных» войн — холиваров.
Вопрос №20. Встроенные типы данных.
Обычно в состав встроенных типов данных включаются такие типы, операции над значениями которых напрямую или, по крайней мере, достаточно эффективно поддерживаются командами компьютеров. В современных компьютерах к таким "машинным" типам относятся целые числа разного размера (от одного до восьми байт), булевские значения (поддерживаемые обычно за счет наличия признаков условной передачи управления) и числа с плавающей точкой одинарной и двойной точности (обычно четыре и восемь байт соответственно). В более ранних компьютерах часто поддерживалась десятичная арифметика с фиксированной точкой (например, в мейнфреймах компании IBM и супер-миникомпьютерах компании Digital), но в настоящее время прямая аппаратная поддержка такой арифметики отсутствует практически во всех распространенных процессорах. В соответствии с этим, в традиционный набор встроенных типов обычно входят следующие (мы будем говорить про размеры внутреннего представления значений этих типов, хотя в спецификациях языков такая информация, как правило, отсутствует):
Тип CHARACTER (или CHAR) в разных языках - это
- либо набор печатных символов из алфавита, зафиксированного в описании языка (для большинства языков англоязычного происхождения этот алфавит соответствует кодовому набору ASCII);
- либо произвольная комбинация нулей и единиц, размещаемых в одном байте.
В первой интерпретации (свойственной языкам линии Паскаль) для значений типа CHAR определены только операции сравнения в соответствии с принятым алфавитом. Например, при использовании ASCII выполняются соотношения 0 < 1 < ...< 9 < A < B < ...< Z < a < b < ...< z; известно, что если значение переменной x удовлетворяет условию 0 <= x <= 9, то это значение - цифра; если A <= x <= Z, то значение x - прописная буква; если a <= x <= z, то значение x - строчная буква и т.д. При использовании этой интерпретации арифметические операции над символьными значениями не допускаются.
Во второй интерпретации (свойственной языкам линии Си) литеральными константами типа CHAR по-прежнему могут быть печатные символы из принятого в языке алфавита, но возможно использование и числовых констант, задающих желаемое содержимое байта. В этом случае, как правило, над значениями типа CHAR возможно выполнение не только операций сравнения, но и операций целочисленной арифметики.
Наконец, в некоторых языках явно различают тип CHAR как чисто символьный тип и тип сверхмалых целых (TINY INTEGER) как тип целых чисел со значениями, умещающимися в один байт.
В современных компьютерах, как правило, поддерживается целочисленная байтовая арифметика, обеспечивающая как первую, так и вторую интерпретацию типа CHAR.
Тип BOOLEAN в тех языках, где он явно поддерживается, содержит два значения - TRUE (истина) и FALSE (ложь). Несмотря на то, что для хранения значений этого типа теоретически достаточно одного бита, обычно в реализациях переменные этого типа занимают один байт памяти. Для всех типов данных, для которых определены операции сравнения, определены также и правила, по которым эти операции сравнения вырабатывают булевские значения. Над булевскими значениями возможны операции конъюнкции (& или AND), дизъюнкции (| или OR) и отрицания (~ или NOT), определяемые следующими таблицами истинности:
TRUE AND TRUE = TRUE
TRUE AND FALSE = FALSE
FALSE AND TRUE = FALSE
FALSE AND FALSE = FALSE
TRUE OR TRUE = TRUE
TRUE OR FALSE = TRUE
FALSE OR TRUE = TRUE
FALSE OR FALSE = FALSE
NOT FALSE = TRUE
NOT TRUE = FALSE
При работе с булевскими значениями в языках баз данных некоторую проблему вызывает то, что по причине возможности хранения в базе данных неопределенных значений операции сравнения могут вырабатывать не два, а три логических значения: TRUE, FALSE и UNKNOWN. Поэтому в языке SQL-92, например, используется не двухзначная, а трехзначная логика, в результате чего логические операции при их обработке в серверах баз данных определяются расширенными таблицами (мы приводим их с учетом коммутативности двуместных операций):
TRUE AND TRUE = TRUE
TRUE AND FALSE = FALSE
TRUE AND UNKNOWN = UNKNOWN
FALSE AND UNKNOWN = FALSE
TRUE OR TRUE = TRUE
TRUE OR FALSE = TRUE
TRUE OR UNKNOWN = TRUE
FALSE OR UNKNOWN = UNKNOWN
NOT FALSE = TRUE
NOT TRUE = FALSE
NOT UNKNOWN = UNKNOWN
Помимо общего возрастания сложности и недостаточной удовлетворительности трехзначной логики для целей работы с базами данных, неприятность состоит в отсутствии поддержки этой логики в языках программирования (как, впрочем, и в отсутствии явной поддержки неопределенных значений).
В языках линии Си прямая поддержка булевского типа данных отсутствует, но имеется логическая интерпретация значений целых типов. Значением операции сравнения может быть "0" (FALSE) или "1" (TRUE). Значение целого типа "0" интерпретируется как FALSE, а значения, отличные от нуля, - как TRUE. В остальном все работает как в случае наличия явной поддержки булевского типа.
Тип целых чисел в общем случае включает подмножество целых чисел, определяемое числом разрядов, которое используется для внутреннего представления значений. При определении типа целых чисел обычно стремятся к тому, чтобы множество его значений было симметрично относительно нуля (собственно, это стимулируется и стандартными свойствами машинной целочисленной арифметики). Поэтому приходится тратить один бит на значение знака числа и при использовании n бит для внутреннего представления целого соответствующий тип содержит значения в диапазоне от -2(n-1) до 2(n-1). В подавляющем большинстве современных процессоров отрицательные целые числа обычно представляют в дополнительном коде.
В языках, ориентированных на 32-разрядные компьютеры, в частности, в стандартных Си и Си++ для рационального использования памяти допускаются модификации целого типа short integer (обычно 16-разрядные), integer (обычно то же самое, что и long integer) и long integer (обычно 32-разрядные), а также байтовые целые (char). При этом поддерживаются автоматические преобразования значений типов меньшего размера к значениям типов большего размера. Пока не очень понятно, какие встроенные целые типы будут зафиксированы в будущем "64-разрядном" стандарте языка Си, но многие компании считают разумным использовать модель под названием LP64, в которой предполагается размер char - 8 бит, размер short integer - 16 бит, размер integer - 32 бита и размер long integer и long long integer - 64 бита.
Наряду со знаковыми целыми типами в языках часто поддерживаются беззнаковые целые. Такие типы в линии языков Паскаль называются CARDINAL, а в линии языков Си именуются путем добавления модификатора unsigned к названию соответствующего целого типа. Таким образом, в последнем случае существуют типы unsigned char, unsigned short integer, unsigned integer и unsigned long integer. Поскольку множество значений типа unsigned в два раза мощнее множества значений соответствующего целого типа, то поддерживается их автоматическое преобразование только к целым типам большего размера.
Наконец, для поддержки численных вычислений в языках обычно специфицируется встроенный тип чисел с плавающей точкой с базовым названием REAL или FLOAT. Обычно в описании языков не фиксируется диапазон и точность значений такого типа. Они уточняются в реализации и обычно существенно зависят от особенностей целевого процессора. В языках семейства Си (32-разрядных) специфицированы три разновидности типа чисел с плавающей точкой - float (обычно с размером 16 бит), double float (размером в 32 бит) и long double float (размером 64 бит).
Вопрос №21. Константы и переменные.
Константы и переменные
Величина, имеющая неизменное значение в процессе исполнения программы, называется константой. Константа может быть непоименованной, тогда она записывается в тексте программы как непосредственное значение, например 4, 23.1, -6.41Е23, «Строка». Поименованая константа имеет имя, которое нужно указывать при необходимости использовать ее в программе. Поименованные константы должны быть описаны:
Бейсик: CONST Pi=3.1415926
Паскаль: Const Рi = 3.14;
В Турбо Паскаль применяется несколько стандартных видов констант:
- Целочисленные константы. Могут быть определены посредством чисел, записанных в десятичном или шестнадцатиричном формате данных. Это число не должно содержать десятичной точки.
- Вещественные константы. Могут быть определены числами, записанными в десятичном формате данных с использованием десятичной точки.
- Символьные константы. Могут быть определены посредством некоторого символа (заключенного в апострофы).
- Строковые константы. Могут быть определены последовательностью произвольных символов (заключенных в апострофы).
- Типизированные константы. Представляют собой инициализиованные переменные, которые могут использоваться в программах наравне с обычными переменными. Каждой типизированной константе ставится в соответствие имя, тип и начальное значение. Например:
· year: integer = 2001;
· symb: char = '?';
· money: real = 57.23;
Переменная — именованный участок памяти для хранения данных определенного типа. Значение переменной (информация в соответствующих ячейках памяти) в ходе выполнения программы может быть изменено. Каждая переменная имеет имя. Некоторые языки программирования (например Паскаль) требуют явного описания типа переменной, другие (например Бейсик) определяют тип переменной по ее имени.
Алгоритмический язык | Бейсик | Паскаль |
|
|
|
Вопрос №22. Оператор присваивания. Порядок действий (приоритет операторов).
Присваивание
Оператор присваивания выглядит как знак равенства =:
var i = 1 + 2; |
alert(i); // 3 |
Он вычисляет выражение, которое находится справа, и присваивает результат переменной. Это выражение может быть достаточно сложным, включать в себя любые другие переменные:
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
var a = 1; | |
var b = 2; |
a = b + a + 3; // (*) |
alert(a); // 6 |
Выражение может включать в себя и саму переменную, в которую оно присвоится. При этом в строке (*) сначала произойдет вычисление, использующее текущее значение a (т.е. 1), после