lekcii (Лекции), страница 8

DJVU-файл lekcii (Лекции), страница 8 Информатика (112): Лекции - 1 семестрlekcii (Лекции) - DJVU, страница 8 (112) - СтудИзба2013-09-14СтудИзба

Описание файла

DJVU-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.

Просмотр DJVU-файла онлайн

Распознанный текст из DJVU-файла, 8 - страница

Поэтому во многих компьютерах недавнего прошлого были специальные команды десятичной арифметики для выполнения операций над изобра>ксниями десятичных тисел (ВСП Ыпагу-сос1ес1 с1есшта1в двоично-кодированные дееятпичньте). Теперь, после того как мы ознакомились с описанием и употреблением массивов, мы можем написать соотвстствующук> Паскаль-программу вычисления значения числа по его цифрам в произвольной системе счисления.

ргоягапт Ногттет (1прШ,опг рШ,); 1' Вычисление значения многочленв по с>велте Горнера, представленного в ЭВМ вектором коэффициентов. р — ьпоффицпсн>пы многочле>н>,, и — его с>лепень 3 айаг р: аггау [0..10] оС' геа1:, и, 1: шСенег; х, е: геа1; со»С: Ьоо1еап; Ьенш гереаС геас11п(»); 1К(п < 0) ог (и > 10) СЬеп т»тг1Се1п(сСтепень„многочлена должна быт ппС11(» > 0) апс1 [и <- 10); Сог 1: - 0 Со и с1о геас>(р[> [) .„ геас11п; и~пСе1п('Введите х'); геас11п(х); тът1Се['1~(х) — >); сопС: ==- Са1яе; ее 00; 1 Схема Горнера: р„, = Я...(а„х С а >)х+ ...)х Сог 1: и с1ои~пСо 0 с1о Ьенш е: а ~х- р[1[; 11 р[> [ <> 0.0 СЬеп Ьецш 1' печать ~ 11 сопС СЬеп жг1Се[ + '); ът1Се[р[>[: 1: 3); 11 [> < > 0) СЬеп ът1Се(Ъх ', >: 1); сон с: Сгпе; епс1; епс1; тът1Се1п; ът1Се1п('1>[', х: 1: 3, ')„=- ', а: 1: 3)„.

епс1, ь от„О„до 10'); Са>)х+ас 1 Лекция 23 178 На самом деле при использовании схемы Горнера для полиномиальной интерпретации изображения числа,, цифробуквы которого поступают из текстового файла, массив для хранения значения той части числа, которая уже считана, не требуется: достаточно одной переменной типа шСедег для накопления частичных постепенно вычисляемых значений вводимого числа.... геас1(с); >: — > * 10 + (огс1[с) - огс1['0')); ... Полученное таким способом числовое значение во внутреннем представлении можно выводить в десятичной системе счисления. Необходимая обратная интерпретация аккумулированного числа может быть выполнена автоматически при выводе полиморфной процедурой ът1Се1п.

Замс>тим, что для больших чисел обычной целой переменной может оказаться недостаточно. 3.3 Блочная структура программ Ранее нами были введены основные конструкции языка программирования (композиции, ветвления и цикла), предназначенные для описания внутренней логики программы. Этих конструкций достаточно для описания любых программ (теорема Бойма-Джакопини-миллса), причем программы при нисходящей разработке получаются с четко выраженной структурой последовательного выполнения инструкций, легко читаются, тестируются и отлаживаются. Таким образом, использование минимального набора инструкций позволяет решить проблему эффективной организации программ по управлению.

Не менее важной проблемой является проблема организации программ по данным. Для организации программ по данным еще в ранних языках программирования (АЛГОЛ- 60) была введена специальная конструкция блок. Блок является простейшей формой программной единицы, представляющей собой обособленный фрагмент программы со своим локальным контекстом. 1ипичный пример объектов локального контекста параметр цикла 1ог или временная иеремешзая для обмена значениями двух переменных. Иерархически вложенная система блоков позволяет организовать проектирование программы гю данным как ис1за1зхический процесс детализации сй функций, Каждая функция детвлизируется в виде блока с указанием неких характерных локальных данных. Если блок оказывается длинным и сложным, то в ибм организуются дополнительные блоки. Определим блок как разновидность составной инструкции языка программирования, обозначаемую открывающей скобкой (Ьеи1п, 1! и закрывающей < кобкой (ецио, )) и имеющую следунлцую структуру: Ьевзп,' ' Начало блока языка, АЛГОЛ вЂ” 60 <последовательность описаний..= < последователыюсть инструкций .- епс1 1'~1 Конец блока Известный пам составной оператор Паскаля блоком не является, так как не содержит описаний и не имеет локальных данных.

Как и составной оператор, блок может быть вложенным и входить в другой, охватывающий блок, Во вложенном блоке доступны объекты охватывакэщего блока, если только они не экранированы омонимичными (одноименными) локальными по!~сменными. Экранирование означасг прио1зитет локальных объектов над глобальными и является средством разрешения конфликта имен.

В то жс время локальные переменные и константы блока недоступны в охватывающих олоках. В языках с развитой блочной и модульной структурой существуют средства явного экспорта~'импорта глобальных и локальных объектов. Обычно программы, процедуры и функции представляют собой блоки, т. к. имеют описания локальных объектов. Локальные объекты позволяют не заботиться об уникальности имен при написании больших программ. Более того, они защищены от несанкционированного использования или от непреднамеренной порчи в большей части программы тем, что просто пе видны оттуда.

Локализация области действия переменных и констант позволяет не просто разгрузить глобальный контекст от второстепенных деталей, но и оптимизируют использование памяти. Нри исгюльзовании блочной структуры управление памятью локальных данных бло- 179 ков происходит следующим образом: для каждого из блоков на время его вьшолнения выделяется область памяти для размещения локальных переменных и констант. Глобальные переменные и константы при этом уже размещены в области памяти охватывающего блока.

11осле завергпения выполнения блока память, отведенная под локальные переменные и константы, освобождается и может быть повторно использована, что сокращает общунэ потребность программы в памяти, так что она значительно меньше суммарной длины всех переменных и констант. В каждый момент времени занимается память только под данные, необходимые текущему блоку и всем его прародителям. Это можно проиллнэстрировать использованием памяти при выполнении программы со следунэщсй блочной структурой: ~'~' Глобальный контекст описаний сопИ шС МАХ =- 100:,' Глобальная константа, доступна во всех блоках шС шаги[э оЫ],~~э Начало блока О шС В(МЛХ]; 1ог[шС ) - 0: э < МЛХ; ръ 1-] 'у Блок 1 — тело цикла 1ог, вложенный в блок О, г — локальный параметр цикла,1ог для блока 1 Сот(шС 1 — 0; 1 < МАХ; 1з-+],,~у Блок 2 — цикл Сог, вложсггный в цпкл 1ог; 1'— его локальнъгй парамелпр 11(В(~] > В(1]),,У Блок 3 — проверка ( шС С аггау(~ ]; Локальная, переменная для обмена значениями, аггау(э] - аггау(1 ]; аггау [1 ] ),,'У Конец блоков,э, 2 и 1 геСпгп 0:, Конец блока О Обратите внимание, что вложенные блоки заканчиваются в порядке, текстуально обратном их описанию.

11ри выходе из блока память., занятая локальными перемегшыми, освобождается и все хранящиеся в них значения те1эяются. В некоторых языках программирования возможно сохранение локальных переменных. Так в языке Алгол-60 описателем оигп гнэмечаются локальные переменные, значения которых надо сохранять между обращениями к блоку. В языке Фортран локальные переменные всегда статичны и их значения сохраняются между вызовами. В языке Си существуют два описателя для этих классов памяти: вСаССс и апСо. Всякая переменная в языке Си по умолчаникэ имеют статус автоматической, поэтому слово апСо используется крайне редко. Иерархическая структура блоков программы такова изображена на рис.

3.3 Вложенные области данных удобно размещать в стековой памяти. Это еще одна лента машины 'Гьюринга. В случае, если блок содержит обращения к себе грекурсия], то возможны такие ситуации: 180 1лобальпый контекст ЬЛОК О БЛОК 1 -- размсгцена переменная 1 Уничтожена переменная 1 Уничтожен массив В Рис. 3.3; Блочная структура программы БЛОК О БЛОК 1 БЛОК 1 .... БЛОК 1 Без выделения памяти для локальных объектов в блоках и процедурах их рекурсивное использование невозможно: каждый вызов процедуры требует нового набора омонимичных локальных переменных. Для того, чтобы блок стал элементом построения программы, он может быть помечен и выполняется путем перехода па эту метку.

Поскольку в Паскале нет полноценной блочной структуры, приведем пример на Си: шС х -- О;,~' Глобальная переменная шС ша1п(чоЫ),~ Блок, О ( х - 1;," ,Изменение глобальнои г: 1,О Блок 1 шС х -- 1;,' Локальная и х хх;, Присвоение локальной переменной значения омонимичной глобальной. Обраи1сние к глобальной ег квалифицируется символом л,,г 1,',У Ь'лок 2 шС у; 1 О Ь'.лок 3 1пС у — 1:,,' Локальная переменная :: у - у;;~,' Копирование значения переменной Л блока, 3 в псрсменнуо внеианего бтока 2 181 ,>'у Он)с)одн д не а!)девl Пде на")ало то! о конца, которым кончаегся начало? Козьма Прутков Структура, вызовов этой программы имеет вид БЛОК О БЛОК О БЛОК О БЛОК О БЛОК О БЛОК О БЛОК О начало выполнения блока О начало выполнения блока 1 конец выполнения блока 1 начало выполнения блока 2 начало выполнения блока 3 конец выполнения блока 3 конец выполнения блока 2 БЛОК 1 БЛОК 2 БЛОК 2 БЛОК 3 БЛОК 2 Соотвстствукпций пример для языка Паскаль возможен только для вложенных процедур и будет приведен позжсч Интересно., что структура т!'кета в издательской системе Ч~Х также блочная.

В качестве скобок используются ( и ). Лекция 24 3.4 Процедуры и функции Рассмотрим более совершенные средства организации программ: функции и процедуры. Их значение в том, что они, как и блоки, являются средством представления программ в виде логически связанных комгюнент (подпрограмм), выделение которых отражает связь п1>ограымы по данным и придает ей четко выраженную структуру,. легко кон"Гро)!ирисы!)'к) В том чист)г> и автоматически. К|)оые того, 01)ганизация в процедуры час!о встречающихся фрагментов программ сокращает размер программы и снижает вероятность ошибок, и, что самое главное, фактически вводит новые операторы в язык программирования, не требуя никаких изменении входного язь)ка и системы программирования, Каждый осмысленный набор процечур и функций фактически представляет собой )нине!)))ретатиг)нас рас)пире))))е языка программ!)р!)оа>)))л.

Во случаях, когда. процедуры и функции набора реализуют операции и отношения некоторого типа данных их можно считать программной реализацией этого типа. Такие типы данных, не имен)щие прямой аппаратной или программной поддержки, принято называть абстрикн)>)ыми. Процедуры являются одной и первых форм «товарного программирования» и представляют собой простейшую форму. программного прочукта, пригодную для повторного использования, продажи или распространения. Они позволян)т избежать дублирования кода в тексте программ. Проце;)уры, как правило, параметризуются с целью придания им универсальности, причем эта параметризация динамическая, .т. е. происходящая в период выполения »ро> раммь>, а нс этапе >п>м»и»я>Гии или препроцессир»ва»ия, когда Осу"ществляются»о Н становки или манипуляции с исходным текстом программы.

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