Скачать презентацию Системы счисления Инф Система счисления символический метод Скачать презентацию Системы счисления Инф Система счисления символический метод

И_05_Системы счисления_Файлы _14 слайдов.ppt

  • Количество слайдов: 14

Системы счисления Инф Система счисления — символический метод записи чисел, представление чисел с помощью Системы счисления Инф Система счисления — символический метод записи чисел, представление чисел с помощью письменных знаков. Системы счисления подразделяются на позиционные, непозиционные и смешанные. В позиционных системах счисления один и тот же числовой знак (цифра) в записи числа имеет различные значения в зависимости от того места (разряда), где он расположен. Пример: 10310, 010112, 34 A 2 F 16. Смешанная система счисления является обобщением позиционной системы счисления. Основанием смешанной системы счисления является возрастающая последовательность чисел и каждое число представляется как линейная комбинация. Пример: представление времени в виде количества суток, часов, минут и секунд. При этом величина d дней h часов m минут s секунд соответствует значению секунд d*24*60*60+h*60*60+s*60. В непозиционных системах счисления величина, которую обозначает цифра, не зависит от положения в числе. При этом система может накладывать ограничения на положение цифр, например, чтобы они были расположены в порядке убывания. фактически непозиционной системы счисления является римская (латинская), в которой в качестве цифр используются латинские буквы (I, V, L …) II = 1+1=2, независимо от позиции цифры I. Пример: На самом деле, римская система не является полностью непозиционной, так как меньшая цифра, идущая перед большей, вычитается из неё, например: IV=4, в то время как: VI = 6. 1

Системы счисления Инф Позиционные системы счисления Каждая позиционная система счисления определяется некоторым числом b Системы счисления Инф Позиционные системы счисления Каждая позиционная система счисления определяется некоторым числом b > 1 (т. н. основание системы счисления) таким, что b единиц в каждом разряде объединяется в одну единицу следующего по старшинству разряда. Система счисления с основанием b также называется b-ричной. Число x в b-ричной системе счисления представляется в виде линейной комбинации степеней числа b: где ak — это целые числа, называемые цифрами, удовлетворяющие неравенству 0 ≤ ak < b, k - порядковый номер разряда начиная с нулевого, n – количество разрядов. Каждая степень bk в такой записи называется разрядом, старшинство разрядов и соответствующих им цифр определяется значением показателя k. Число x записывают в виде последовательности его b-ричных цифр, перечисляемых по убыванию старшинства разрядов слева направо: X = an-1 an-2 … a 0 Например, число сто три представляется в десятичной системе счисления в виде: 103 = 1*102+0*101+3*100, а дробь 0, 25 = 2*10 -1+5*10 -2 2

Системы счисления Инф Смешанные системы счисления Основанием смешанной последовательность чисел линейная комбинация: системы счисления Системы счисления Инф Смешанные системы счисления Основанием смешанной последовательность чисел линейная комбинация: системы счисления является возрастающая и каждое число x представляется как где на коэффициенты ak (называемые как и прежде цифрами) накладываются некоторые ограничения. Записью числа x в смешанной системе счисления называется перечисление его цифр в порядке уменьшения индекса k, начиная с первого ненулевого. Если bk=bk для некоторого b, то смешанная система счисления совпадает с b-ричной системой счисления. Например: - представление времени в виде количества месяцев, суток, часов, минут и секунд (60 секунд, 60 минут, 24 часа, 28 -29 -30 -31 сутки, 12 месяцев) - денежные знаки - это пример смешанной системы счисления. ( 1 коп. , 5 коп. , 10 коп. , 50 коп. , 1 руб. , 2 руб. , 5 руб. , 10 руб. , 50 руб. , 100 руб. , 500 руб. , 1000 руб. и 5000 руб. ) • Фибоначчиева система счисления - основывается на числах Фибоначчи. • Факториальная система счисления - основаниями является последовательность факториалов bk = k. • Биномиальная система счисления - представление, использующее биномиальные коэффициенты • Система счисления майя Майя использовали 20 -ричную систему счисления за одним исключением: во втором разряде было не 20, а 18 ступеней, то есть за числом (17)(19) сразу следовало число (1)(0)(0). Это было сделано для облегчения расчётов календарного цикла, поскольку (1)(0)(0) = 360 примерно равно числу дней в солнечном году. 3

