Чтение RSS
Рефераты:
 
Рефераты бесплатно
 

 

 

 

 

 

     
 
Технологии и языки программирования
   

Языки и технологии программирования
Введение
Внедрение ЭВМ во все сферы человеческой деятельности требует от специалистов
разного профиля овладения навыками использования вычислительной техники.
Повышается уровень подготовки студентов вузов, которые уже с первых курсов
приобщаются к использованию ЭВМ и простейших численных методов, не говоря уже о
том, при что выполнении курсовых и дипломных проектов применение вычислительной
техники становится нормой в подавляющем большинстве вузов.
Вычислительная техника используется сейчас не только в инженерных расчетах и
экономических науках, но и таких традиционно нематематических специальностях,
как медицина, лингвистика, психология. В связи с этим можно констатировать, что
применение ЭВМ приобрело массовый характер. Возникла многочисленная категория
специалистов - пользователей ЭВМ, которым необходимы знания по применению ЭВМ в
своей отрасли - навыки работы с уже имеющимся программным обеспечением, а так же
создания своего собственного ПО, приспособленного для решения конкретной задачи.
И здесь на помощь пользователю приходят описания языков программирования
высокого уровня (далее ЯВУ) и численные методы (далее ЧМ).
ЧМ разрабатывают и исследуют, как правило, высококвалифицированные
специалисты-математики. Для большинства пользователей главной задачей является
понимание основных идей и методов, особенностей и областей применения.
Однако, пользователи хотят работать с ЭВМ не только как с высокоинтеллектуальным
калькулятором, а еще и как с помощником в повседневной работе, хранилищем
информации с быстрым и упорядоченным доступом, а так же с источником и
обработчиком графической информации. Все эти функции современной ЭВМ я
предполагаю продемонстрировать в настоящей курсовой работе.
В первой части работы представлена программа по нахождению корней системы из
двух нелинейных уравнений методами Ньютона и простых итераций.
Во второй части моей работы представлена программа, демонстрирующая пользователю
всю мощь и многообразие графических возможностей современных ПК на примере
применения графических функций языка С++ с использованием VGA-графики.
В третьей части работы представлена программа “Электронной записной книжки”,
которая имеет и практическое значение для пользователей маломощных персональных
компьютеров и ПК блокнотов с малым дисковым ресурсом для которых нерентабельна
эксплуатация ПО типа Lotus Organizer и подобных ПО с мощным графическим
интерфейсом.
К моему сожалению из-за отсутствия необходимого справочного материала мне не
удалось продемонстрировать в третьей части SUPER VGA-графику, но это дело
недалекого будущего. Первая и вторая части работы выполнены с применение языка
С++ фирмы Borland версии 3.1 для DOS и WINDOWS, а третья часть выполнена на ЯВУ
“Турбо Паскаль” версии 7.0 для DOS и WINDOWS фирмы Borland с применением средств
TURBO VISION.
Теоретическая часть.
Этапы решения задачи на ЭВМ.
Наиболее эффективное применение ВТ нашла при проведении трудоемких расчетов в
научных исследованиях и инженерных расчетах. При решении задачи на ЭВМ основная
роль все-таки принадлежит человеку. Машина лишь выполняет его задания по
разработанной программе. роль человека и машины легко уяснить, если процесс
решения задачи разбить на перечисленные ниже этапы.
Постановка задачи. Этот этап заключается в содержательной (физической)
постановке задачи и определении конечных решений.
Построение математической модели. Модель должна правильно (адекватно) описывать
основные законы физического процесса. Построение или выбор математической модели
из существующих требует глубокого понимания проблемы и знания соответствующих
разделов математики.
Разработка ЧМ. Поскольку ЭВМ может выполнять лишь простейшие операции, она “не
понимает” постановки задачи, даже в математической формулировке. Для ее решения
должен быть найден численный метод, позволяющий свести задачу к некоторому
вычислительному алгоритму. Вкаждом конкретном случае необходимо выбрать
подходящее решение из уже разработанных стандартных.
Разработка алгоритма. Процесс решения задачи(вычислительный процесс)
записывается в виде последовательности элементарных арифметических и логических
операций, приводящей к конечному результату и называемой алгоритмом решения
задачи.
Программирование. Алгоритм решения задачи записывается на понятном машине языке
в виде точно определенной последовательности операций - программы. Процесс
обычно производится с помощью некоторого промежуточного языка, а ее трансляция
осуществляется самой машиной и ее системой.
Отладка программы. Составленная программа содержит разного рода ошибки,
неточности, описки. Отладка включает контроль программы, диагностику (поиск и
определение содержания) ошибок, и их устранение. Программа испытывается на
решении контрольных (тестовых) задач для получения уверенности в достоверности
результатов.
Проведение расчетов. На этом этапе готовятся исходные данные для расчетов и
проводится расчет по отлаженной программе. при этом для уменьшения ручного труда
по обработке результатов можно широко использовать удобные формы выдачи
результатов в виде текстовой и графической информации, в понятном для человека
виде.
Анализ результатов. Результаты расчетов тщательно анализируются, оформляется
научно-техническая документация.
Математические модели.
Основное требование, предъявляемое к математической модели, - адекватность
рассматриваемому процессу, явлению, т.е. она должна достаточно точно ( в рамках
допустимой погрешности) отражать характерные черты явления. Вместе с тем она
должна обладать сравнительной простотой и доступностью исследования.
Адекватность и сравнительная простота модели не исчерпывают предъявляемых к ней
требований. Необходимо обратить внимание на правильность оценки области
применимости математической модели. Например, модель свободно падающего тела, в
которой пренебрегли сопротивлением воздуха, весьма эффективна для твердых тел с
большой и средней плотностью и формой поверхности, близкой к сферической. Вместе
с тем, в ряде других случаев для решения задачи уже не достаточно известных из
курса физики простейших формул. Здесь необходимы более сложные математические
модели, учитывающие сопротивление воздуха и прочие факторы. Отметим, что успех
решения задачи в значительной степени определяется выбором математической
модели; здесь в первую очередь нужны глубокие знания той области, к которой
принадлежит поставленная задача. Кроме того, необходимы знания соответствующих
разделов математики и возможностей ЭВМ.
Численные методы.
С помощью математического моделирования решение научно-технической задачи
сводится к решению математической задачи, являющейся ее моделью. Для решения
математических задач используются основные группы методов: графические,
аналитические, численные.
Графические методы позволяют в ряде случаев оценить порядок искомой величины.
Основная идея этих методов состоит в том, что решение находится путем
геометрических построений. Например, для нахождения корней уравнения f(x)=0
строится график функции y=f(x), точки пересечения которого с осью абсцисс и
будут искомыми корнями.
При использовании аналитических методов решение задачи удается выразить с
помощью формул. В частности, если математическая задача состоит в решении
простейших алгебраических или трансцендентных уравнений, дифференциальных
уравнений и т.п., то использование известных из курса математики приемов сразу
приводит к цели. К сожалению, на практике это слишком редкие случаи.
Основным инструментом для решения сложных математических задач в настоящее время
являются численные методы, позволяющие свести решение задачи к выполнению
конечного числа арифметических действий над числами; при этом результаты
получаются в виде числовых значений. Многие ЧМ разработаны давно, однако при
вычислениях вручную они могли использоваться лишь для решения не слишком
трудоемких задач.
С появлением ЭВМ начался период бурного развития ЧМ и их внедрения в практику.
Только вычислительной машине под силу выполнить за сравнительно короткое время
объем вычислений в миллионы, миллиарды и более операций, необходимых для решения
многих задач. При счете вручную человеку не хватило бы жизни для решения одной
такой задачи. ЧМ наряду с возможностью получения результата за приемлемое время
должен обладать и еще одним важным качеством - не вносить в вычислительный
процесс значительных погрешностей.
Численные методы, используемые в данной работе.
При написании программы решения системы из двух нелинейных уравнений мною
использовались два известных и широко применяемых численных метода. Это метод
Ньютона и метод простых итераций.
Метод Ньютона. Этот метод обладает быстрой сходимостью и сравнительно хорошей
точностью вычислений. В случае одного уравнения F(x)=0 алгоритм метода был легко
получен путем записи уравнения касательной к кривой y=F(x). В основе метода
ньютона для системы уравнений лежит использование разложения функций
Fi(x1,x2,...xn) в ряд Тейлора, причем члены, содержащие вторые (и более высоких
порядков) производные, отбрасываются.
Пусть приближенные значения неизвестных системы уравнений
F1(x1,x2,...xn)=0,
F2(x1,x2,...xn)=0,
................(1)
Fn(x1,x2,...xn)=0,
(например, полученные на предыдущей итерации) равны соответственно a1,a2,...an.
Задача состоит в нахождении приращений (поправок) к этим значениям
x1,x2,....,xn, благодаря которым решение системы (1) запишется в виде:
xi=ai+x1, x2=a2+x2,...,xn,=an+xn.(2)
Проведем разложение левых частей уравнений (1) в ряд Тейлора, ограничиваясь лишь
линейными членами относительно приращений:
F1(x1,x2,...xn)F1(a1,...an)+
F2(x1,x2,...xn)F2(a1,...an)+
..............................................
Fn(x1,x2,...xn)Fn(a1,...an)+.
Поскольку в соответствии с (1) левые части этих выражений должны обращаться в
нуль, то приравняем нулю и правые части. Получим следующую систему линейных
алгебраических уравнений относительно приращений:
=-F1
=-F2(2)
............................
=-Fn
Значения F1,F2,...,Fn и их производные вычисляются при x1=a1, x2=a2,...xn=an.
Определителем системы (2) является якобиан:

