Автор работы: Пользователь скрыл имя, 03 Ноября 2009 в 12:46, Не определен
Шпаргалки по информатике
Один из способов решения сложной задачи – это разбиение её на части. В этом состоит метод нисходящего программирования.
При программировании на языке Си сложная программа может быть разделена на более простые подзадачи( функции). Это позволяет: 1)упростить структуру программы; 2) избежать избыточности кода, т.к. функции записывают один раз, а вызывать её на выполнение можно многократно; 3) упростить процесс отладки и сопровождение программы, поместив часто используемые ф-ии в библ. Разработанные ф-ии можно сгруппировать в отдельные файлы (модули ) компилируемые отдельно, кот. затем объединяются в исполняемою программу с помощью компоновщика.
Ф-ия
– это самостоятельная единица программы,
реализующая конкретную задачу или её
часть. Каждая программа написанная на
Си должна содержать главную ф-ию «main».
Объявление(óнаписание прототипа) любой функции имеет следующий вид:
тип-результата имя-функции (спис.форм.перем.)
Определение функции
{операторы}
Можно
задать класс пам(обл
.extern-глобальная видимость во всех модулях прогр.(умолч.)
.static-видимость только в пределах модуля, в кот определ ф-ия
Тип возвр. знач может быть люб кроме масс и ф-ии. Но может быть ук. на мА или ф-ию. Если ф-ия не возвр ни какого рез, то указывается тип void.
Имя ф-ии – это идентиф задаваемой программистом. Список форм парам: (тип имя_пар1, тип имя_пар2) Опред величины , кот требуется передать в ф-ию при её вызове. Может быть пустым. Тело ф-ии – это либо сост опер., либо блок с описателем перем, масс и т.д. Тело ф-ии не может содерж в себе определ др ф-ий. Из всякой ф-ии возможно обращение к др. ф. Однако они всегда явл внеш по отн к вызыв-ей ф-ие.
Вызов функции
имя-функции
(список фактич. перем.) В объяв. опред и
в вызове одной и той же ф-ии должно соблюдаться
правило соотв типов и порядка следования
парам.
Способы:
- return выражение (в этом случ. знач. будет присвоено ф-ии в её типе)
- return (завершает выполн. ф-ии и передаёт вып. след. опер-у в вызыв-ей ф-ии)
Три способа передачи пар-ра в ф-ию:
а) по значению
( оп-ры работают только с
б) по адресу
(в стек заносятся копии
в)по ссылке (в ф-ию перед адр указ-ого при вызове парам) обозн int&z
Рекурс
ф-ия – ф-ия, кот вызывает саму
себя. Такая рек. наз-ся прямой.
Косвенная рек.- когда 2 и более
ф-ий вызывают др друга.
Любая прогр на Си содержит обращение к стандартной библ. Кроме того программист может созд собств библ. Их подключ с пом. директивы include (.h – header – заголовок).
На стадии
предпроцессорной обр.прогр.
Сами библ. ф-ий хранятся в скомпил.виде и подлюч. к осн. прогр. на этапе компан-ки.
Библ. ф-ий
можно разбить на группы по
их назнач.:ввод/выв;матем.ф-
Функции для работы в графическом режиме.
Монитор ПК может работать в одном из 2-х режимов: тестовом и графич-ом. Наим. элем-ом изобр.яв-ся пиксель. В Си име-ся граф. библ. graphics.h. Она сод. большое кол-во ф-ий для: упр. цветом, созд.изобр.различ.формы, для вывода граф.текст.сообщ.,для упавл.курсором. Настройка этих ф-ий на работу осущ-ся путём подл.граф.драйвера. Граф.драйверы нах-ся в отдельных файлах с расш .BGI в каталоге BGI(Borl.Graph.Interf.).
Граф.ф-ии
исп.понятие указателя текущ.
позиции. Этот указатель
пиксель и хар-ся
парой цел.чмсел(гор.и верт.
Иниц.гр.режима осущ. ф-иёй initgraph(&gd,&gm, «путь к BGI файлам). gd-гр.драйв.,gm-гр.режим.
Для обр.ошиб.при работе с гр-ой исп.ф-ия: graphresult().Эта ф-ия возвр. код последней исп.ф-ии. grOk=0
Цвет в
гр.режиме Си имеет свой номер
и буквенное обозн. Фон-
Парам.текста-settextstyle(
Характер
и толщина лин.геом. объектов-setlinestyle(вид,
Стиль закраски
к-то области-setfillstyle(тип,
Очистка экрана-cleardevice()/
Определ.макс.зная.по x (getmax x()) и по y (getmax y()).
Текущ корд. указат.курсора(get x(),get y()).
Перемещение
указат-ля позиции moveto(x,y);
Установка
парам. по умолч.-graphdefault(
Вывод точки на экран-putpixel(x,y,цв).
Вывод текста-outtext(«строка»)
Вывод лин.-setwritemode(режим). 0-COPY_PUT,1-XOR_PUT. Если 0,то лин.затирает то,что было на экране.
Рисов.лин.-line(x1,y1,x2,y2),
Выв.прямоуг.-rectangle(x1,y1,
Ломан.лин.-drawpoly(кол-во вершин,указатель на массив целых)
Окр.(x,y,r)
Дуга arc(x,y,нач.угол,кон.уг,
Дуга эллипса (x,y,нач.угол,кон.уг,rx,ry)
Закр.прямоуг.bar(x1,y1,x2,y2)
Закр.параллел.bar3d(x1,y1,x2,
Закр.элипс fillellipse(x,y,rx,ry)
Закр.круг pieslice (x,y,нач.угол,кон.уг,r)
Закр. сектор
эллипса sector(x,y,нач.угол,кон.уг,rx,
Закр.произв.замкн.обл.
floodfill(x,y,граница(должен совп.с цв контура)
В ПК память представляется разделён.насегменты. Исп.прогр-а сост.из:
1)Сегмента кода,
в кот.расположены машинные
2)Сегмент данных, в кот расп. глоб.перемен. и константы.
3)Сегмент стека, в кот расположены локал.перем.
Остальна дост-ая прогр.память наз-ся динам-ой или хепом(«куча»), в кот располож. динам.перем.
Под всякую
переем. исп-ую в прогр. должно
быть выделено место в памяти.
Выделение пам.может
Каждая перем.
имеет оперд. тип. Кроме того она имеет
класс памяти. Существует 4 класса памяти:
1)extern(внеш.);2)auto(
Класс пам.опред-ся местом её описания и ключевым словом.
Класс пам.определяет:
1)Область видимости (дей-я перем-х)
2)Время жизни пер.,т.е. продолж-ость её хранения в памяти.
В Си может быть 3 области видимости:
1)в пределах файла
2)в пр.блока{ }
3)в пр.прототипа ф-ии
Время жизни может быть либо на протяжении вып. всей прогр., либо по достяж.блока.
Внешний класс
Перем. опис. вне ф-ии наз-ся внеш. или глоб.(extern).Глоб. перем. размещается в сегменте данных и изначально обнуляется. Время жизни этой перем.-на протяж всей прогр., обл.действ-файл.
Автоматич. класс
Перем. описанная внутри ф-ии явл-ся локальной. По умолчанию объявленные в ф-ии пер-ые явл-ся автоматич. Перем. авт.класса размещаются в сегменте класса изначально не обнуляются. Время жизни и действие-блок, в кот описана перем.
Статический класс.
Перем.стат.кл. тоже явл.локальными. Они видны только в своём блоке, но в отличие от перем. класса auto они подобно глобальным переменным размещаются в сегменте данных, существуют на протяжении всей прогр. и однократно иниц.(при первом вхожд. в блок)
Регистровый класс
Регистровая
пам.выделяется под локал. перем.
Это самый быстрый и самый маленький вид
памяти. Эту пам. исп. не реком., т.к. ей распоряжается
компил.Размещение-регистр.пам.
В процессе комп.прогр.имена перем. преобр. в адреса ячеек пам., в кот хранятся значения перем. Программист может определить собств. перем. для хранения адресов обл-ёй пам. Такие перем.наз-ся указателями.
Объявление ук.- (тип*имя перем.). Т.е. ук. не явл. самост. типом, он всегда связан с к-либо др. конкр. типом.
Ук. могут быть константой или перем., а так же указывать на константу или перем.
Инициализация ук.
Значение
ук. перед его исп. обяз.должно
быть иниц-но(т.е. присвоено
пример:
int a=5 int*pti=&a int*p=pti
Ук-ям можно присв. зн-я адресов объектов только того типа, кот они описаны: int b[10]; int*t=6?//присв. адр. начала масс-а
ptf=NULL (это значит что отсутств. конкрет. адр. ссылки.
Для работы
с динам. пам. примен.опер-ии:
пример:
1)int*n=new int(выделяется достат. для размещ. величины типа int учасика динам. пам. и записывается адр. начала этого участка в перем. n).
2) int*m=new int(10);(производится иниц. выделен. динам. пам. и запис. 10)
3) int*q=new int[10];(выделяется пам.под 10 величин типа int и записывается адрес начала этого участка в перем. q,кот может трактоватся как имя массива.
Чтобы освободить пам.
пример:
int a=5,b,d;
int*pti=&a;
….
b=*pti;d=pti+2;
cout<<b<<d;
Арифм оп. с ук. автоматич. учитывают размер типа величин адресных ук.
Единицей измерения значения ук. явл.размер соответсв.ему типа. Эти оп. примен. в основном при работе со структурами данных последовательно размещённых в пам.(пр.:массивы). Если ук. на определённый тип увел. или умен. на константу его значение изм на величину этой конст. умноженную на размер объекта данного типа. Разность 2-х ук.-это разность их знач. делённая на размер типа в байтах. Суммирование ук. не допускается. Инкремент перемещает ук.к след.элем. масс., декремент – к предыдущ.