Системы счисления Инф Непозиционные системы счисления - Римская система счисления Римская система нумерации с Системы счисления Инф Непозиционные системы счисления - Римская система счисления Римская система нумерации с помощью букв была распространена в Европе на протяжении двух тысяч лет. (Только в позднем средневековье ее сменила более удобная для вычислений десятичная система цифр, заимствованная у арабов. ) Число Римская цифра 1 I 5 V 10 X 50 L Для закрепления в памяти буквенных обозначений римских существует мнемоническое правило: 100 C 500 1000 D M цифр в порядке убывания Мы Дарим Сочные Лимоны, Хватит Всем И ещё останется. Соответственно M, D, C, L, X, V, I Натуральные числа записываются при помощи повторения этих цифр. При этом, если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая - перед большей, то меньшая вычитается из большей (принцип вычитания). Последнее правило применяется только во избежание четырёхкратного повторения одной и той же цифры. Например, I, Х, С ставятся соответственно перед Х, С, М для обозначения 9, 900 или перед V, L, D для обозначения 4, 400. Например, VI = 5+1 = 6, IV = 5 - 1 = 4 (вместо IIII). XIX = 10 + 10 - 1 = 19 (вместо XVIIII), XL = 50 - 10 =40 (вместо XXXX), XXXIII = 10 + 1 + 1 = 33 и т. д. - Система остаточных классов (СОК) - представление числа в системе остаточных классов основано на понятии вычета и китайской теореме об остатках. - Система счисления Штерна-Броко – способ записи положительных рациональных чисел, основанный на дереве Штерна-Броко. 4

Системы счисления Инф Операции в системах счисления Позиционная Непозиционная Сложение и вычитание Поразрядно с Системы счисления Инф Операции в системах счисления Позиционная Непозиционная Сложение и вычитание Поразрядно с переходом в старший разряд при сложении или заимствовании из старшего разряда при вычитании). Сложение -> Посимвольно, путем "склеивания" символов-цифр и последующей замены (слева направо) 4 -х подряд расположенных символов на группы из 2 -х символов имеющих то же значение (например, IIII на IV). Вычитание -> посимвольно, обратной операцией "разбиения" символов на составляющие меньшего номинала. Умножение каждой цифры множимого на каждую цифру множителя и сложение полученных произведений с поразрядным сдвигом результата в соответствии с разрядами множителя. Умножение каждой цифры множимого на каждую цифру множителя и сложение полученных произведений, при этом цифры одинакового порядка для удобства ставим одну под другой. Из старших разрядов делимого группируется число - субделимое, которое можно разделить на делитель (равное делителю по количеству цифр или на одну цифру больше). К остатку от деления добавляются цифры делимого (ещё не участвовавшие в процессе деления) для формирования нового субделимого, и так пока не будет использован младший разряд делимого. Умножая делитель на ряд чисел (например, на сто – C, 50 – L, десять – X, двадцать – XX) и сравнивая произведение с делимым – находим старшие числа частного. Отнимаем их от делимого и снова повторяем операцию до получения конечного результата: нахождения остатка от деления. Деление Перевод числа из одной системы счисления в другую Переводе между позиционной и смешенной системами осуществляется поразрядным преобразованием числа. Перевод между непозиционной и другими системами осуществляется путем преобразования в (из) цифр непозиционной системы в позиционную (смешанную). 5

Системы счисления Инф Перевод чисел из десятичной позиционной системы счисления в другую и наоборот Системы счисления Инф Перевод чисел из десятичной позиционной системы счисления в другую и наоборот При переводе целого числа (целой части числа) из десятичной системы счисления в любую другую исходное число (или целую часть) надо разделить на основание системы счисления, в которую выполняется перевод. Деление выполнять, пока частное не станет меньше основания новой системы счисления. Результат перевода определяется остатками от деления: первый остаток дает младшую цифру результирующего числа, последнее частное от деления дает старшую цифру. При переводе правильной дроби из десятичной системы счисления в любую другую систему счисления дробь следует умножать на основание системы счисления, в которую выполняется перевод. Полученная после первого умножения целая часть является старшим разрядом результирующего числа. Умножение вести до тех пор пока произведение станет равным нулю или не будет получено требуемое число знаков после разделительной точки. При переводе вещественных чисел целая и дробная части числа переводятся отдельно. Операция перевода в десятичную систему выглядит гораздо проще, так как любое десятичное число можно представить в виде x = a 0·pn + a 1·pn– 1 +. . . + an– 1·p 1 + an·p 0, где a 0. . . an – это цифры данного числа в системе счисления с основанием p. Например, перевести число 4 A 3 F в десятичную систему. По определению, 4 A 3 F= 4· 163 + A· 162 + 3· 16 + F. При замене A на 10, а F на 15, получается 4· 163 + 10· 162 + 3· 16 + 15= 19007. Перевод чисел между системами счисления с основанием, равным степеням двойки можно осуществлять и с помощью следующих алгоритмов Перевод числа из двоичной системы в системы (8 и 16). Для того чтобы целое двоичное число записать в системе счисления с основанием 2 n, нужно данное двоичное число разбить справа налево на группы по nцифр в каждой; если в последней левой группе окажется меньше n разрядов, то дополнить ее нулями до нужного числа разрядов; рассмотреть каждую группу, как n-разрядное двоичное число, и заменить ее соответствующей цифрой в системе счисления с основанием 2 n. Перевод числа с основанием, равным степеням двойки (8 и 16) в двоичную осуществляется заменой каждой цифры числа с основанием 2 n на эквивалентную ей группу из n двоичных цифр (3 – для восьмеричной системы и 4 для шестнадцатеричной). 6

Элементы ЯПВУ. ФАЙЛЫ Инф Способы организации в ЯПВУ данных в виде файлов позволяют программ Элементы ЯПВУ. ФАЙЛЫ Инф Способы организации в ЯПВУ данных в виде файлов позволяют программ осуществлять обмен данными с внешними (по отношению к программам) хранилищами данных, иначе ввод/вывод. Универсальное формальное определения понятия ФАЙЛ – непростая задача, для целей первичного изучения ПЯВУ достаточным определением файла будет следующее: Файл – это именованная структура данных (внешних по отношению к программе), представляющая собой последовательность элементов данных одного типа неопределенной длины. В ПЯВУ определены операции обмена данными с файлами. В отношении файла применяются понятия организация файла и дисциплина доступа. Организация файла – это способ структурирования данных и размещения их во внешнем хранилище (носителе). Дисциплина доступа – это совокупность алгоритмов и соглашений, определяющих порядок взаимодействия программы с компонентами файла (перебора, обмена и пр. ) Возможны два разных способа организации обмена программы с файлом: • Записеориентированнный обмен, где Запись – это совокупность данных (фиксированной, переменной или неопределенной длины) обрабатываемых совместно при обмене данными между программой и файлом, • Потокоориентированный обмен, где Поток – это совокупность строк произвольной длины, каждая из которых завершается последовательностью EOL - end of line (коды ASCII 13 (CR) + ASCII 10 (LF), EOL вводится нажатием клавиши Enter), а весь потокоориентированный файл может завершаться символом EOF - end of file (код ASCII 26, EOF вводится одновременным нажатием клавиш CTRL-Z). 7

Элементы ЯПВУ. ФАЙЛЫ Pascal В Pascal для организации обмена с внешними хранилищами данных используется Элементы ЯПВУ. ФАЙЛЫ Pascal В Pascal для организации обмена с внешними хранилищами данных используется файловые типы. Элементы файла могут быть любого типа, но не "файл" или "объект". Любой файл может содержать неограниченное количество элементов. ТИПЫ файлов: ♦ типизированные файлы – файлы с объявленным типом элементов, ♦ нетипизированные (бестиповые) файлы – файлы содержащие последовательности элементов произвольного типа (но с оговоренным размером элементов), ♦текстовые файлы – файлы содержащие символьные строки переменной длины. Инф Pascal Описания типов файлов - Типизированные файлы Type <имя_перемен_файлового_типа> = file of <тип_элементов_файла>; Пример: Type NUM = file of integer; Var F 1, F 11 : NUM; или Var < имя_перемен_файлового_типа > : file of <тип_элементов_файла>; Пример: Var F 3 : file of integer; - Нетипизированные файлы Type <имя_перем_файлов_типа> = file; Пример: Type NUM = file; Var F 1, F 1 : NUM; или Var <имя_перем_файлов_типа> : file; Пример: Var F 1 : file; - Текстовые файлы Type <имя_перем_файлов_типа> = text; Пример: Type Filtxt = text; Var ft : text; или Var <имя_перем_файлов_типа> : text; Пример: Var FT : text; 8

Элементы ЯПВУ. ФАЙЛЫ Pascal Доступ к файлам может быть последовательным (очередной элемент можно прочитать/записать Элементы ЯПВУ. ФАЙЛЫ Pascal Доступ к файлам может быть последовательным (очередной элемент можно прочитать/записать только аналогичной операции элементом) или прямым чтение/запись произвольного заданному адресу). Инф после выполнения над предыдущим (можно выполнить элемента файла по Последовательный доступ возможен к файловым переменным всех типов: текстовым (text), типизированным (file of) и нетипизированным (file). Прямой доступ возможен только для переменных файлового типа file и file of, для этого с ними связано понятие текущей позиции. Она указывает на конкретный элемент файла, с которым в данный момент можно выполнять поэлементные действия. В результате выполнения операции текущая позиция может перемещаться настраиваясь на тот или иной элемент файла. Все элементы считаются пронумерованными (начиная с 0). Прямой доступ возможен потому, что данные в файлах типа file и file of условно разделены на блоки одинакового размера (элементы). Переменные файлового типа называются логическими файлами, а реальные устройства ввода/вывода и файлы на дисках – физическими файлами. Имена физических файлов описываются строковыми переменными: • 'history. pas' – имя дискового файла в текущей папке, • 'd: BPsourcemassive. pas' – полное имя дискового файла, • 'CON' – консоль (экран дисплея), • 'LPT 1', 'LPT 2', 'LPT 3', 'PRN' – принтер, • 'COM 1', COM 2', AUX'- коммуникационный канал, • 'NUL' – пустое устройство. Если имя файла задается в виде пустой строки, то файловая переменная связывается, в зависимость от направления обмена информацией, со стандартными файлами Input (для чтения данных с клавиатуры) или Output (для вывода данных на экран), эти файлы в Borland Pascal считаются открытыми по умолчанию. Для ввода/вывода в файл надо связать логический файл с физическим, т. к. функции и процедуры Pascal работают только с логическими файлами. 9

Элементы ЯПВУ. ФАЙЛЫ Pascal Инф Pascal Организация ввода/вывода в файл : 1. Объявить файловую Элементы ЯПВУ. ФАЙЛЫ Pascal Инф Pascal Организация ввода/вывода в файл : 1. Объявить файловую переменную, 2. Связать её с физическим файлом, 3. Открыть файл для чтения и/или записи, 4. Выполнить операции ввода/вывода, 5. Закрыть файл. Обмен между логическими и физическими файлами происходит через буфер в системной области оперативной памяти, который выделяется для каждого открытого файла. При записи в файл все данные поступают в буфер. Передача данных на внешнее хранилище (дисковый файл или устройство) происходит после заполнения буфера или после специальной команды. При чтении из файла данные считываются в буфер, причем считано будет не столько, сколько запрашивается, а сколько поместиться в буфер. Подпрограммы можно разделить на две подгруппы: универсальные, пригодные для любого типа файлов и специализированные, применимые только для определенных типов. Специализированные подпрограммы будут в дальнейшем отмечены перечнем типов, к которым они применимы, заключенным в круглые скобки: (text, file of). 10

Элементы ЯПВУ. ФАЙЛЫ Pascal Инф Pascal Подпрограммы для работы с файлами assign (f[, 'f_name']); Элементы ЯПВУ. ФАЙЛЫ Pascal Инф Pascal Подпрограммы для работы с файлами assign (f[, 'f_name']); – свя- Процедура rewrite (f [, size]); Процедура зывает логический файл f с физическим файлом f_name. – f – имя файловой переменной (ифп), – f_name – литеральное имя файла (иф) – создает и открывает физический файл, имя которого присвоено логическому файлу f для записи данных, начиная с первого элемента. Здесь f – ифп, а size – размер записи (исполь- Процедура reset (f [, size]); – открывает логический файл f для чтения данных, начиная с первого элемента. Здесь f – ифп, а size – размер записи в файле, Процедура close (f); – закрывает открытый логический файл f. Здесь f – ифп. Напр. : assign (F 1, 'd: BPa. txt'); Если путь не задан, файл – в текущей папке. Связь файлов существует пока для переменной f не будет выполнена другая процедура assign (или close). используется только для нетипизированных файлов (file), по умолчанию 128 байт (это же размер буфера). Напр. : reset (F 1); Если файл не существует – выдается ошибка. Если уже открыт – открывается снова (текущая позиция в начале файла). Файл типа (text) открывается только на чтение. Процедура append (f); – открывает текстовый файл для дополнения данных в конец файла. Здесь f – ифп текстового типа (text). Напр. : append (F 1); Если файл не существует – выдается ошибка. Если уже открыт, то сначала закрывается и потом открывается. Текущая позиция устанавливается перед концом файла. зуется только для (file), по умолчанию 128 байт). Напр. : rewrite (F 1); Если файл не существует он создается, если существует – он очищается и записывается с начала. Файл типа (text) открывается только на запись. Напр. : close (F 1); Обязательно надо использовать close для завершения работы с открытым для записи (выходным) файлом, т. к. при её выполнении происходит выгрузка буфера. Если не выполнить close содержимое буфера может пропасть. Для входных файлов close можно не выполнять. Функция eof [(f)]; – возвращает True, если при чтении текущая позиция находится за последним элементом файла f или файл пуст, иначе False. Здесь f – ифп. Напр. : eof (F 1); Если имя файла f опущено, используется файл Input. 11

Элементы ЯПВУ. ФАЙЛЫ Pascal Инф Pascal Подпрограммы для работы с файлами Процедура write ([f, Элементы ЯПВУ. ФАЙЛЫ Pascal Инф Pascal Подпрограммы для работы с файлами Процедура write ([f, ] v 1 [, v 2, …, v. N]); Процедура read ([f, ] v 1 [, v 2, …, v. N]); для текстовых файлов (text) – считывает N значений из текстового файла в переменные. Здесь f – ифп, а v 1, …, v. N – список переменных, в которые считываются значения из f. Если параметр f опущен, то используется стандартная файловая переменная Input. Каждый параметр v является переменной символьного, строкового, целого и вещественного типа. Напр. : read (x, y); Для пустого файла переменная равна 0. Для символьного типа в переменную читается один символ. Для целого типа читается число со знаком до пробела, табуляции, конца строки (лидирующие пробелы и т. д. – игнорируются). Для вещественного типа читается десятичное число, аналогично целому. Для строкового типа в переменную читаются все символы до конца строки или файла. После считывания строки не делается пропуск до следующей строки (надо использовать Read. Ln). для типизированных файлов (file of) – считывает в переменную элемент файла f. для текстовых файлов (text) – записывает N значений параметров v в файл f. Здесь f – ифп, а v 1, …, v. N – список параметров, из которые записываются значения в f. Если параметр f опущен, то используется стандартная файловая переменная Output. Каждый параметр v является выражением символьного, целого, вещественного, строкового, упакованного строкового или булевого типа, значение которого записывается в файл f. Параметр v имеет вид: expr [: size [: dec]] где expr – вводимое в файл выражение, size – минимальная ширина поля dec – число десятичных знаков в вещественном числе с плавающей точкой. Напр. : write (F 1, y+z 3, x); Size – целое число больше 0, по умолчанию равна 17, dec по умолчанию – десятичная строка с плавающей точкой. Для строкового типа: если size опущена в файл записывается expr без лидирующих пробелов; если size больше чем expr, то перед десятичной строкой добавляются лидирующие пробелы. для типизированных файлов (file of) – записывает N значений переменных v в файл f. Типы переменной и элемента файла – одинаковы. Напр. : read (F 1, x, y); При каждом считывании ука- Типы переменной и элемента файла – одинаковы. затель позиции сдвигается к следующему элементу, Напр. : write (F 1, x, y); При каждой записи текущая позиция сдвигается к следующему элементу, когда и так до конца файла. Файл должен быть открыт. достигнут EOF – файл расширяется. Процедура readln ([f, ] v 1 [, v 2, …, v. N]); – выполняет процедуру read и переходит к Процедура writeln ([f, ] v 1 [, v 2, …, v. N]); следующей строке. Read. Ln (f); - перемещает теку- – выполняет процедуру write и записывает в 12 щую позицию к следующей строке. Тип f -(text). файл EOL. Writeln (f); -записывает в файл EOL. (text)

Pascal Элементы ЯПВУ. ФАЙЛЫ Инф Pascal Подпрограммы для работы с файлами Функция filepos (f); Pascal Элементы ЯПВУ. ФАЙЛЫ Инф Pascal Подпрограммы для работы с файлами Функция filepos (f); – возвращает текущую позицию в файле f. Функция eoln [(f)]; – возвращает для файла Здесь f – ифп. (file, file of) Напр. : filepos (F 1); Если текущей позицией является начало файла, функция возвращает значение 0, а если – конец файла, то размер файла. Процедура seek (f, n); – перемещает текущую позицию в файле f к элементу n. Здесь f – ифп, n – порядковый номер элемента, целое число. (file, file of) Напр. : seek (F 1, 10); Номер первого элемента файла – 0. Чтобы расширить файл, можно переместить текущую позицию в конец файла: seek (F 1, filesize(f)); , - а затем добавить элементы. Процедура truncate (f); – усекает размер файла f до текущей позиции. Здесь f – ифп. (file, file of) Напр. : truancate (F 1); Все элементы после текущей позиции в файле F 1 удаляются и текущая позиция становится концом файла. f True, если при чтении текущая позиция находится за последним элементом строки или строка пуста, иначе False. Здесь f – ифп. . (text) Текущая позиция – на EOL – True, иначе False. Напр. : eoln (F 1); Если имя файла f опущено, используется файл Input. Функция seekeoln [(f)]; – возвращает для файла f True, если при чтении текущая позиция находится за последним элементом стоки или строка пуста, иначе False. Здесь f – ифп. . (text) Аналогична функции eoln(f); - но пропускает все пробелы и знаки табуляции, как лидирующие, так и от последнего значащего символа до конца строки. Напр. : seekeoln (F 1); Можно исп. при считывании числовых значений из текстового файла. Если имя файла f опущено, используется файл Input. Стандартные текстовые файлы input – стандартный файл ввода (по умолчанию – клавиатура). output – стандартный файл вывода (по умолчанию – экран дисплея). Разрешено переназначение стандартных файлов ввода/вывода: assign (output, 'd: BPoutfile. dat'); 13

ФАЙЛЫ Pascal Практические занятия Задание 1. Создать на диске Z:  файл numbers. txt, ФАЙЛЫ Pascal Практические занятия Задание 1. Создать на диске Z: файл numbers. txt, записать в него 5 введенных с клавиатуры целых чисел. Program file_5 num; (* Создает на диске Z: файл numbers. txt и записывает в него 5 целых чисел введенных с пользователем с клавиатуры *) var f : text; (* текстовый файл *) n : integer; (* вводимое число *) i : integer; (* счетчик чисел *) begin writeln ('Создание и заполнение файла numbers. txt'); assign (f, 'z: numbers. txt'); (* Связь с файлом *) rewrite (f); (*Созд. и откр. файл в режиме перезаписи*) writeln ('Введите 5 целых чисел, нажимая Enter после каждого числа'); for i: =1 to 5 do begin write ('->'); readln (n); (* чтение числа из буфера клавиатуры*) writeln (f, n); (* запись считанного числа в файл *) end; close (f); (* закрыть файл *) writeln ('Введенные числа записаны в файл ', 'z: numbers. txt'); readln; end. Инф Pascal Задание 2. Вывести на экран содержимое файла numbers. txt. Program file 5 displ; (* Выводит на экран файл z: numbers. txt *) var f : text; (* текстовый файл *) n : integer; (* вводимое число *) begin writeln ('Содержимое файла numbers. txt'); writeln ('---------------------'); assign (f, 'z: numbers. txt'); (*Связь с файлом*) reset (f); (* Открыть файл для чтения *) while not EOF(f) do (*Выполнять до конца файла*) begin readln (f, n); (* Читать число из файла *) writeln (n); (*Вывести прочитанное числа на экран *) end; close (f); (* закрыть файл *) writeln ('----------------------'); readln; end. 14