Для студентов МГУ им. Ломоносова по предмету Языки программированиялекции (2009)лекции (2009) 2019-09-19СтудИзба

Лекции: лекции (2009)

Описание

Описание файла отсутствует

Характеристики лекций

Учебное заведение
Семестр
Просмотров
53
Скачиваний
0
Размер
49,88 Kb

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

Прочти меня!!!

Файл скачан с сайта StudIzba.com

При копировании или цитировании материалов на других сайтах обязательно используйте ссылку на источник

лекции (2009)

Сейчас идет возврат к обобщенным типам данных.

Родина большинство языков программирования – Америка и Европа, алфавиты которых не особо

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

хватало 1 байта(256 различных символов) для кодирования любого символа. Но со временем стало понятно,

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

люди стали думать о новых символьных типах данных. И происходило это в 80 – ые годы. Первым путем

решения этой проблемы стало введение различных кодировок, как например ASCII-7, которая жива и ныне(

первые 128 служебные, потом идут большие и малые английские буквы, цифры, знаки пунктуации…). Многие

кодировки содержат первые 128 символов, такие же как в ASCII-7, и что – то свое. Проблемы осложнились

когда дело дошло до Китая и Японии(появилось еще множество новых кодировок…) Чтобы хоть как – то

уладить проблемы с большим количеством различных кодировок в 91 году появляется стандарт Unicode. На

нем остановимся чуть поподробнее. Юникод, или Уникод (англ. Unicode) — стандарт кодирования символов,

позволяющий представить знаки практически всех письменных языков.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode

Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать очень большое число

символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы,

математические символы, буквы греческого алфавита, латиницы и кириллицы, при этом становятся

ненужными кодовые страницы. Рассмотрим наиболее популярный формат UTF-8.

UTF-8 (от англ. Unicode Transformation Format — формат преобразования Юникода) — в настоящее время

распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием

текста. Нашла широкое применение в операционных системах и веб-пространстве Unicode и его роль в веб-

пространстве.

Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный

текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с

тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байтов

(реально только до 4 байтов, поскольку использование кодов больше 221 не планируется), в которых первый

байт всегда имеет вид 11xxxxxx, а остальные — 10xxxxxx.

Проще говоря, в формате UTF-8 символы латинского алфавита, знаки препинания и управляющие символы

ASCII записываются кодами US-ASCII, a все остальные символы кодируются при помощи нескольких октетов

со старшим битом 1. Это приводит к двум эффектам.

• пДраежпеи енсалнии яп рбоугдруат момтао бнре аржаастпьосзян апёрта вЮилньинкоо. д, то латинские буквы, арабские цифры и знаки

• В случае, если латинские буквы и простейшие знаки препинания (включая пробел) занимают

существенный объём текста, UTF-8 даёт выигрыш по объёму по сравнению с UTF-16.[1][2]

• На первый взгляд может показаться, что UTF-16 удобнее, так как в ней большинство символов

кодируется ровно двумя байтами. Однако это сводится на нет необходимостью поддержки

суррогатных пар, о которых часто забывают при использовании UTF-16, реализовывая лишь

поддержку символов UCS-2.[1].

Символы UTF-8 получаются из Unicode следующим образом:

Unicode UTF-8

0x00000000 — 0x0000007F 0xxxxxxx

0x00000080 — 0x000007FF 110xxxxx 10xxxxxx

0x00000800 — 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx

0x00010000 — 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Также теоретически возможны, но не включены в стандарты:

Unicode UTF-8

0x00200000 — 0x03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

0x04000000 — 0x7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Замечание: Символы, закодированные в UTF-8, могут быть длиной до шести байт, однако стандарт Unicode не

определяет символов выше 0x10ffff, поэтому символы Unicode могут иметь максимальный размер в 4 байта в

UTF-8.

Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого

документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM),

также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). Чтобы при сохранении

избавиться от добавления сигнатуры, используйте, например, Notepad++.

Лекция. Лихогруд Н.Н.

п.2.4 Ограниченные типы данных

п.2.4.1 Перечисления (перечислимые типы данных)

Паскаль:

Type EnumTyp = (va1, …, valN);

Операции:

:=, =, <, >, <>, >=, <= - основаны на функциях succ(x), pred(x)

ord(x) = 0…N-1 (Элементы упорядочены)

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

Для UNICOD FFFE – «магическая константа», определяет порядок байтов

Совет по программированию – Использование констант делает программу более понятной. В программе не

именованными должны быть только 0,1,-1. Все остальные константы нужно именовать.

т.е. I := 54; - плохой стиль

преобразования:

EnumType -> Integer безопасно

Integer -> EnumType Небезопасно. Нужны проверки

Статические проверки – проверки при компиляции программы. Проверяемые данные не меняются в

различных вызовах функции (запусках программы)

A:array [1..100] of integer;

……….

a[10] = 10; Статическая проверка

Квазистатические проверки - проверки при выполнении. Квазистатическим они называются потому, что

проверяемые данные могут меняться в различных вызовах

функции (запусках программы). Поэтому эти проверки делаются именно при выполнении.

Компилятор обнаруживает опасное место в программе и вставляет в это место квазистатический код, который

выполнится в процессе работы программы.

a:array [1..100] of integer;

……….

a[n] = 10; n не известна в момент компиляции. Если язык поддерживает

квазистатические проверки, то здесь будет вставлен контроль выхода за границу массива

x:0…N-1

x:= expr; Вставится роверка вида «if(expr >= N) or (expr <0) then error()», т.к.

значение expr не известно во время компиляции

В машинных языках нет квазистатических проверок. Поэтому нет и в Си

int a[10];

n = 11;

a[n] = 10; В Си проверки не будет

RTTI – динамическая информация о типе. Ради этого в Си++ вставлены квазистатические проверки.

В Си-89 добавили такую конструкцию:

enum ET(v0,…,vN);

которая эквивалентна последовательности строк

#define v0 0;

#define v1 1;

……..

Но так как нет квазистатических проверок, то все нижеследующие строки будут корректны:

enum ET y;

int I;

x = v1;

I = v2;

x = I;

I = x;

x = -5;

Негласная парадигма языка Си – «компактность кода», а квазистатические проверки, естественно,

увеличивают генерируемый код.

В своё время перечислимые типы были очень популярны.

Но:

• Языки «Оберон»(1988) и «Оберон-2»(1993) уже не содержали перечислимые типы. В Обероне было

«Расширение типов», которому противоречат перечислимые типы данных, которые невозможно

расширить.

• uses (pascal, Ада) Вместе с перечислимым типом неявно импортируются все его константы на том же

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

разных перечислимых типов (в т.ч. из разных модулей)

• Java (1995) – нет перечислимых типов

• C# (1999) – перечислимые типы есть. Одно из назначений - хранение наборов значений параметров

компонентов( например влево/вправо/по центру для выравнивания). Т.е. перечислимые типы

интегрировали в визуальные средства проектирования.

Картинка-подпись
Хочешь зарабатывать на СтудИзбе больше 10к рублей в месяц? Научу бесплатно!
Начать зарабатывать

Комментарии

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