J=
Для существования единственного решения системы (2) он должен быть отличным от
нуля на каждой итерации.
Таким образом, итерационный процесс решения системы уравнений (1) методом
Ньютона состоит в определении приращений x1,x2,...xn, к значениям
неизвестных на каждой итерации. Счет прекращается, если все приращения
становятся малыми по абсолютной величине: maxxi<. В методе
i
Ньютона также важен выбор начального приближения для обеспечения хорошей
сходимости. Сходимость ухудшается с увеличением числа уравнений системы.
В качестве примера рассмотрим использование метода Ньютона для решения системы
двух уравнений
F1(x,y)=0,(3)
F2(x,y)=0.
Пусть приближенные значения неизвестных равны a,b. Предположим, что якобиан
системы (3) при x=a; y=b отличается от нуля, т.е.:
J=
Тогда следующие приближения неизвестных можно аписать в виде
x=a-(F1

Величины, стоящие в правой части, вычисляются при x=a, y=b.
При программировании данного метода в качестве исходных данных задаются
начальные приближения неизвестных a,b, погрешности . Если итерации сойдутся, то
выводятся значения x,y; в противном случае происходит вывод x,y по мере работы
программы до прерывания ее пользователем.
Метод простой итерации.
Систему уравнений (1) представим в виде
x1=f1(x1...xn),
x2=f2(x1...xn),(4)
.............
xn=fn(x1...xn).
Алгоритм решения этой системы методом простой итерации напоминает метод Гаусса -
Зейделя, используемый для решения систем линейных уравнений.
Пусть в результате предыдущей итерации получены значения неизвестных x1=a1,
x2=a2,..., xn=an. Тогда выражения для неизвестных на следующей итерации имеют
вид
x1=f1(a1,a2,...,an),
x2=f2(x1,a2,...,an),
..................
xi=fi(xi,...,xi-1,ai,...,an),
..................
xn=fn(x1,...,xn-1,an).
Итерационный процесс продолжается до тех пор, пока изменения всех неизвестных в
двух последовательных итерациях не станут малыми, т.е. абсолютные величины их
разностей не станут меньшими заданного малого числа.
При использовании данного метода успех во многом определяется удачным выбором
начальных приближений неизвестных: они должны быть достаточно близкими к
истинному решению. В противном случае итерационный процесс может не сойтись.


Часть первая.
Программа решения системы нелинейных уравнений методами Ньютона и простых
итераций.

Общие сведения. Данная программа разработана как учебная и в силу этого не имеет
кодового обозначения предусмотренного ГОСТом 19.402-78 и представляет собой
исполняемый файл kursach.ехе.
Для функционирования программы необходим персональный компьютер с установленной
операционной системой MS-DOS 3.30 и выше или полностью совместимой с ней.
Исходный текст программы написан на языке программирования высокого уровня С++
фирмы Borland версии 3.1 для DOS и WINDOWS и содержится в файле kursach.срр в
форме пригодной к использованию его как текстового документа в среде ДОС.
Исходный текст программы приведен в приложении 1.в
Функциональное назначение. Данная программа решает систему нелинейных уравнений
методами Ньютона и простых итераций. Программа не является универсальной и
решает только заложенную в неё систему только из двух нелинейных уравнений.
Для расширения функциональности программы необходимо внести соответствующее
изменение в исходный текст как то: изменение исходной системы, производных,
якобиана системы.
Описание логической структуры. Блок-схема программы приведена в приложении 4.
При написании программы использовались математические методы, описанные в
теоретической части настоящей работы.
Функционально программа состоит из трех функций main, newton, iterac.
Взаимодействие функций между собой производится путем вызова из функции main
функций newton и iterac с передачей параметров, в качестве которых используются
переменные х и у в которые помещены начальные приближения , запрашиваемые у
пользователя со стандартного устройства ввода, для обеспечения исходных данных к
методам решения. После окончания расчета функции newton и iterac возвращают в
функцию main результаты расчета в виде пары чисел, которые представляют собой
корни системы уравнений, выводимые на стандартное устройство вывода для
дальнейшего анализа пользователем.
Используемые технические средства. Для функционирования программы пригодна
минимальная конфигурация ЭВМ на основе процессорной серии Ix86 фирмы Интел с 640
Кб оперативной памяти и накопителем на гибком магнитном диске.
Для вывода информации пригоден графический адаптер CGA и однотипный
видеомонитор.
Вызов и загрузка программы осуществляется как с гибкого диска так и с накопителя
типа “винчестер”. При любом вызове в командной строке ДОС следует ввести полное
имя исполняемого файла с указанием пути (если таковой не описан в переменной
PATH файла AUTOEXEC.BAT).
Входные и выходные данные. В качестве входных данных для программы используется
пара вещественных чисел представляющих собой приближенные значения корней
системы уравнений, решаемой программой. Числа могут быть как с дробной частью
так и без неё.
В качестве выходных данных программа выдает на стандартное устройство вывода
информации пару чисел, представляющих собой истинное решение системы уравнений в
вещественной форме. В случае если количество знаков после десятичной точки
велико, то вывод производится в экспоненциальной форме.
Часть вторая.
Демонстрационная программа графических функций языка С++.
Общие сведения. Данная программа разработана как учебная и в силу этого не имеет
кодового обозначения предусмотренного ГОСТом 19.402-78 и представляет собой
исполняемый файл grafika.exe и файлов поддержки:
Таблица 1.
Egavga.bgiбиблиотека взаимодействия с графическим адаптером
bold.chrбиблиотека жирного шрифта
euro.chrбиблиотека шрифта “euro”
goth.chrбиблиотека готического шрифта
lcom.chrбиблиотека шрифта типа “Комплекс”
litt.chrбиблиотека шрифта типа “small”
sans.chrбиблиотека шрифта типа “Сан_сериф”
scri.chrбиблиотека шрифта типа “Скрипт”
simp.chrбиблиотека шрифта типа “Симплекс”
trip.chrбиблиотека шрифта типа “Триплекс”
tscr.chrбиблиотека шрифта тапа “Триплекс_Скрипт”

Вышеприведенные файлы необходимо разместить в той же директории, что и основной
модуль.
Для функционирования программы необходима операционная система MS DOS 3.30 и
выше или полностью совместимой с ней.
Исходный текст программы написан на языке программирования высокого уровня С++
фирмы Borland версии 3.1 для DOS и WINDOWS и содержится в файле grafika.срр в
форме пригодной к использованию его как текстового документа в среде ДОС.
Исходный текст программы приведен в приложении 2.
Функциональное назначение. Программа предназначена для демонстрации основных
графических возможностей языка С++ в режиме VGA. Программа дает представление о
структуре графических возможностей языка и способах их применения на практике.
Функциональным ограничением программы является невозможность её эксплуатации на
компьютерах, оснащенных видеоадаптерами, стандарт которых отличается от EGA-VGA.
Описание логической структуры. Программа не несет в себе единого алгоритма в
привычном понимании и поэтому блок-схема не приводится. Методы, использованные
при написании программы, не являются математическими или прочими стандартными и
будут описаны ниже при описании соответствующих функций.
Структурно программа grafika.срр представляет ряд функций, которые кратко
описаны в таблице.2
Таблица.2наименование функции в программекраткое описание
mainглавная функция из которой вызываются все другие функции
demolineфункция демонстрации рисования линий с применением оператора
lineto различными цветами
democircleфункция демонстрации рисования окружностей произвольного радиуса
с произвольным выбором цвета и координат центра
demopixфункция рисования точек в произвольном месте экрана с произвольным
цветом
demopiesliceфункция рисования закрашенных секторов с произвольным
расположением на экране, произвольным выбором угла, радиуса, стиля
заполнения и цвета
demotextфункция демонстрации вывода текстовых данных в графическом режиме
всеми доступными в языке С++ стандартными способами и шрифтами c
применением библиотек шрифтов, перечисленных в таблице.1
mainwindowфункция формирования на экране графического окна с указанным
заголовком *header
drawborderфункция прорисовки границ графического экрана
statuslineфункция формирования статусной строки с выводом сообщения *msg
demoarcsфункция вывода на экран дуг (частей окружностей) с произвольным
начальным углом, цветом и координатами центра
demobarsфункция вывода на экран определенного числа одинаковых
прямоугольников с произвольно изменяющимся цветом
demo3dbarsфункция демонстрации вывода на экран прямоугольных
параллелепипедов произвольного размера, способа заполнения передней грани,
и цвета, а так же расположения на экране
diagramфункция демонстрации практического применения функции void
pieslice(...) языка С++ для построения круговой диаграммы по заданным
параметрам
endpageфункция демонстрации практического применения рисования линий и
секторов с циклически изменяющимися параметрами
endpage1функция практического применения операторов языка С++ для
построения простого калейдоскопа
endpage2завершающая страница, сообщающая пользователю о завершении работы
программы

Кроме функций mainwindow и statusline все остальные функции не имеют входных и
выходных параметров. Функция mainwindow в качестве параметра использует
символьную строку передаваемую ей вызывающей функцией, также действует и функция
statusline. Все функции вывода изображения кроме mainwindow, statusline,
drawborder вызываются из главной функции по порядку, а вышеперечисленные
вызываются из функций вывода изображения.
Каждая функция вывода изображения вызывает функцию формирования графического
окна с необходимым заголовком а также определяет визуальные границы экрана при
помощи функции drawborder и помещает в нижнюю часть экрана статусную строку при
помощи функции statusline с необходимой надписью. Затем начинается процесс
вывода на экран самого изображения, демонстрирующего работу той или иной
графической функции языка С++. После прекращения работы управление переходит в
главную функцию, откуда вызывается следующая функция вывода изображения.
В процессе работы программа использует файлы, приведенные в таблице.1 и в случае
их отсутствия или недоступности функционирование программы будет не полным
(библиотеки шрифтов) или полностью невозможным (библиотека взаимодействия с
видеоадаптером).
Используемые технические средства. Для правильного функционирования программы
необходимо применять следующие компоненты аппаратного комплекса: персональный
компьютер класса Ix86 с 640Кб ОЗУ, оснащенный одним накопителем на гибком
магнитном диске 720Кб или накопителем типа “винчестер”, а так же видеоадаптером
EGA или VGA (предпочтительно).Компьютер рекомендуется оснастить видеомонитором,
соответствующим видеоадаптеру.
Вызов и загрузка. Для правильного функционирования программы необходимо
разместитьосновной модуль и сопутствующие файлы в одной директории. Для вызова
программы необходимо в командой строке ДОС набрать полное имя основного модуля.
Никаких параметров в командной строке не требуется.
Входные и выходные данные. Данная программа является демонстрационной и не
использует входных данных от пользователя. Выходными данными являются результаты
работы функций по выводу изображений на экран. Параметры изображения сохраняются
только на экране в процессе работы программы (данной функции).
Часть третья
Программа электронной записной книжки
Общие сведения. Данная программа разработана как учебная и в силу этого не имеет
кодового обозначения предусмотренного ГОСТом 19.402-78 и представляет собой
исполняемый файл notebook.exe и создаваемые ею в процессе работы файлы данных
пользователя, структура которых приводится в приложении 3.
Для функционирования программы необходима операционная система MS DOS 3.30 и
выше или полностью совместимой с ней.
Исходный текст программы написан на языке программирования высокого уровня Турбо
Паскаль версии 7.0 фирмы Borland для DOS и WINDOWS с применением библиотеки
Turbo Vision и содержится в файле notebook.pas в форме пригодной к использованию
его как текстового документа в среде ДОС, и приведен в приложении 3.
Функциональное назначение. Данная программа предназначена для ведения файлов баз
данных подобных страницам адресной записной книжки и способна полностью заменить
собой ее бумажных предшественников. Информация из файлов программы применяется
только в “электронном” варианте и не может быть выведена на устройство печати
(данная функция в программе отсутствует). В процессе работы программа создает
файл данных и поэтому пользователю не требуется предварительно создавать его
самому.
Описание логической структуры. Программа не несет в себе определенного алгоритма
в стандартном понимании, а является объектно-ориентированной программой
(применены специфические конструкции языка - объекты).
В силу сложившихся традиций и особенностей языка Турбо Паскаль данная программа
представляет собой ряд процедур, выполняющих определенную роль и
взаимодействующих между собой в рамках исполнительного модуля. Каждая функция
выполняет определенное действие исходя из параметров полученных от других
функций или от пользователя.
Основной текст программы можно разделить на две части: первая - описание
переменных и объектов; вторая - реализация процедур. Ниже в таблице 3 приводятся
процедуры, применяемые в программе, а в таблице 4 - объекты.
Таблица 3tdlgwin.handleEvent
Tnotebook.FileOpenоткрывает файл данных
Tnotebook.FileSaveсохраняет файл данных
Tnotebook.ChangeDirизменяет текущий каталог
Tnotebook.DOSCallвременный выход в ДОС
Tinterior.ReadFileчитает содержимое файла данных в массив LINES
Tinterior.Drawвыводит данные в окно просмотра
Controlполучает команду из основного диалогового окна
Tinterior.HandleEventосновная процедура обработки событий и операций с
файлом данных
DEleteItemудаляет указанный в Location элемент данных
AddItemдобавляет новый или редактирует имеющийся элемент данных
SearchItemосуществляет поиск необходимого элемента данных по контексту
(первые символы)
Tnotebook.Workсоздает окно, в которое в последствии будут выводиться
данные
Tnotebook.HandleEventобработчик событий программы связанных с различными
объектами
Tnootebook.InitMenuBarсоздание верхнего Bar-меню
Tnotebook.InitStatusLineформирование строки статуса


таблица 4.Tworkwinобъект-потомок от Twindow - стандартного объекта
ТурбоВижн создает рамочное окно с полосами прокрутки для управления
встроенным в него объектом Tinterior
Tdlgwinобъект-потомок от Tdialog - стандартного объекта ТурбоВижн создает
диалоговое окно для выбора режима работы
Tinteriorобъект-потомок от Tscroller - стандартного объекта ТурбоВижн
обуславливает внутреннюю часть рамочного окна Tworkwin, создает
прокручиваемое окно с записями из файла данных и с помощью диалогового
окна Tdlgwin управляет работой с этими записями
Tnotebookоъект-потомок от Taplication стандартного объекта ТурбоВижн
обеспечивающего внешний вид прикладной программы.

Используемые технические средства. Для правильного функционирования программы
необходимо применять следующие компоненты аппаратного комплекса: персональный
компьютер класса Ix86 с 640Кб ОЗУ, оснащенный одним накопителем на гибком
магнитном диске 720Кб или накопителем типа “винчестер”, а так же видеоадаптером
EGA или VGA (предпочтительно).Компьютер рекомендуется оснастить видеомонитором,
соответствующим видеоадаптеру.
Вызов и загрузка. Для вызова программы необходимо в командой строке ДОС набрать
полное имя основного модуля. Никаких параметров в командной строке не требуется.
Входные и выходные данные. Входными и выходными данными для программы является
файл (файлы) данных пользователя и выводит информацию, содержащуюся в них на
экран дисплея.
Приложения
приложение 1
#include
#include
//описание переменных, используемых в программе
double pi=3.14,a=1.8,b=-2.0,c=0.1,d=1.6,e=0.9,eps=0.000001;
int i=0;
double x,y;
//описания функций решения методами Ньютона и простых итераций
extern double newton(double xn,double yn);
extern double iterac(double xn,double yn);
int main(void)
{
//запрос начального приближения у пользователя
scanf("%f",&x);
scanf("%f",&y);
//вывод результатов через вызовы функций на экран
printf ("Окончательное решение по методу Ньютонаn");
printf ("%gt%gn", newton(x,y));
printf ("Окончательное решение по методу итерацийn");
printf ("%gt%gn", iterac(x,y));
return (0);
}
//функция решения системы уравнений методом ньютона
double newton(double xn,double yn)
{
double f1,f2,xxn,yyn;
double df1dx,df1dy,df2dx,df2dy,dxy;
do
{
i++;
//описания исходных ураванений
f1=sin(xn+a)+b*yn+c;
f2=cos(yn+d)+e*xn;
//производные
df1dx=cos(xn+a);
df1dy=b;
df2dx=e;
df2dy=-sin(yn+d);
//якобиан системы
dxy=df1dx*df2dy-df1dy*df2dx;
//очередное значение х
xxn=xn-((f1*df2dy-f2*df1dy)/dxy);
//очередное значение y
yyn=yn+((f1*df2dx-f2*df1dx)/dxy);
//проверка точности решения и окончания счета
if (fabs(xxn-xn) //изменение текущих значений переменных х и у xn=xxn; yn=yyn;
}
while (1);
b: return (xxn,yyn);
}
//решение системы уравнений методом простых итераций
double iterac(double xi, double yi)
{
double xxi,yyi;
do
{
i++;
//явное выражение переменной x
xxi=-cos(yi+d)/e;
//явное выражение переменной y
yyi=-(sin(xi+a)+c)/b;
//проверка точности решения и ококнчания счета
if (fabs(xxi-xi) //изменение текущих значений
xi=xxi;yi=yyi;
}
while(1);
c: return (xxi,yyi);
}


Приложение 2

//
#include
#include
#include
#include
#include

   
Turbo C++ Programer`s guide
   

Введение
Документ "Начало работы" содержит обзор всего комплекта документации к Turbo C++. Информация о том, как с наибольшей эффективностью использовать Руководства по Turbo C++, содержится во введении и главе 2 этого документа.
Данное руководство содержит материалы для углубленного изучения программирования и предназначено для тех, кто уже хорошо умеет программировать (на C, либо на другом языке программирования). Здесь содержится справочник по языку C, перекрестные ссылки по библиотеке исполняющей системы и информациЯ по программированию с использованием потоков C++, моделей памяти, плавающей точки, оверлеев, видео-функций, интерфейса с языком ассемблера, а также сообщения об ошибках исполняющей системы и компилятора.
Прочесть документ "Начало работы" следует, если:
1. Вы ранее никогда не программировали ни на одном языке.
2. Вы ранее программировали, но не на C, и желаете прочесть введение в язык C.
3. Вам нужна информация о том, как установить на компьютере Turbo C++.
В Руководстве пользователя находится информация об интегрированной среде Turbo (включая редактор), администраторе управляющей системы, компиляторе командной строки, дополняющих Turbo C++ утилитах и макроязыке редактора Turbo.
Справочник по библиотеке содержит в алфавитном порядке листинг функций и глобальных переменных Turbo C++.
Содержание данного руководства
Глава 1:"Стандарт языка Turbo C++" описывает язык Turbo C++. Здесь приводятся все отличия от стандарта ANSI C. Данная глава также включает справочник по языкам C и C++.
Глава 2: "Перекрестные ссылки по библиотеке управляющей системы" содержит информацию об исходных кодах библиотеки исполняющей системы. Здесь также описаны файлы заголовков и приводятся перекрестные ссылки по библиотеке управляющей системы, организованные по субъектам библиотеки. Например, если вы хотите выяснить, какие функции относятся к графике, вы должны обратиться к разделу данной главы "Графика".
Глава 3:"Потоки C++" рассказывает, как использовать библиотеку потоков C++.
Глава 4:"Модели памяти, операции с плавающей точкой и оверлеи" рассматривает модели памяти, программирование со смешанными моделями памяти, вычисления с плавающей точкой и оверлеями.
Глава 5:"Видео-функции" посвящена обработке в Turbo C++ текстов и графических изображений.
Глава 6:"Интерфейс с языком ассемблера" говорит о том, как нужно писать программы на языке ассемблера, чтобы они правильно работали при вызове из программ на Turbo C++.
Глава 7: "Сообщения об ошибках" перечисляет и объясняет все фатальные ошибки, ошибки и предупреждения исполняющей системы и компилятора, а также дает возможные рекомендации по их устранению.
Приложение А: "Стандарты ANSI, зависимые от реализации" описывает те аспекты стандарта ANSI C, которые были определены с некоторой степенью свободы или не были определены вообще в стандарте ANSI. Следовательно, эти аспекты могут варьироваться в зависимости от конкретной реализации. Данное приложение сообщает о том, как Turbo C++ поступает в отношении каждого из этих аспектов.
Глава 1 Стандарт языка Turbo C++
В данной главе дается подробное справочноеруководство программиста по языку Turbo C++. Оно не является руководством по изучению языка, а скорее формальным описанием языков C и C++ в их реализации программным продуктом Turbo C++. В данной главе описываются грамматические правила записи структуры фраз и лексики языка, а также дается подробное изложение имеющихся директив препроцессора. При формулировке синтаксиса используется модифицированная запись Бэкуса-Науэра,при необходимости сопровождаемая кратким описанием и примерами программ.
Turbo C++ реализует стандарт ANSI C, разработанный техническим комитетом X3J11 между июнем 1983 и декабрем 1988 гг., с некоторыми расширениями, оговариваемыми вданномтексте. Вы имеете возможность устанавливать опции компилятора, которые будут предупреждать вас о том, чтотакие расширения встретилисьпри работе компилятора. Вы можете также настроить компилятор таким образом, чтобы он рассматривал ключевые слова расширений Turbo C++ в качестве нормальных идентификаторов (см. Главу 4,"Компилятор командной строки", в Руководстве пользователя).
Существуют также "согласующие" расширения, включаемые посредством директив #pragma, предлагаемых стандартом ANSI C, предназначенные для работы с нестандартными, зависимыми от конкретной реализации средствами языка.
Turbo C++ является также полной реализацией AT&TC++ версии 2.00, объектно-ориентированного надмножества C, разработанного Бьерном Строструпом из AT&T Bell Laboratories. Помимо того,что C++ дополняет C многими новыми средствами и возможностями, он также и отличен от него в большей или меньшей степени. В настоящей главе содержатся замечания по этим отличиям. Все средства языка Turbo C++,имеющие отклонения от C++, более подробно рассматриваются, начиная со страницы 98.
Синтаксис и терминология
Синтаксические определения состоят из имени определяемого в настоящий момент и не определенного где-либо выше термина, за которым следует двоеточие (:). Альтернативы обычно следуют за этим в отдельных строках, но могут также помещаться и в одной строке; в таком случае им предшествует фраза "одно из". Например,
внешнее-определение:
определение-функции
объявление
восьмеричная цифра: одно из
0 1 2 3 4 5 6 7
Опциональные элементы конструкции заключаются в угловые скобки:
целочисленный-суффикс:
суффикс-целого-без-знака <суффикс-длинного-целого>
В данной главеслово "аргумент" везде используется для обозначения действительного значения, передаваемогопри вызове функции. "Параметр" обозначает переменную, определяемую в заголовке функции, которая будет содержать в себе передаваемое значение.
Грамматические правила структуры фраз и лексики языка
Грамматические правила лексикиязыка Turbo C++ описаны на стр. 5 - 58 оригинала; грамматические правила структуры фраз Turbo C++ описаны на стр. 58 - 98 оригинала.
Грамматические правила лексики языка рассматриваются с точки зрения существованияразличных категорий слово-ориентированных языковых единиц,называемых лексемами, распознаваемых компилятором. Грамматические правила структуры фраз подробно определяют допустимые способы группирования этих лексем в выражения, операторы и прочие смысловые единицы языка.
Лексемы Turbo C++ образуются из последовательности операций, выполняемых с вашейпрограммой компилятором и препроцессором языка.
Программа на Turbo C++ начинает свое существованиекак последовательность ACSII-символов,представляющих собой ее исходный код, создаваемый нажатиями клавиш при работе в подходящем текстовом редакторе (например, в собственном редакторе Turbo C++). Базовая программная единица в Turbo C++ представляет собой файл. Обычно такойфайл соответствует файлу DOS, находящемуся в оперативной памяти или на диске и имеющему созданное по правилам DOS имя и расширение.C или. CPP.
Сначала выполняется просмотр текста программы препроцессором, который ищет в нем специальные директивы препроцессора (см. стр. 133 оригинала). Например, директива #include <включаемый_файл> добавляет (или включает) впрограмму перед фазой компиляции содержимое файла <включаемый_файл>. Препроцессор также выполняет расширение любых встреченных в программах или файлах включения макросов.
Пробельные символы
На фазе компиляции, отвечающей за распознавание лексем, файл исходного кода программы подвергается лексическому анализу (т.е. разбиению налексемы и пробелы). Пробельными будут обобщенно именоваться собственно символы пробелов, горизонтальные и вертикальныесимволы табуляции, символы новой строки и комментарии. Пробельные символы служат для обозначения мест начала и конца лексем, и сверх этой функции, для исключения из компиляции всех избыточных символов, не входящих в состав лексем. Например, следующие две последовательности,
int i; float f;
и
int i ;
float f;
лексически идентичны, а их лексический анализ в обоих случаях дает шесть лексем:
int i ; float f ;
ASCII-символы, обычно рассматриваемые как пробельные, могут входить в строки литералов, и в данном случаебудут защищены от нормального процессаразбиения на лексемыи пробелы; другими словами, они станут представлять собой часть строки:
char name[] = "Borland International";
разбивается на семь лексем, включая и лексему строки литералов "Borland International".
"Склеивание" строк символом
Имеется специальный случай, когда передпоследним символом новойстрокинаходится символ наклонной черты влево (). В таком случае символы наклонной черты влево и символ новой строки отбрасываются, что позволяет рассматривать две физические строки текста как единое целое.
"Borland
International"
будет рассматриваться как "Borland International" (дополнительную информацию см. на стр. 17 оригинала, "Строковые литералы"
Комментарии
Комментарии представляют собой текстовые части, предназначенные для аннотирования программы.Комментарии используются исключительно самим программистом; передлексическим анализом они исключаются из исходного текста программы.
Существует два способа указания на комментарии: традиционный метод C и метод C++. Они оба поддерживаются Turbo C+ +, и кроме того, имеется дополнительное, опциональное расширение, позволяющее организовывать вложенные комментарии. Разрешается смешанное и комбинированное использование комментариев любого типа в программах C и C++.
Комментарии C
Традиционный комментарий C представляет собой любую последовательность символов, помещаемую послепары символов/*. Признаком конца комментарияслужитперваяпара символов* /, встретившаяся после исходной пары /*. После выполнения макрорасширения вся эта последовательность целиком, включая четыре разделительных символа комментария,заменяется на один пробел. Отметим, чтонекоторые реализации C удаляют комментарии, не заменяя их на пробелы.
Turbo C++ не поддерживает не-мобильной стратегии вставки лексем с помощью /**/. Вставка лексем в Turbo C++ выполняетсяпри помощи заданной ANSI пары символов ##, следующим образом:
#define VAR(i,j) (i/**/j) /* не будет работать */ #define VAR(i,j) (i##j) /* в Turbo C++ будет работать */
#define VAR(i,j) (i ## j) /* также будет работать */
В Turbo C++
int /* объявление */ i /* как счетчика */;
после лексического анализа даст
int i ;
то есть три лексемы: Int I ;
Вложенные комментарии
ANSI C не разрешаетвложенность комментариев. Попытка комментировать приведенную выше строку в виде
/*int /* объявление */ i /как счетчика */; */
окончится неудачей, поскольку область действия первой пары /* будет ограничена первой парой */. Это даст в результате лексического анализа
i ; */
что приведет к генерированию состояния синтаксической ошибки.
По умолчанию Turbo C++ не позволяет вложенность комментариев, однако это умолчание может быть переопределено опцией компилятора. Разрешить вложенность комментариев можно либо при помощи опции -C (компилятора командной строки), либо через меню интегрированной среды программирования O!C!Source Options.
Комментарии C++
Для создания вкоде C комментариеввы можете также использовать символы //. Это средство специфично для Turbo C++.
C++ позволяетсоздание размещаемого в одной строке комментария при помощи двух подряд следующихсимволов наклонной черты(//). Такой комментарий может начинаться в любой позиции строки, и включает в себя все, что расположено до символа новой строки:
class X (* // это комментарий
... *);
Разделители комментариев и пробелы
В редких случаях пробелы перед /* и // или после */, хотя и не являются синтаксически обязательными, нопозволяют избежать проблем, связанных с мобильностью. Например, код C++
int i = j//* деление на k*/k;
+m;
при лексическом анализе дастint i = j +m; а не
int i = j/k;
+m;
как это можно было бы ожидать по традиционным соглашениям C. Более удобочитаемая форма
int i = j/ /* деление на k*/ k;
+m;
позволяет избежать этой проблемы.
Лексемы
Turbo C++ распознает лексемы шести классов: ключевые слова, идентификаторы, константы, строковые литералы, операции и знаки пунктуации (также называемые разделителями). Формальное описание лексемы имеет следующий вид:
лексема:
ключевое слово
идентификатор
константа
строковый литерал
операция
знак пунктуации
Во время лексического анализа исходного кода лексемы выделяются методом, при котором из строки символов обязательно выбирается лексема максимальной длины. Например, слово external будетрассматриваться как отдельный идентификатор, а некак ключевое слово extern, за которым следует идентификатор al.
Ключевые слова
Ключевыми словами называются слова, зарезервированныедля специальных целей, которые не должны использоваться в качестве обычных имен идентификаторов. В следующих двух таблицах приводятся ключевые слова Turbo C++. Вы можете использовать опции компилятора командной строки (или опции в IDE), чтобы выбрать только ключевые словаANSI, ключевые слова UNIX и т.д. Информацию об этих опциях см. в главах 1, "Справочник IDE", и 4, "Компилятор командной строки" в Руководстве пользователя.
Все ключевые слова Turbo C++ Таблица 1.1
asm _ds interrupt short
auto else _loadds signed
break enum long sizeof
case _es near _ss
catch _export new static
cdecl extern operator struct
char far pascal switch
class float private template
const for protected this
continue friend public typedef
_cs goto register union
default huge _regparam unsigned
delete if return virtual
do inline _saverages void
double int _seg volatile
while
Расширения Turbo C++ относительно ANSI C Таблица 1.2
cdecl _export _loadds _saveregs
_cs far near _seg
_ds huge pascal _ss
_es interrupt _regparam
Ключевые слова, специфичные для C++ Таблица 1.3
catch friend operator public
class inline private template
delete new protected this
virtual
Регистровые псевдопеременные Turbo C++ Таблица 1.4
_AH _BL _AL _BP _AX _BX _BH _CH _SP _CL _DL _CX _DX _DH _FLAGS _DI _SI
Идентификаторы
Формальное определение идентификатора имеет следующий вид:
идентификатор:
не-цифра
идентификатор не-цифра
идентификатор цифра
не-цифра: одно из
a b c d e f g h i j k l m n o p q r s t u v w x y z _
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
цифра: одно из
0 1 2 3 4 5 6 7 8 9
Ограничения состава и длины идентификаторов
Идентификаторы представляют собой произвольные имена любой длины, присваиваемыеклассам, объектам, функциям,переменным, определяемым пользователем типам данных ит.д. Идентификаторы могут содержать буквы от A до Z и от a до z, символ подчеркивания (_) и цифры от 0 до 9. Существует только два ограничения:
1. Первый символ должен являться буквой или символом подчеркивания.
Отметим, что идентификаторы в Turbo C++ значимы до любой длины.
2. По умолчанию Turbo C++ распознает только первые 32 символа в качестве значимых. Число значимых символов может быть уменьшено при помощи меню или опций командной строки, но не может быть увеличено. Используйте опцию -In TCC, либо опцию меню O!C!S!Identifier Length, где 1 <= n <= 32.
Идентификаторы и учет регистра
Идентификаторы в Turbo C++ учитывают регистр, и таким образом, Sum, sum и suM - это различные идентификаторы.
Глобальные идентификаторы, импортируемые из других модулей, подчиняются тем же правилам наименования и длины значимости имени, что и обычные идентификаторы. Однако, Turbo C ++ включает в себя опциюподавления учета регистра, обеспечивающую совместимость при компоновке с модулями на языках, не учитывающих регистр. Можно отменить учет регистра для глобальных идентификаторов, установив в диалоговом поле Linker в соответствующее состояние поле Options ! Linker ! Case-Sensitive Link,либо использовав опцию командной строки /C при запуске TLINK. В таком режиме глобальные имена Sum и sum рассматриваются как идентичные, и при компоновке может быть выдано предупреждение "Duplicate symbol" ("Повторяющиеся символические имена").
Исключение из этих правил составляютидентификаторы типа pascal, которые при компоновке всегда преобразовываются к верхнему регистру.
Уникальность и контекст идентификаторов
Хотя имена идентификаторов могут быть произвольными (в пределах изложенных правил), в случае использования одного и того же имени для более чем одногоидентификаторав пределах одного контекста и разделении имиодногопространства имен возникает ошибка. Повторение имен в различных пространствах имен допустимо всегда, независимо от контекста. Правила рассматриваютсяпри обсуждении контекста, начиная со стр. 29 оригинала.
Константы
Константами называются лексемы, представляющие собой фиксированные числовые или символьные значения. TurboC++ поддерживает четыре классаконстант: сплавающей точкой, целочисленные, перечислимого типа и символьные.
Тип данных константы определяется компилятором по таким ключевым характеристикам, как числовое значениеи формат, используемые при записи константы в исходном коде. Определение формата константы показано в следующей таблице:
Константы - определение формата Таблица 1.5
константа:
константа-с-плавающей-точкой
целочисленная-константа
перечислимая-константа
символьная-константа
константа-с-плавающей-точкой:
дробная-константа <экспоненциальная-часть> <суф-
фикс-константы-с-плавающей-точкой>
последовательность-цифр экспоненциальная часть <суффикс-константы-с-плавающей-точкой>
дробная константа:
<последовательность-цифр>.<последовательность-цифр>
<последовательность-цифр>.
экспоненциальная-часть:
e <знак> последовательность-цифр
E <знак> последовательность-цифр
знак: одно из
+ -
последовательность-цифр:
цифра
последовательность-цифр цифра
суффикс-константы-с-плавающей-точкой: одно из
f l F L
целочисленная-константа:
десятичная-константа <суффикс-целочисленной-константы>
восьмеричная-константа <суффикс-целочисленной-константы>
шестнадцатиричная-константа <суффикс-целочислен-
ной-константы>
десятичная-константа:
цифра-кроме-нуля
десятичная-константа цифра
восьмеричная-константа:
0
восьмеричная-константа восьмеричная-цифра
шестнадцатиричная-константа:
0 x шестнадцатиричная-цифра
0 X шестнадцатиричная-цифра
шестнадцатиричная-константа шестнадцатиричная-цифра
цифра-кроме-нуля: одно из
1 2 3 4 5 6 7 8 9
восьмеричная-цифра: одно из
0 1 2 3 4 5 6 7
шестнадцатиричная-цифра: одно из
0 1 2 3 4 5 6 7 8 9
a b c d e f
A B C D E F
суффикс-целочисленной-константы:
суффикс-константы-без-знака <суффикс-длинной-константы>
суффикс-длинной-константы <суффикс-константы-без-знака>
суффикс-константы-без-знака: одно из
u U
суффикс-длинной-константы: одно из
l L
перечислимая-константа:
идентификатор
символьная-константа:
последовательность-символов-c
последовательность-символов-c:
символ-c
последовательность-символов-c символ-c
символ-c:
любой символ из исходного набора символов, за исключением символов одинарной кавычки ('), обратной наклонной черты () или управляющей-последовательности символа новой строки.
управляющая-последовательность: одно из
* ' ? \
a bf n
o ooooo r
t vXh... xh...
Целочисленные константы
Целочисленные константы могут быть десятичными (основание системы счисления 10), восьмеричными (основание 8)или шестнадцатиричными (основание 16). При отсутствии переопределяющих суффиксов типданныхцелочисленной константы выводится из ее значения, как показано в таблице 1.6. Отметим, что правила для десятичных и не-десятичных констант различны.
Десятичные константы
Допустимыми являются десятичные константы величиной от 0 до 4,294,967,295. Константы, выходящие за указанные пределы, вызывают ошибку. Десятичныеконстанты не могут иметь ведущие нули. Целочисленнаяконстанта с ведущим нулем рассматриваетсякак восьмеричная. Таким образом,
int i = 10; /* десятичное 10 */
int i = 010; /* десятичное 8 */
int i = 0; /* десятичное 0 = восьмеричному 0! */
Отрицательные константы- это просто константы без знака, к которым применена унарная операция минус.
Восьмеричные константы
Все константыс ведущим нулем рассматриваются как восьмеричные.Если восьмеричная константа содержит недопустимые цифры 8 или 9, выдается сообщение об ошибке. Ошибка будет также выдаваться при превышении восьмеричной константой значения 037777777777.
Шестнадцатиричные константы
Все константы, начинающиеся с 0x (или 0X) рассматриваются как шестнадцатиричные. Шестнадцатиричные константы,превышающие 0xFFFFFFFF, приводят к ошибке.
Суффиксы длинных констант и констант без знака
Если законстантой следует суффикс L (или l), то такая константа будет представлена как длинная (типа long).Аналогичным образом, суффикс U (или u) делает константу константой без знака (unsigned). Если численное значение константы превышает десятичное 65,535, независимо от используемого основаниясистемы счисления, то такая константа будет иметь тип unsigned long. Суффиксы можно указывать для одной и той же константы в произвольном порядке и набирать в любом регистре: ul, lu, UL и т.д.
Тип данных константы при отсутствии каких-либо суффиксов вообще (U, u, L или l) берется из следующей таблицы,первыйже, который удовлетворяет требованиям величины этой константы:
-----------------------------------------------------------
десятичная int, long int, unsigned long int
восьмеричная int, unsigned int, long int, unsigned long int
шестнадцатиричная int, unsigned int, long int, unsigned long int
-----------------------------------------------------------
Если константа имеет суффикс U или u, то ее тип данных будет первым из типов unsigned int, insigned long int, который удовлетворит требованиям ее величины.
Если константа имеет суффикс L или l, то ее тип данных будет первым из типов long int, unsigned long int, который удовлетворит требованиям ее величины.
Если константа имеет оба суффикса u и l (ul, lu, Ul, lU,uL, Lu, LU или UL), то она будет иметь тип данных unsigned long int.
В таблице 1.6 сведены представления целочисленных констант для всех трех систем счисления. Указанные типы данных предполагают отсутствие переопределяющих суффиксов L или U.
Целочисленные константы Turbo C++ без L или U Таблица 1.6
Десятичные константы
0 до 32,767 int
32,768 до 2,147,483,647 long
2,147,483,648 до 4,294,967,295 unsigned long
> 4294967295 Генерируется ошибка
Восьмеричные константы
00 до 077777 int
0100000 до 0177777 unsigned int
02000000 до 017777777777 long
020000000000 до 037777777777 unsigned long
> 037777777777 Генерируется ошибка
Шестнадцатиричные константы
0x0000 до 0x7FFF int
0x8000 до 0xFFFF unsigned int
0x10000 до 0x7FFFFFFF long
0x80000000 до 0xFFFFFFFF unsigned long
> 0xFFFFFFFF Генерируется ошибка
Символьные константы
Символьная константа - этоодин или более символов, заключенных в одинарные кавычки, например 'F', '=', 'n'. В C константы изодногосимвола имеюттип Int и имеют внутреннее представление16 бит, в то времякак старший байт слова заполняется нулем или знаком. В C++ константа из одного символа имеет тип char. Многосимвольные константы как в C, так и в C ++, имеют тип данных Int.
Управляющие последовательности
Для введения управляющих последовательностей,позволяющих получить визуальное представление некоторых не имеющих графическогоаналога символов, используется символ обратной наклонной черты (). Например, в качестве одного символа новой строки можно записать константу n.
Обратнаянаклонная черта используетсяс восьмеричными или шестнадцатиричными числами для представления ASCII-символами управляющего кода, соответствующемуэтому значению; например, '3' вместо Ctrl-C или 'x3F' вместо вопросительного знака. В управляющей последовательности может содержаться строка длиной до трех восьмеричных илилюбое число шестнадцатиричных цифр,при условии, чтоданноезначение лежит в допустимом для типа данных char диапазоне (от 0 до 0xff для Turbo C++). Большие значения ведутк появлению ошибки компиляции "Numeric constant too large" ("числовая константа слишком велика"). Например, восьмеричное число 777 больше максимально допустимого значения 377, и вызовет генерирование ошибки. Первое же не-восьмеричноеили не-шестнадцатиричное значение, встреченное в восьмеричнойили шестнадцатиричной управляющей последовательности, означает конец данной последовательности.
В исходной версии Turbo C допускалось только три цифры шестнадцатиричной управляющей последовательности. Новые правила ANSI C, реализованные в Turbo C версии 2.0 и TurboC++, могут вызвать проблемы со старыми кодами, предполагающими преобразование только первых трех символов. Например, при использовании версии Turbo C 1.x для определения строки со звуковым сигналом (код ASCII 7), после которого следуют числовые символы, программист может написать:
printf("x0072.1Простая операционная система");
Предполагается, что эта строка будет интерпретирована как x007 и "2.1Простая операционная система". Однако, Turbo C++ (и TurboC версии 2.0) компилируют ее как шестнадцатиричное число x0072 и литеральную строку ".1Простая операционная система".
Чтобы избежать этих проблем, перепишитеваш код следующим образом:
printf("x007" "2.1Простая операционная система");
Неоднозначность может возникнуть также и в случае, когда за восьмеричной управляющей последовательностью следует невосьмеричная цифра. Например, поскольку 8 и 9не являются допустимыми восьмеричными цифрами, константа 258 будет интерпретирована какдвухсимвольнаяконстанта, составленная из символов 25 и 8.
В следующей таблице показаны допустимые управляющие последовательности.
Управляющие последовательности Turbo C++ Таблица 1.7
Последовательность Значение СимволыВыполняемая функция
a b f n r t v \ 0x07BELЗвуковой сигнал 0x08BSЗабой 0x0CFFПеревод бланка 0x0ALFНовая строка (перевод строки) 0x0DCRВозврат каретки 0x09HTТабуляция (горизонтальная) 0x0BVTВертикальная табуляция 0x5cОбратная наклонная черта
Для фактического представления символа ASCII "обратная наклонная черта", используемого например в команде DOS PATH, следует записывать ее как \.
' 0x27 ' Одинарная кавычка (апостроф)
" 0x22 " Двойная кавычка
? 0x3F ? Вопросительный знак
OлюбыеO = строка до трех восьмиричных цифр
xH любыеH = строка шестнадцатиричных цифр
XH любыеH = строка шестнадцатиричных цифр
-----------------------------------------------------------
Специальные двух-символьные константы Turbo C++
Turbo C++ поддерживает также двух-символьные константы (например, 'An', 'nt' и '0707'). Эти константы представлены 16-битовыми значениями типаInt, где первый символ расположен в младшем байте, а второй символ - в старшем байте. Эти константы не могут быть перенесены на другие компиляторы C.
Символьные константы со знаком и без знака
В C одно-символьные константы, такие как 'A', 't' и ' 007', такжепредставлены 16-битовыми значениями типа Int. В этом случае происходит расширение младшего байта в старший байт по знаку; такимобразом, еслизначение превышает 127 (основание 10), то старший байт устанавливается равным -1 (=0xFF). Это свойство можно отменить, объявив, что по умолчанию тип char является unsigned (при помощи опции -R TCC, либо выбором в меню Options ! Compiler ! CodeGeneration опцию Unsigned Characters), чтоприведет к обнулению старшего байта независимо от значения младшего байта.
Широкие символьные константы (только C)
Символьная константа, которой предшествует L, называется широкой символьнойконстантой и имеет тип данных wchar_t (интегральный тип, определяемый в stdef.h). Например,
x = L 'AB';
Константы с плавающей точкой
Константа с плавающей точкой состоит из шести частей:
- десятичное целое
- десятичная точка
- десятичное дробное
- e или E и целочисленная экспонента со знаком (опционально)
- суффикс типа: f или F, либо l или L (опционально)
Десятичное целое или десятичное дробное (но не то и другое) можно опустить. Можно опустить либо десятичную точку, либо букву e (или E) с целочисленной экспонентой со знаком (но не то и другое). Эти правила позволяют выполнять запись чисел как в обычной, так и в научной (экспоненциальной) форме.
Отрицательные константыс плавающей точкой берутся как положительные константы с префиксом - унарной операцией минус (-).
Примеры:
Константа Значение
6
23.45e6 23.45 x 10
.0 0
0. 0
0
1. 1.0 x 10 = 1.0
-1.23 -1.23
-5
2e-5 2.0 x 10
10
3E+10 3.0 x 10
34
.09E34 0.09 x 10
Константы с плавающей точкой - типы данных
При отсутствии каких-либо суффиксов константы с плавающей точкой имеют тип данных double. Однако, вы можете присвоить константе с плавающей точкой тип данных float, добавив к ней суффикс f или F. Аналогичным образом, суффиксl илиL присвоит константе тип данных long double. В следующей таблице показаны диапазоны значений, которые могут принимать типы данных float, double и long double.
Размеры и диапазоны
констант с плавающей точкой Turbo C++ Таблица 1.8
Тип Размер (в битах) Диапазон значений
-38 38
float 32 3.4 x 10 до 3.4 x 10
-308 308
double 64 1.7 x 10 до 1.7 x 10
-4932 4932
long double 80 3.4 x 10 до 1.1 x 10
Перечислимые константы
Перечислимые константы представляют собой идентификаторы, определенные в объявлениях типа enum.Эти идентификаторы обычно выбираются как мнемонические обозначения для удобства обращения с данными. Перечислимые константы имеютцелочисленный тип данных. Они могут быть использованы в любых выражениях, в которых допустим целочисленныйтип данных. Используемые идентификаторы должны быть уникальными в пределах контекста объявления enum.
Значения, принимаемые перечислимыми константами,зависят от формата объявления перечислимого типа и присутствия опциональных инициализаторов. В данном примере,
enum team (* giants, cubs, dodgers *);
giants, cubs и dodgers это перечислимые константы типа team, которые могут быть назначены любым переменным типа team или любой другой переменной целочисленного типа. Значения, принимаемые перечислимыми константами,
giants = 0, cubs = 1, dodgers = 2
при условии отсутствия явных инициализаторов. В следующем примере,
enum team (* giants, cubs=3, dodgers = giants + 1 *);
константы установлены следующим образом:
giants = 0, cubs = 3, dodgers = 1
Значения констант не обязаны быть уникальными:
enum team (* giants, cubs = 1, dodgers = cubs - 1 *);
Допустимы также отрицательные инициализаторы.
Строковые литералы
Строковые литералы, известные также как строковые константы, образуют специальную категорию констант, используемых для работы с фиксированными последовательностями символов. Строковый литерал имееттип данных array ofchar и класспамятиstatic, и записываетсякак последовательность произвольного количества символов, заключенных в двойные кавычки:
"Это строковый литерал!"
Нулевая (пустая) строка записывается как "".
Символы внутри двойных кавычек могут включатьуправляющие последовательности (см. стр. 13 оригинала). Например, данный код,
"tt"Имя "\tАдресnn"
распечатается следующим образом:
"Имя " Адрес
Слову "Имя " будет предшествовать два символа табуляции; слову Адрес предшествуетодин символтабуляции. Строка заканчиваетсядвумя символами новой строки. Последовательность " обеспечивает вывод внутренних кавычек.
Строка литерала хранится в памяти как заданная последовательность символов,плюс конечный пустой символ (''). Нулевая строка хранится в виде одного символа ''.
На фазе лексического анализа соседние строковые литералы, разделенные толькопробелами, конкатенируются. В следующем примере,
#include
main()
(*
char *p;
p = "Это пример того, как Turbo C++"
" автоматическиnвыполняет для вас конкатенацию"
" очень длинных строк,nчто позволяет получить"
" более красивые программы.";
printf(*p*);
*)
На выходе программы будет:
Это пример того, как Turbo C++ автоматически выполняет для вас конкатенацию очень длинных строк, что позволяет получить более красивые программы.
Для расширения строковой константы за границы строки в качестве символа продолжения можно использовать обратную наклонную черту ():
put("В действительности
это однострочная строка символов");
Константы и их внутреннее представление
ANSI C говорит о том, что размер и численный диапазон базовых типовданных( и различных их модификаций) зависят от конкретной реализации компилятора и в целом от архитектуры компьютера, на котором он установлен. Базовыми компьютерами дляTurbo C++ являются компьютеры семействаIBM PC (и совместимые с ними), поэтому выбор внутреннего представления различных типов данных в целом определяется архитектурой микропроцессоров 8088 и 80x86. В следующей таблице сведены размеры и соответствующие диапазоны значений для типов данных, определяемых в Turbo C++. Дополнительную информацию об этих типах данных см. на стр. 39 оригинала. Внутреннее представление типов данных см. на рис.1.
Типы данных, размеры и диапазоны значений Таблица 1.9
Тип Размер Диапазон Примеры применения
unsigned char8 0 до 255 Малые числа и полный
набор символов PC
char8 -128 до 127 Самые малые числа и
ASCII-символы
enum 16 -32,768 до 32,767 Упорядоченные наборы
значений
unsigned int 16 0 до 65,535 Большие числа и циклы
short int 16 -32,768 до 32,767 Счетчики, малые числа,
управление циклами
int 16 -32,768 до 32,767 Счетчики, малые числа,
управление циклами
unsigned long 32 0 до 4,294,967,295 Астрономические расстояния
long 32 -2,147,483,648 до 2,147,483,647
Большие числа, население
-38 38
float 32 3.4 x 10 до 3.4 x 10
Научные расчеты (точность
7 разрядов)
-308 308
double 64 1.7 x 10 до 1.7 x 10
Научные расчеты (точность
15 разрядов)
-4932 4932
long double 80 3.4 x 10 до 1.1 x 10
Финансовые расчеты
(точность 19 знаков)
near pointer 16 Не существует Манипулирование адресами
памяти
far pointer 32 Не существует Манипулирование адресами
памяти вне текущего
сегмента
<------- направление возрастания значимости
int !s!значение! (дополнение до 2)
15 0
long int !s!значение ! (дополнение до 2)
31 0
----------------------
! !смещенный!мантисса!
float !s!порядок ! !
31 0
--------------------------------
! ! смещенный ! мантисса !
double !s! порядок ! !
63 0
----------------------------------------
! ! смещенный ! ! мантисса !
long double !s! порядок ! ! !
79 0
s = знаковый бит (0 = положит, 1 = отрицат)
= позиция неявной двоичной точки
1 = целочисленный бит мантиссы: записывается в long double неявно (всегда 1) в float, double
Смещенный порядок (нормализованные значения): float:127 (7FH)
double:1023 (3FFH)
long double: 16,383 (3FFFH)
Рис.1.1 Внутренние представления типов данных
Выражения с константами
Выражение с константами это выражение, вычисление которого даетв результате константу (причем лежащую в диапазоне, определенном для констант данного типа). Вычисление выражений с константами выполняется так же, как и обычных выражений. Выражения с константами можно использовать везде, гдедопускается использование самих констант. Синтаксис выражений сконстантами следующий:
выражение-с-константами:
условное-выражение
Выражения с константами не могут содержать приводимых ниже операций, если эти операции не содержатся в операнде операции sizeof:
- присваивание
- декремент
- вызов функции
- запятая
Описание операций
Операциями называются лексемы, вызывающие некоторые вычисления спеременными ипрочими объектами, указанными в выражении. Turbo C++ имеетособенно богатый набор операций, включающий в себя помимо обычных арифметических и логических операций средства манипуляции с данными на битовом уровне, доступа к компонентам структур иобъединений, а такжеоперации с указателями (установка и обращение по ссылке).
Расширения C++ предлагают дополнительные операции для доступа к компонентам класса и их объектам, атакже механизм перегрузки операций. Перегрузка позволяет переопределять действие любых стандартных операций применительно к объектам заданного класса. В данном разделе мы ограничимся рассмотрением стандартных операций TurboC++. Перегрузка рассматривается, начиная со стр.124 оригинала.
После определения стандартных операций мы обсудим типы данных и объявления, а также объясним, как они влияют на действие каждой операции. Затем мы перейдем к рассмотрению синтаксиса построения выражений с помощью операций, пунктуаторов и объектов.
Операции в Turbo C++ определяются следующим образом:
операция: одно из
[] (). -> ++ --
& * + - тильда !
sizeof / % << >> <
> <= >= == != ^
! && !! ?: = *=
/= %= += -= <<= >>=
&= ^= != , # ##
Операции # и ## используются только препроцессором (см. стр. 133 оригинала).
Следующие операции являются специфичными для C++:
::.* ->*
За исключением операций [], () и ?:, служащих для записи выражений в скобках, многосимвольные операции рассматриваются в качестве одной лексемы. Лексема одной и той же операции может иметьнесколько интерпретаций, в зависимости от контекста. Например,
A * B Умножение
*ptr Обращение по ссылке
A & B Поразрядное И
&A Операция адресации
int & Модификатор указателя (C++)
label: Метка оператора
a ? x : y Условный оператор
void func(int n); Объявление функции
a = (b+c)*d; Выражение со скобками
a, b, c; В

   
SQL Server и Разработка приложений и программные решения
   

В рамках темы доклада будут рассмотрены следующие вопросы:
1.

   
Microsoft Visual Basic 5 0
   

Microsoft Visual Basic 5.0

Microsoft Visual Basic 5.0 - это мощная система программирования, позволяющая быстро и эффективно создавать приложения для Microsoft Windows’95 и Microsoft Windows’NT

Рождение и развитие Basic.
Оригинальный язык программирования Basic был создан Джоном Кемени и Томасом Курцем в 1963 г в Дартмурском колледже.

   
Java99: Архитектура и интерфейсы
   

Java: архитектура и интерфейсы
Многим наверняка уже известно, что язык Java был разработан фирмой Sun, как платформенно-независимый, переносимый, объектно-ориентированный язык для Internet и Intranet.

   
Моделирование на GPSS
   

ОСНОВЫ МОДЕЛИРОВАНИЯ НА GPSS/PC


ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ
1.

   
Методы поиска технических решений
   

Задание
1. Выбрать ТО, улучшить его показатели методом ОМА (обратной мозговой атаки)

   
Системный анализ
   


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

   
Макросы в SuperCalc4
   

ВЕДЕНИЕ В MACRO.
MACRO - это последовательность указаний (MACRO - команд), которые могут контролировать работу таблицы и состояние экрана в SuperCalc4.SuperCalc4 предлагает широкий выбор MACRO - команд.
Последовательности MACRO - команд выполняют повторяющиеся действия быстро и аккуратно.Они могут быть как простыми, так и сложными.Вы можете сохранить MACRO внутри какой-то одной таблицы и использовать её для работы только с этой таблицей.А можете создать MACRO в виде отдельного файла на диске и использовать его слюбой таблицей.
СТРУКТУРА MACRO
Для удобства дальнейшего изложения поясним сначала терминологию SuperCalc4.
Термины Значения
.MACRO .MACRO - команды .MACRO - клавиши Макросы .MACRO - файл .MACRO - прог-ма язык пакета SC4 операторы языка MACRO MACRO - команды, используемые для ввода в действие клавиш,не дающих изоображение на экране.

   
Макросы в Excel
   

План

1.Введение.

2.Начало пути.

3.Редактирование, удаление, переименование и назначение макросов.

4.Примеры макросов.

5.Заключение.



1.

   
Norton Utilities
   

Norton Utilities
Что такое утилиты?
Утилиты – это специализированные программы, предназначенные для обслуживания и
оптимизации работы системы, программы-помощники, решающие задачи, с которыми
сама оперативная система справиться не в состоянии.

   
Лекции по C++
   

1. Переменные и операции языка С++

Здесь представлены базовые компоненты программ на С++

   
Курс лекций по V B 5.0
   

Программирование в среде VB 5.0

В приложениях VB 5.0 исполняемые строки должны размещаться внутри процедур либо функций.

   
Сортировка
   

1. ЛАБОРАТОРНАЯ РАБОТА ПО ПРОГРАММИРОВАНИЮ УЧЕНИКА 10д КЛАССА ШКОЛЫ N57
АХМАНОВА СЕРГЕЯ ПО ТЕМЕ "СОРТИРОВКИ"

   
Создание, дополнение и чтение файла данных
   

Задание. Создать файл данных со следующей структурой:
==> шифр товара,
==> наименование,
==> план выпуска на каждый квартал,
==> фактический выпуск в каждом квартале.
Предусмотреть возможность добавления информации и чтения данных из файла.
> Создание файла
Макет исходных данных
Кварталы
Шифр Наиме- 1 2 3 4
товара нование План

   
 
     
Бесплатные рефераты
 
Банк рефератов
 
Бесплатные рефераты скачать
| Интенсификация изучения иностранного языка с использованием компьютерных технологий | Лыжный спорт | САИД Ахмад | экономическая дипломатия | Влияние экономической войны на глобальную экономику | экономическая война | экономическая война и дипломатия | Экономический шпионаж | АК Моор рефераты | АК Моор реферат | ноосфера ба забони точики | чесменское сражение | Закон всемирного тяготения | рефераты темы | иохан себастиян бах маълумот | Тарых | шерхо дар борат биология | скачать еротик китоб | Семетей | Караш | Influence of English in mass culture дипломная | Количественные отношения в английском языках | 6466 | чистонхои химия | Гунны | Чистон | Кус | кмс купить диплом о language:RU | купить диплом ргсу цена language:RU | куплю копии дипломов для сро language:RU
 
Рефераты Онлайн
 
Скачать реферат
 
 
 
 
  Все права защищены. Бесплатные рефераты и сочинения. Коллекция бесплатных рефератов! Коллекция рефератов!