Лекция 4 (1160837), страница 2

Файл №1160837 Лекция 4 (Лекции (2009) (Саша Федорова)) 2 страницаЛекция 4 (1160837) страница 22019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

==> иногда представления плавающих типов данных не хватает.

С точки зрения программиста любой порт - это 12-битное число.

Относительная точность дельта=(M-N)/(2 в степени L)

А так значение самого сигнала...

Относительная точность дельта=( M-N)2в степени L

В терминах ЯП Ада: (N-M)(2*l)=Н  нам нет смысла считать с точностью выше Н

(сам преобразователь «обрежет» наше число).

(На самом деле многие преобразователи имеют собственную внутреннюю систему команд. И эти значения ведут себя как целые числа с фиксированной точностью. Точность считается до 4-го знака(больше не нужно, а меньше нельзя)

ХХХХ

С точки зрения компьютера любые физические измерения являются обратными преобразованиями. Как же с нмии оперировать, заваисит от конкретной архитектуры.

C#

Тип decimal: оперировать с ним можно, а заводить новое десятичное число – нельзя. Зато получить его откуда-то – можно.

Замечание. Что есть финансовая операция в ЯП Cobol? Она является целочисленной, а время при обработке финансовой операции в основном тратится на ввод и вывод.

Специалисты IBM стали открыли производство новых компьютеров с возможностью обработки десятичных чисел, введя для этого специальные «финансовые поля».

Пример. Число 234.ХХХХ

Чтобы ввести какую-то цену, достаточно хранить(если есть двоично-десятичная последовательность чисел) последовательность цифр, которая потом легко преобразовывается в случае надобности в 4 байта:

234.0001

Таким образом, мы ззаводим число и храним его в двоично-десятичном виде.

Из Cobol такие числа перешли в PL-1., а оттуда – в базы данных. А истоки, как мы уже знаем, лежат средствах компьютеров производства фирмы IBM(в Intel, кстати, тоже есть специальные команды для обработки двоично-десятичных значений)

И если хочется, существует поддержка такого типа данных.

Фактически это просто частная реализация(от Cobol и PL1, куда они попали как тип данных.)

Чтобы разрешить возникушую проблему, ввели так называемый дельта-тип или фиксированный тип.

Остальные ЯП вводят паллиативы для совметимости с базами данных(для кодирования вещественных чисел с фиксированной точностью)

Описание фиксированого типа данных следующее:

type T is delta H range M..N

где мы указываем:

H - точность

M..N – диапазон.

Кроме этого, с помощью такого механизма возможно представление сетки вычислений

[M..N]+1

Данные типа Т могут хранится как 12-битные целые числа.

Еще одно замечание. При создании любого ЯП можно оптимизировать либо выполнение, либо экономить память. Язык Ада разрабатывался в 70-е годы самым критичным ресурсом была оперативная память, а следовательно, такой delta хранился в целочисленном виде

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

В СССР оператор имеет право отменить любое действие автоматически. На Западе – наоборот 

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

Замечание. При рассмотрении базисных типов данных мы много внимания уделяем именно Аде – богатому в этом смысле языку программирования.

С точки зрения математических расчетов Ада недооценен математиками, котрые вполне довольны Фортраном .А ведь Ада будет все счиать очень верно(если, разумеется, верна математическая модель программы)

В таких языках, как С++, С# и Java отсутствуют многие из типов данных, которые есть в Аде. Действительно, не имеет смысла зашивать в С++ какой-то тип данных – веь его может написать в случае надобности мсам программист.Есть соответствующие классы в сответсвующих библиотеках. Ведь, как мы знаем, одно из основных отличи1 современного ЯП – наличие очень мощных средств развития при очень маленьком базисе.

Пример. В чистом С++ нету типа данных String. Зато он есть в STL.

C#, Java и Delphi связаны между собой гораздо больше, чем с С++. Их типы данных, казалось бы, тоже из библиотек, а на самом деле встроены в компилятор.

Пример.

В стандарте языка Паскаль некоторые вещи маскируются под процессы ввода/вывода. Типы – это часть компилятора, но они «маскируются» под классы из стандартной библиотеки.

Еще пример. System.IO.FileStream в C#

Вывод: для современных языков характерно, что некоторые базисные возможости выдают себя за отдельную библиотеку.

Пример.

Для человека естественно, что если дано число(Number), то оно число.

Сейчас серверная часть многих приложений написана на Perl, php, Basic, а клиентские отображения осуществляются при помощи JavaScript.

Пример. Язык LUA. В данном языке есть класс Number, имеющий не эффективное, зато удобное представление(система времени выполнения сама все подбирает). Но в базисных языках программирования должно уделять больше внимания числовым типам данных, и никакого класса Number там быть не может.

Все остальные типы данных опираются на целочисленные типы данных.

Пункт 2.2 Логический тип данных.

Boolean

bool

В старом добром Си логического типа данных нет, зато есть операции :

&& || !

Для логического типа данных существует неявное преобразование к целочисленному типу:

expr=>int !=0 true

=0 false

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

Наличие логического типа данных не обязательно, но в Обероне он есть  без него никак нелья 

Пункт 2.3 Логический тип данных.

Char – в Си является арифметическим, байтовым типом данных.

char его можно назвать лишь потому, что он используетс лишь дляхранения симвлов В Си не ввели тип данных символов ввиду отсутствия такого тпиа данных в языке Ассемблере и других подобных ему машинных языках. Было бы справедливее, конечно, назвать его byte, а не char.

Возникает проблема представления: что же считать символом?(социальная проблема: что такое алфавит?). Возникла неразбериха, так как алфавиты уу разных естественных языков разные.

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

Проблема представления

byte 0..255

множество символов(charset): наименование символа его коду

Примеры различных charset-ов

Любой шрифт основан на charset-е. Именно для кодировки различных символов и придумываются различные charset-ы. Однако вначале они не были стандартиззованы, а при стандартизации получили перенос в сторону некоторых языков программирования.

ASCII-7

Все базисные компании сипользовали кодировку ASCII-7. Число 7 указывало на

число битов. Восьмой бит использовался для контроля четности. Данные хранились лишь в 7-битном виде => большинство програамм при работе с смвольным типом первым делом обнуляла старший бит(Поскольку в 70-е гг интернет использовался в основном для почты, то почтовые сервера только и делали, что обнуляли старший бит)

ASCII-7 «навел порядок», определив набор из 128 символов.

ISO 8559 – набор официальных алфавитов.

Делили charset на 2 половинки: первая 0..127(ASCII-7), вторая – 128-255.

Стандарт кодировал западно-европейские языки. Существовало несколько разновидностей IS0: Latin1, Latin2, Latin5

КОИ -8Р при обулении русского символа (1 бита) превращался в наиболее похожий на него транслитерационный(латинский) символ. Таким образом, письмо после прохождения через КОИ - 8Р можно было прочитать Минус был в том, что коды символов не сответсвовали их упорядоченности я языке программирования.

Кроме КОИ-Р8, была еще и DOS-866.

Однако дальневосточные языки не подходили ни под одну из кодировок(попросту не хватало отведенных 128 битов). 80-е годы- подьем Японии. Япония становится экспортером вычислительных систем До этого все проблемы с алфавитом игнорировались(не было клиентов-японцев). А когда появились – было уже поздно(>6000 иероглифов- правда, там включен английский, и, что забавно, русский , но меньше 7000). Шести с половиной байт должно было хватить для соответствующих вещей.

Все charset-ы(ASCII-7, КОИ -8Р, DOS-866)- DEC(Digital Equipment Corporation Multinational Character Set),

А в китайской кодировке – DBCS(Double Byte Character Set). В японской – MBCS.

Кодировка – это последовательность символов. Ее надо интерпретировать с самого начала. По первому символу(если он <128 , то он кодируется 1-м байтом, если >=128, то двумя байтами). То есть в зависимости от значения первого бита символы интерпретировались так или иначе.

1991 год- появление международного стандарта UNICODE

UCS(Universal Character Set). Версии

  • UCS-2 – двухбайтовая кодировка

  • UCS-4 – четырехбайтовая кодировка (в основном китайская)

  • UCS-1= UCS Latin1(ANCII)

Итак, базовыми международными стандартами были сначала ASCII-7, а затем UCS-1.

Устройство UCS-1:

Любой символ кодировался двумя байтами. Любому языку соответствовал свой промежуток. Первые 0..127 – ASCII-7, 128..255 – ISO Latin1. Затем шел сам алфавит.

ЮНИКОД

Unicode ~ UCS-2. (Существуют некоторые отличия, касающиеся кодировки японских иероглифов) Утвержден ISO.

Все ЯП после 1991 года уже использовали UNICODE (C#, Java)/

Итог.

Символьный тип данных – совершенно отдельный тип данных.

В последней реализация Delphi тип данных String имеет юникодовскую реализацию.

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

ОКНА

Окна(выводили информацию в UNICODE)

  • 16-битные

  • 8-битные

Значит, любая программа, использующая 8-битные окна, должна была сначала установить CodePage для своего 8-битного окна и в зависимости от этого проводить соответствующие преобразования.

Причина проблемы заключалась в том, что программы, разработанные под DOS и WINDOWS, работали на 8-битных окнах.

В итоге все функции были написаны для 2-х вариантов(для 8 и 16 битных кодировок)

SetWindowTestA(принимает поток из char)

SetWindowTestW(принимает UNICODE-овский текст)

Проблема, таким образом, исчезает: все программы, написанные под Windows XP, Windows 5, Windows 7, Windows Vista уже по определению используют UNICODE.

Какая же проблема возникла потом?

Постепенно с принятием UCS была принята концепция UTF+UCS Transformation Format.

UTF – по определению формат преобразования текста на UCS.

Смысл UTF: в нем любой юникодовский UCS-сный символ представляется ка последовательность битов.

UTF1: чтобы Юникодовские тексты гонять чеез американские почтовые сервера

UTF16 – для кодировки UCS-4.

UTF-8 (В XML, кстати, есть атрибут encoding, а поумолчанию принимается UTF-8 => любой юникодовский символ представим последовательностями из одного или нескольких байтов, в частности, от одного до трех байтов)

Юникодовский набор

0..127

128..2047 – UCS Latin1, латынь, греческий

2048//655435 – спецсимволы, евро, доллар, китайский и японский языки

Иногда 16 байтов разбиваются на 3 поля:

Заметим, что код на UCS избыточен: не любое 16-байтовое число является символом из Юникода.

UCS в основном служит не для обработки, а для передачи, а обрабатывается уже Юникод.

Из более старых ЯП Ада – тип CHARACTER.

Над символьным типом данных операций никаких нет. Он служит только для хранения символов.

Характеристики

Тип файла
Документ
Размер
148 Kb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее