Главная » Просмотр файлов » И.Г. Головин, И.А. Волкова - Языки и методы программирования

И.Г. Головин, И.А. Волкова - Языки и методы программирования (1160773), страница 2

Файл №1160773 И.Г. Головин, И.А. Волкова - Языки и методы программирования (И.Г. Головин, И.А. Волкова - Языки и методы программирования) 2 страницаИ.Г. Головин, И.А. Волкова - Языки и методы программирования (1160773) страница 22019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Особенно этоотносится к третьей части учебника.1.2. Языки и основные парадигмыпрограммированияКак уже отмечалось, спектр применения современных компью­теров очень широк, поэтому общая совокупность разработанныхкомпьютерных программ весьма велика и с трудом поддается клас­сификации. Тем не менее, все программы (как и деятельность по ихсозданию) можно разделить на дна больших типа: программы «длясебя» и программы «для других».Создание программ «для себя» назовем (несколько условно)научно-развлекательным программированием. Люди создают про­граммы для развлечения (когда развлечением является сам процесспрограммирования, а не использование уже готовых программ),для изучения программирования (студенты, выполняющие заданияпрактикума работы на ЭВМ), для экспериментальных расчетов,демонстрирующих работоспособность математических моделей (фи­зики, математики, химики, биологи и т.д.), для решения каких-либосиюминутных задач (ученые, инженеры).При научно-развлекательном программировании число создателейпрограммы крайне невелико (как правило, один-два человека), так­же невелико число пользователей программы (как правило, толькоавторы и небольшое число коллег).

Такие программы невелики поразмеру (тысячи и реже несколько десятков тысяч строк), «живут»(т.е. активно используются) они недолго (дни, месяцы, реже годы)и в процессе жизни редко модифицируются.Языки научно-развлекательного программирования должныбыть легко изучаемыми, несложными для понимания и реализации.6Основной критерий их качества — удобство применения для соот­ветствующих целей (учебы, науки, развлечения).

Самые известныеи широко используемые до сих пор языки — Фортран, Бейсик,Паскаль.Создание программ «для других», т. е. программ, специальносоздаваемых в расчете на эксплуатацию пользователями, не имею­щими отношения к авторам, значительно отличается от научно­развлекательного. Такие программы называют программнымипродуктами, а процесс их создания — индустриальным програм­мированием.Число разработчиков программного продукта варьируется в ши­роких пределах (как правило, их десятки, а иногда и сотни), то жеотносится и к его размерам (сотни тысяч и миллионы строк кода),и к числу пользователей. Успешные программные продукты «живут»годы (иногда десятилетия) и в процессе использования активно мо­дифицируются (исправляются обнаруженные в ходе их эксплуатацииошибки, добавляются новые функции, выполняется адаптация кновому оборудованию или программному окружению).Языки индустриального программирования отличаются от язы­ков научно-развлекательного программирования.

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

Совокупность идей и понятий, определяющих стильпрограммирования, называется парадигмой программирования.Основополагающую роль в парадигме программирования играетименно язык программирования, поскольку именно на нем мы вы­ражаем то, как мы «мыслим».В настоящее время в индустриальном программировании активноиспользуются императивная и объектная парадигмы. Есть основанияполагать, что в ближайшее время начнет активно использоватьсяфункциональная парадигма.Рассмотрим вкратце эти парадигмы и соответствующие приме­ры программ.

Для иллюстрации приведем небольшие программы,решающие одну и ту же задачу, используя разные стили програм­мирования.Задача состоит в обращении входной последовательности. В стан­дартном канале ввода (обычно это клавиатура компьютера) заданапоследовательность символов. Требуется выдать в стандартный каналвывода элементы входной последовательности в обратном порядке(т. е. последний элемент входной последовательности первым, пред­последний — вторым и т.д.).

Будем считать, что эта последователь­ность «не очень длинная», точнее предполагаем, что все элементы7могут поместиться в оперативную память компьютера. Такое пред­положение упрощает решение задачи.Императивная парадигмаИмперативная парадигма (другое ее название процедурная)основана на фон-неймановской модели компьютера, названной вчесть предложившего ее математика Дж. фон Неймана. Модель фонНеймана до сих пор является основой большинства современныхархитектур, что обусловило популярность и доминирование импе­ративной парадигмы.Модель содержит три основных компонента:• центральное процессорное устройство (ЦПУ);• оперативная память (ОН);• устройства ввода-вывода (У ВВ).Оперативная память — это однородная последовательность ячеек.Каждая ячейка имеет свой номер, называемый адресом.

Адресацияначинается с нуля. ЦПУ считывает или записывает информациюв ячейку, используя ее адрес. Скорость доступа ко всем ячейкамодинаковая и она не зависит от адреса. Такие последовательности впрограммировании называют массивами. Ячейки могут содержатькак данные (числа или символы), так и команды (т.е. команды за­кодированы с помощью чисел).Устройства ввода-вывода позволяют обмениваться информациеймежду ЦПУ и окружающей средой.«Мозг» компьютера — ЦПУ состоит из двух частей: арифметикологического устройства (АЛУ), которое выполняет арифметическиеи логические команды (сложение, вычитание, умножение, деление,побитовые сдвиги, побитовая инверсия и т.д.), и устройства управ­ления, которое отвечает за порядок выборки, декодирование ивыполнение команд.

ЦПУ содержит ряд специальных ячеек (не изОП), называемых регистрами, каждая из которых выполняет своюроль в работе ЦПУ. Например, регистр команд содержит текущуювыполняемую команду, регистр адреса — адрес этой команды, а варифметико-логических регистрах находятся операнды арифметикологических команд.Команды ЦПУ подразделяются следующим образом:• пересылки между ОП и регистрами ЦПУ;• арифметико-логические команды;• команды управления, включающие в себя команды перехода и не­которые специальные команды (например, команду останова);• команды ввода-вывода — концептуально они похожи на командыпересылки (в некоторых архитектурах команды ввода-вывода от­сутствуют и реализуются как команды пересылки для выделеннойобласти ОП).8Команды выбираются из памяти и выполняются последователь­но одна за другой.

Исключение составляют команды условного ибезусловного переходов, содержащие адрес команды, которая будетвыполняться следующей, и позволяющие изменять нормальную по­следовательность выполнения команд.Основные понятия императивных языков программирования(ИЯП) представляют собой абстракции основных понятий фоннеймановской модели. В самом деле, любой ИЯП включает в себяпонятие переменной (в языке Паскаль — VAR X: Integer, в языкеС — i n t х), понятие операции (А * в — в любом языке), понятиеоператора (оператор цикла, оператор присваивания и др.).Понятие простой переменной абстрагирует понятие ячейкипамяти. Кроме простых переменных в императивном языке содер­жатся составные (т.

е. состоящие из других переменных) массивы изаписи (в ряде языков записи называются структурами). Понятиеоперации обобщает арифметико-логические команды. Неслучайнопочти для любой операции в ИЯП можно найти прототип — ко­манду в машинном языке. Понятие оператора абстрагирует общеепонятие команды. Операторы в императивном языке делятся натри группы:• оператор присваивания;• операторы управления;• операторы ввода-вывода.Основным оператором в любом императивном языке являетсяоператор присваивания, имеющий видV :=Егде V — это переменная; Е — выражение.Выражение — это средство комбинирования операций для вычис­ления некоторого значения (например, X * (Y+1)/2).

Выполнениеоператора присваивания состоит в вычислении значения выраженияЕ и пересылке вычисленного значения в ячейку (или ячейки) ОП,соответствующую переменной V. Таким образом, оператор при­сваивания в ИЯП может представляться последовательностью ко­манд пересылки и арифметико-логических команд (и даже командперехода). Это действительно основной оператор в императивныхязыках.Операторы управления (циклы, операторы выбора, перехода и т.п.)абстрагируют машинные команды перехода.Операторы ввода-вывода обобщают машинные команды вводавывода.Подробнее основные понятия ИЯП разбираются в гл. 5 нашегоучебника.Мы видим, что императивные языки концептуально близки ма­шинной архитектуре, поэтому программирование на таких языкахпозволяет весьма эффективно управлять поведением компьютеров.9Это объясняет популярность и распространенность ИЯП.

В инду­стриальном программировании в настоящее время доминируют либочисто императивные языки (такие, как С), либо языки со смешаннойобъектно-императивной парадигмой (C++, Java, С#, Delphi, ObjectiveС и многие другие).Решим нашу пробную задачу реверсирования входной после­довательности в императивном стиле на языке С. Для этого стиляхарактерно представление алгоритма решения задачи в виде последо­вательности шагов, каждый из которых в свою очередь представляетсяпоследовательностью более мелких шагов, и т.д., пока не получимшаг «размером» в один оператор.Многие задачи по обработке данных (в том числе и наша) сводятсяк следующим трем шагам:• подготовить данные;• обработать данные;• завершить.Условие нашей задачи позволяет хранить всю входную последо­вательность в ОП, поэтому шаг подготовки данных сводится к вводуданных в некоторую структуру данных, которая позволяет выбиратьданные и в прямом порядке, и в обратном (для обращения).Шаг обработки сводится к реверсированию этой структуры дан­ных, шаг завершения — к выводу обращенной структуры.Основной вопрос — какую структуру данных выбрать? Нашимтребованиям отвечает, например линейный двунаправленный спи­сок, однако такой встроенной структуры в языке С нет.

Работу сосписками в языке С должен реализовывать сам программист. Един­ственное понятие в языке С, соответствующее последовательностиоднородных элементов, это массив. Проблема в том, что массивыв языке С — это последовательности фиксированной и заранееизвестной длины. Для того чтобы упростить решение задачи, пред­положим, что «не очень длинная» последовательность содержит неболее 1024 символов. Тогда мы можем использовать массив символовсоответствующей длины.Прежде чем привести полное решение, заметим, что можно объ­единить шаг обработки и завершения: вместо обращения элементовв массиве, можно сразу перейти к выводу, только выводить элементыследует не с начала, а с конца.

В этом случае выполнение становитсянесколько более быстрым (вместо двух операторов цикла мы имеемодин в объединенном шаге).#include <stdio.h>#define MAX_ELEMENTS 1024char Input[MAX_ELEMENTS];int m a i n (){int current, count = 0;10while ((current = getcharO) != EOF)if (count == MAX_ELEMENTS) {fprintf(stderr, "Слишком много символов");return 1;} elseInput[count++] = current;for (int i = count-1; i >= 0; i--)putchar(Input[i] ) ;return 0;}Первая строка данной программы сообщает о включении инфор­мации о библиотеке стандартного ввода-вывода, в следующих двухстроках объявляются константа MAX_ELEMENTS (предельная длинавходной последовательности) и массив Input для хранения последова­тельности (заметим, что в языке С элементы массива индексируются снуля).

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

Тип файла
PDF-файл
Размер
3,27 Mb
Тип материала
Высшее учебное заведение

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

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