Автор работы: Пользователь скрыл имя, 03 Ноября 2009 в 12:46, Не определен
Шпаргалки по информатике
Допускается только для ук. одного типа.
Применимо
к величинам имеющим имя и
размещённым в оперативной
Имя масс. обозн. как ук.-константа на массив. В массиве int x[10] x-ук. на нулевой элемент масс-ва, т.е. x=&x[0]. Поэтому для доступа к элементам масс., кроме индексированных имён можно использовать разадрессованные ук.: имя[индекс]ó*(имя+индекс) (пр:x[i]ó*(x+i))
Т.к. имя масс. явл. ук.- константой, то его нельзя изм. в прогр., т.е. ему нельзя ничего присвоить.
Мас. как параметр ф-ии
При исп.
в качестве парам масс-ва в
ф-ию передаётся ук.на его
1)func(int a[N],int N)
2)func(int a[], int N)
3)func(int *a, int N)
Дин. масс.
применяются если до начала
работы прогр. неизв.сколько в
масс.элем-в. Пам. под них
В дин. обл.пам.(heap) во время вып.прогр. Адр.её начала запис-ся в ук.(пр:int n=10; int*a=new int[n]//в дин.пам.выд.обл.пам.дост-я для размещ.10 элем.типа int.
Дин.мас-ы нельзя при созд. иниц-ать. и они не обнуляются.
Преимущество дин.мас.-размерность может быть переменной, т.е. объём пам. выд-ой под масс.определяется на этапе выполнен.прогр.
Обращение к элементу дин.мас.осущ. так же как к элементу обычного (a[3] или *(а+3)
Если дин. масс. в к-то момент работы прогр. больше не нужен необходимо освободить область пам. кот.он занимает с пом. операции delete[]a;
Для созд.дин.многомер.мас. необходимо указать в операции new все его размерности. Самая левая (первая) размерность может быть переменной.
пример:
int nstr=5;
int **m=(int**)new int[nstr][10];
или
int n;
cout int m=5;
cin>>n;
int(*a)[m]=new int[n][m];
Более универсальный
способ выделения пам.под 2-
С. – сложный тип данных, представляющий собой совокупность разнотипных элементов.
Тип стр. – обычно исп. при разработке информационных систем и баз данных.
Struct [ имя типа ]
{ тип 1 элемент_1;
тип 2 элемент_2;
…
тип n элемент_n;
}[список_описателей];
Элем-ы стр. наз-ся палями стр. и могут иметь любой тип, кроме типа эт.стр., но может быть ук-лем на него
пример:
struct student
{char fam[30];
int kurs;
char group[6];
float ball;}
student-имя стр.типа, кот. может быть назначен некот. перем.
Описание перем: [struct] student stud1, stud2(перем.структ.типа);
Может быть совмещено описание типа стр. и объявление перем-х этого типа
пример:
[struct] student
{char fam[30];
int kurs;
char group[6];
float ball;}
{stud1,stud2,*pst(ук.на структуру);}
Поля стр. могут быть в свою очередь данными типа стр.
пример:
struct point
{float x: float y;};
struct line
{struct point p1;struct point p2;};
Инициал.перем.стр.типа
struct 1{a,b,c,d};
point z={l;2;3}
Перем.стр.типа можно размещать в дин.обл.пам. Для этого надо описать ук.на стр.и выд.под неё место.(пр:student*pst=new student)
Доступ к элем. стр. осущ.с пом.опер.выбора (точка) при обращении к полю ч/з имя структ. и-> при обращении ч/з ук.
пример:
struct student stud1, *ps;
ps->stip=150;
К каждому элем. стр. перем. Stud 1 можно обратится тремя способами.
1) Stud 1. fam;
2) (* pst). fam;
3) pst -> fam
Если элем. стр. явл. др. стр., то доступ к её элем. осущ. ч/з 2 операции выбора.
Например:
Struct A
{ int a;
double x;
}
Struct B
{ Struct A b;
double x;
} S, x;
S.b.a=1;
S, b. x= 0.5;
S.x=0.125;
x. b. a=2;
x. b. x=-0.5;
x. x.=2.5;
Как видно из примера поля разных стр. могут иметь одинак. имена, т.к. у них разная область видимости. По этой же причине одинак. имена могут иметь полиструктуры и имя перем. из списка описателей ( не рекомендуется).
пример:
a) struct student stud1,stud2,*ps;
stud2=stud1;
(*ps)=stud1;
b) struct point a,b;
(a.x=1;a.y=1;)ó(bx=ax;by=ay) b=a;
2) Вв/выв стр., как
и мас-ов, выполняется по элементно(пр:cin>>stud.fam>>
3) Получение адр стр-ы(student stud1,*ps; student ps=&stud1;).В отличие от масс. имя стр.не имеет никакого значения.
4)Стр-у можно
возвращать в качестве
При вызове ф-ии
в качестве фактич.аргум.указываются имена
стр-ых перем-ых.(пр:struct complex x,y,z;….z=add1(x,y);)
Структуры,
как и др. переменные, могут объединяться
в массивы. Массив структур
– это удобное ср-во
Student stud [100];
Тогда сведения об одном студенте могут обозначатся как:
stud [1]. fam;или
stud [5]. kurs;
Объединения
Об. представляют собой все поля кот представл. по одному адресу.(пр: union имя_типа {определения элементов};
Длина об.
равна наибольшей из длин его
полей. В каждый момент
Под вв/выв понимается процесс обмена инф. м/у оперативной пам. и внеш. устр-ми. Осн. понятием связанным с инф. на вне шустр явл-ся понятие «файл». Всякая опер вв/выв трактуется как опер обмена с файломи. Поэтому организация вв/выв в языке прогр-это организация работы с файлами.
Различают понятия внутр.(логического) и внешнего (физического). Аналогом понятия внутр. файла в Си явл понятие потока. Поток(stream)-это последовательность байтов, передаваемая в процессе вв/выв и независящая от конкретного устр., с кот производится обмен инф.
Чтение данных из потока наз-ся помещением или подключением.
По направлению обмена потоки можно разделить на входные(данные вводятся в пам.) и данные выводимые из памяти.
По виду устр. с кот. работает поток их можно разделить на:
-стандартные (для передачи данных от клав)
-файловые(для обмена инф. с файлами на внеш носит.)
-строковые(для работы с массивами симв в операт пам)
Для поддержки
потоков библ Си содержит
Этот класс содержит общие для вв и выв поля и методы.
Иерархия
классов
Прямыми потоками класса ios (производными классами) явл-ся класс istream (класс входных потоков) и ostream(класс выходных потоков); потомком этих 2-х классов явл класс iostream вв/выв).
Объект cout принадлежит классу ofstream и представляет собой поток вывода связанный с дисплеем.Оп. поместить в поток cout<<a означает, что зн. «а» должно быть выв. из пам.на дисплей.
Объект cin принадлежит iostream и явл.потоком связанным с клав. Операции:взять из потока cin>>а означает что значение перем. а должно быть вв с клав в пам.
При обработке файлов в Си исп. 3 класса:
1)ifstream-класс входных потоков,вып.опер.вв. из файла.
2)ofstream-класс выходных пот,вып.опер.выв в файл.
3)fstream-класс двунаправленных ф.пот.,вып.вв/выв инф.
Эти классы явл. производными от классов istream,ostream,iostream. Поэтому они наследуют операции >>,<< и др.оп.
По способу доступа файлы можно разделить на:
Создание ф.послед.доступа и запись его данных.
1)#include<fstream.h>
2)объединяем
файловую перем.выходного ф-
ofstream fout:
открываем физ-ий файл fout.open (“имя физ.файла”)
ofstream fout(“output.txt [режим открытия ф.]);
3) Записываем в ф.инф. fout<<”z=”<<z<<endl;
4) Закр.ф. fout.close();
Режимы открытия файлов.
ios::app – отрк.ф.для добав. в конец
ios::ate – установить ук.на конец ф.
ios::in – откр.ф.для вв.
ios::out – откр.ф.для выв.(зап.)
ios::trunt – если ф.сущ.,то удалить. По умолч.устан.для ios::out
ios::nocreate – если ф.не сущ,выдать ош.
ios::noreplace – если ф. сущ., выдать Ош.
ios::binary – откр.ф. в двоичном режиме.
пример: ifstream fin(“input.txt”,ios::in|ios::
Ф. может осущ 3-мя способами:
1) с пом. флагов
2) с пом. манипуляторов