это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
1.
2. Модульное программирование. Понятие функции.
Один из способов решения сложной задачи – это разбиение её на части. В этом состоит метод нисходящего программирования.
При программировании на языке Си сложная программа может быть разделена на более простые подзадачи( функции). Это позволяет: 1)упростить структуру программы; 2) избежать избыточности кода, т.к. функции записывают один раз, а вызывать её на выполнение можно многократно; 3) упростить процесс отладки и сопровождение программы, поместив часто используемые ф-ии в библ. Разработанные ф-ии можно сгруппировать в отдельные файлы (модули ) компилируемые отдельно, кот. затем объединяются в исполняемою программу с помощью компоновщика.
Ф-ия – это самостоятельная единица программы, реализующая конкретную задачу или её часть. Каждая программа написанная на Си должна содержать главную ф-ию «main».
3. Объявление и определение функции. Вызов функции.
Объявление(-написание прототипа)любой функции имеет следующий вид:
тип-результата имя-функции (спис.форм.перем.)
Определениефункции
{операторы}
Можно задать класс пам(обл видимости ф-ии) (пр:[класс] тип…)
.extern-глобальная видимость во всех модулях прогр.(умолч.)
.static-видимость только в пределах модуля, в кот определ ф-ия
Тип возвр. знач может быть люб кроме масс и ф-ии. Но может быть ук. на мА или ф-ию. Если ф-ия не возвр ни какого рез, то указывается тип void.
Имя ф-ии – это идентиф задаваемой программистом. Список форм парам: (тип имя_пар1, тип имя_пар2) Опред величины , кот требуется передать в ф-ию при её вызове. Может быть пустым. Тело ф-ии – это либо сост опер., либо блок с описателем перем, масс и т.д. Тело ф-ии не может содерж в себе определ др ф-ий. Из всякой ф-ии возможно обращение к др. ф. Однако они всегда явл внеш по отн к вызыв-ей ф-ие.др ф-ий. ызове. ей мере 2 поля: для хранения данных, для ук.
Вызов функции
имя-функции (список фактич. перем.) В объяв. опред и в вызове одной и той же ф-ии должно соблюдаться правило соотв типов и порядка следования парам.
4. Обмен информацией между функциями. Рекурсивные функции.
Способы:
1) С пом. глоб. перем.
2) Через возвращение ф-ией значения (оператор return).
- returnвыражение (в этом случ. знач. будет присвоено ф-ии в её типе)
- return (завершает выполн. ф-ии и передаёт вып. след. опер-у в вызыв-ей ф-ии)
3) Через параметры:
Три способа передачи пар-ра в ф-ию:
а) по значению ( оп-ры работают только с копиями знач-ий фактич-их парам)
б) по адресу (в стек заносятся копии адресов арг-тов, ф-ия осущ-ая доступ к этим адр может изм исх знач)
в)по ссылке (в ф-ию перед адр указ-ого при вызове парам) обозн int&z
Рекурс ф-ия – ф-ия, кот вызывает саму себя. Такая рек. наз-ся прямой. Косвенная рек.- когда 2 и более ф-ий вызывают др друга. Недостатки: расход времени и памяти на повторные вызовы ф-ий и передачу ей копий парам, а также опестн. переполн стека.
5. Библиотечные функции. Функции для работы в графическом режиме.
Любая прогр на Си содержит обращение к стандартной библ. Кроме того программист может созд собств библ. Их подключ с пом. директивы include (.h – header – заголовок).
На стадии предпроцессорной обр.прогр. происходит подстановка прототипов перед осн. ф-ией, после чего компилятор проверяет правильность обращения к ф-иям.
Сами библ. ф-ий хранятся в скомпил.виде и подлюч. к осн. прогр. на этапе компан-ки.
Библ. ф-ий можно разбить на группы по их назнач.:ввод/выв;матем.ф-ии;для управл.графич системой.
Функции для работы в графическом режиме.
Монитор ПК может работать в одном из 2-х режимов: тестовом и графич-ом. Наим. элем-ом изобр.яв-ся пиксель. В Си име-ся граф. библ. graphics.h. Она сод. большое кол-во ф-ий для: упр. цветом, созд.изобр.различ.формы, для вывода граф.текст.сообщ.,для упавл.курсором. Настройка этих ф-ий на работу осущ-ся путём подл.граф.драйвера. Граф.драйверы нах-ся в отдельных файлах с расш .BGIв каталоге BGI(Borl.Graph.Interf.).
Граф.ф-ии исп.понятие указателя текущ. позиции. Этот указатель идентиф. выбранный
пиксель и хар-ся парой цел.чмсел(гор.и верт.коорд.).
Иниц.гр.режима осущ. ф-иёй initgraph(&gd,&gm, «путь к BGI файлам). gd-гр.драйв.,gm-гр.режим.
Для обр.ошиб.при работе с гр-ой исп.ф-ия: graphresult().Эта ф-ия возвр. код последней исп.ф-ии. grOk=0
Цвет в гр.режиме Си имеет свой номер и буквенное обозн. Фон-setbkcolor(цв),цв лин. и симв.-setcolor(цв).
Парам.текста-settextstyle(шрифт,направл.,разм)
Характер и толщина лин.геом. объектов-setlinestyle(вид,образец,толщина)
Стиль закраски к-то области-setfillstyle(тип,закраска,цв)
Очистка экрана-cleardevice()/
Определ.макс.зная.по x (getmaxx()) и по y (getmaxy()).
Текущ корд. указат.курсора(getx(),gety()).
Перемещение указат-ля позиции moveto(x,y);moverel(dx,dy).
Установка парам. по умолч.-graphdefault();
Вывод точки на экран-putpixel(x,y,цв).
Вывод текста-outtext(«строка»),outtextxy(x,y, «строка»).
6. Графические примитивы.
Выводлин.-setwritemode(режим). 0-COPY_PUT,1-XOR_PUT. Если 0,то лин.затирает то,что было на экране.
Рисов.лин.-line(x1,y1,x2,y2),lineto(x,y),linerel(dx,dy)
Выв.прямоуг.-rectangle(x1,y1,x2,y2)
Ломан.лин.-drawpoly(кол-во вершин,указатель на массив целых)
Окр.(x,y,r)
Дуга arc(x,y,нач.угол,кон.уг,r)
Дуга эллипса (x,y,нач.угол,кон.уг,rx,ry)
Закр.прямоуг.bar(x1,y1,x2,y2)
Закр.параллел.bar3d(x1,y1,x2,y2,глубина,круша(от0до1))
Закр.элипс fillellipse(x,y,rx,ry)
Закр.круг pieslice (x,y,нач.угол,кон.уг,r)
Закр. секторэллипса sector(x,y,нач.угол,кон.уг,rx,ry)
Закр.произв.замкн.обл. floodfill(x,y,граница(должен совп.с цв контура)
7. Классы памяти.
В ПК память представляется разделён.насегменты. Исп.прогр-а сост.из:
1)Сегмента кода, в кот.расположены машинные команды.
2)Сегмент данных, в кот расп. глоб.перемен. и константы.
3)Сегмент стека, в кот расположены локал.перем.
Остальна дост-ая прогр.память наз-ся динам-ой или хепом(«куча»), в кот располож. динам.перем.
Под всякую переем. исп-ую в прогр. должно быть выделено место в памяти. Выделение пам.может происходить либо на стадии компиляции прогр., либо во время выполнения прогр.(для динам.перем.)
Каждая перем. имеет оперд. тип. Кроме того она имеет класс памяти. Существует 4 класса памяти: 1)extern(внеш.);2)auto(автоматич-ий);3)static(статический); 4)register(регистровый).
Класс пам.опред-ся местом её описания и ключевым словом.
Класс пам.определяет:
1)Область видимости (дей-я перем-х)
2)Время жизни пер.,т.е. продолж-ость её хранения в памяти.
В Си может быть 3 области видимости:
1)в пределах файла
2)в пр.блока{ }
3)в пр.прототипа ф-ии
Время жизни может быть либо на протяжении вып. всей прогр., либо по достяж.блока.
Внешний класс
Перем. опис. вне ф-ии наз-ся внеш. или глоб.(extern).Глоб. перем. размещается в сегменте данных и изначально обнуляется. Время жизни этой перем.-на протяж всей прогр., обл.действ-файл.
Автоматич. класс
Перем. описанная внутри ф-ии явл-ся локальной. По умолчанию объявленные в ф-ии пер-ые явл-ся автоматич. Перем. авт.класса размещаются в сегменте класса изначально не обнуляются. Время жизни и действие-блок, в кот описана перем.
Статический класс.
Перем.стат.кл. тоже явл.локальными. Они видны только в своём блоке, но в отличие от перем. класса auto они подобно глобальным переменным размещаются в сегменте данных, существуют на протяжении всей прогр. и однократно иниц.(при первом вхожд. в блок)
Регистровый класс
Регистровая пам.выделяется под локал. перем. Это самый быстрый и самый маленький вид памяти. Эту пам. исп. не реком., т.к. ей распоряжается компил.Размещение-регистр.пам.;обл.действ.-блок;вр.жизни-блок;иниц-нет.
8. Указатели: понятие, инициализация.
В процессе комп.прогр.имена перем. преобр. в адреса ячеек пам., в кот хранятся значения перем. Программист может определить собств. перем. для хранения адресов обл-ёй пам. Такие перем.наз-ся указателями.
Объявление ук.- (тип*имя перем.). Т.е. ук. не явл. самост. типом, он всегда связан с к-либо др. конкр. типом.
Ук. могут быть константой или перем., а так же указывать на константу или перем.
Инициализация ук.
Значение ук. перед его исп. обяз.должно быть иниц-но(т.е. присвоено нач.знач.)
1) присвоение ук. адреса сущ-его объекта
пример:
int a=5 int*pti=&a int*p=pti
Ук-ям можно присв. зн-я адресов объектов только того типа, кот они описаны: intb[10]; int*t=6?//присв. адр. начала масс-а
2) Присв. нужного знач.
ptf=NULL (это значит что отсутств. конкрет. адр. ссылки.
3) Выделение участка динам. пам. и присв. её адр. перем. Доступ к выделен. участ.динам.пам.произв.только ч/з ук-и.
Для работы с динам. пам. примен.опер-ии:NEW(для выделения пам.),delete(для освобожд.пам.)
пример:
1)int*n=newint(выделяется достат. для размещ. величины типа int учасика динам. пам. и записывается адр. начала этого участка в перем. n).
2) int*m=newint(10);(производится иниц. выделен. динам. пам. и запис. 10)
3) int*q=newint[10];(выделяется пам.под 10 величин типа int и записывается адрес начала этого участка в перем. q,кот может трактоватся как имя массива.
Чтобы освободить пам.
1) …delete n; 2)…delete m; 3)…delete [];
9. Операции с указателями.
1) Оп. разадресации(*)-косвенное обращение к объекту. Оп.разадр-ии предназначены для доступа к величине адрес кот хранится в ук. Эту опер. можно исп. как для получ. так и для изменен. знач. величины.
пример:
int a=5,b,d;
int*pti=&a;
….
b=*pti;d=pti+2;
cout<<b<<d;
2) Арифм. оп.
Арифм оп. с ук. автоматич. учитывают размер типа величин адресных ук.
Единицей измерения значения ук. явл.размер соответсв.ему типа. Эти оп. примен. в основном при работе со структурами данных последовательно размещённых в пам.(пр.:массивы). Если ук. на определённый тип увел. или умен. на константу его значение изм на величину этой конст. умноженную на размер объекта данного типа. Разность 2-х ук.-это разность их знач. делённая на размер типа в байтах. Суммирование ук. не допускается. Инкремент перемещает ук.к след.элем. масс., декремент – к предыдущ.
3) Сравнивание ук.
Допускается только для ук. одного типа.
4) Взятие адреса
Применимо к величинам имеющим имя и размещённым в оперативной памяти.
10. Указатели и массивы. Массив как параметр функции.
Имя масс. обозн. как ук.-константа на массив. В массиве intx[10] x-ук. на нулевой элемент масс-ва, т.е. x=&x[0]. Поэтому для доступа к элементам масс., кроме индексированных имён можно использовать разадрессованные ук.: имя[индекс]-*(имя+индекс) (пр:x[i]-*(x+i))
Т.к. имя масс. явл. ук.- константой, то его нельзя изм. в прогр., т.е. ему нельзя ничего присвоить.
Мас. как параметр ф-ии
При исп. в качестве парам масс-ва в ф-ию передаётся ук.на его первый элемент, т.е. масс.всегда передаётся по адресу. При этом инф. о кол-ве элем. масс. теряется и следует передавать его размерность ч/з отдельные парам. Передать масс. в ф-ию можно след. сп.:
1)func(inta[N],intN)
2)func(int a[], int N)
3)func(int *a, int N)
11. Динамические массивы.
Дин. масс. применяются если до начала работы прогр. неизв.сколько в масс.элем-в. Пам. под них выделяется с пом. операции new.
В дин. обл.пам.(heap) во время вып.прогр. Адр.её начала запис-ся в ук.(пр:intn=10; int*a=newint[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-мерн.мас., когда обе его размерности задаются на этапе выполнения прогр. Освобождение пам. из под мас. с любым кол-вом изменений вып. с пом. оп delete[].
12. Структуры: определение, инициализация.
С. – сложный тип данных, представляющий собой совокупность разнотипных элементов.
Тип стр. – обычно исп. при разработке информационных систем и баз данных.
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};
pointz={l;2;3}
Перем.стр.типа можно размещать в дин.обл.пам. Для этого надо описать ук.на стр.и выд.под неё место.(пр:student*pst=newstudent)
Доступ к элем. стр. осущ.с пом.опер.выбора (точка) при обращении к полю ч/з имя структ. и-> при обращении ч/з ук.
пример:
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;
Как видно из примера поля разных стр. могут иметь одинак. имена, т.к. у них разная область видимости. По этой же причине одинак. имена могут иметь полиструктуры и имя перем. из списка описателей ( не рекомендуется).
13. Операции над структурами.
1) Присвоение стр.,если они имеют одинак.тип.При этом происходит поэлементное копирование:
пример:
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>>stud.kurs; cout<<stud.fam<<” “<<stud.kurs<<endl;
3) Получение адр стр-ы(studentstud1,*ps; studentps=&stud1;).В отличие от масс. имя стр.не имеет никакого значения.
4)Стр-у можно возвращать в качестве значения ф-ии. Стр-у можно передавать в качестве парам.ф-ии.(пр: structpointmake(intx, inty) {structpointtemp; temp.x=x; temp.y=y; returntemp;} b =make(1.1);)
При вызове ф-ии в качестве фактич.аргум.указываются имена стр-ых перем-ых.(пр:structcomplexx,y,z;….z=add1(x,y);)
14. Массивы структур. Объединения.
Структуры, как и др. переменные, могут объединяться в массивы. Массив структур – это удобное ср-во представления и обработки табличной информации. Так например: сведения о ста студентах могут хранится в массиве структур:
Studentstud [100];
Тогда сведения об одном студенте могут обозначатся как:
stud [1]. fam;или
stud [5]. kurs;
Объединения
Об. представляют собой все поля кот представл. по одному адресу.(пр: union имя_типа {определения элементов};
Длина об. равна наибольшей из длин его полей. В каждый момент времени переменной типа об. хранится только одно значение. Об. применяются для экономии памяти в тех случаях когда известно, что больше одного поля одновременно не требуется.(пр: unions {inti; chark; longintL;};
15. Понятие потока. Классификация потоков.
Под вв/выв понимается процесс обмена инф. м/у оперативной пам. и внеш. устр-ми. Осн. понятием связанным с инф. на вне шустр явл-ся понятие «файл». Всякая опер вв/выв трактуется как опер обмена с файломи. Поэтому организация вв/выв в языке прогр-это организация работы с файлами.
Различают понятия внутр.(логического) и внешнего (физического). Аналогом понятия внутр. файла в Си явл понятие потока. Поток(stream)-это последовательность байтов, передаваемая в процессе вв/выв и независящая от конкретного устр., с кот производится обмен инф.
Чтение данных из потока наз-ся помещением или подключением.
По направлению обмена потоки можно разделить на входные(данные вводятся в пам.) и данные выводимые из памяти.
По виду устр. с кот. работает поток их можно разделить на:
-стандартные (для передачи данных от клав)
-файловые(для обмена инф. с файлами на внеш носит.)
-строковые(для работы с массивами симв в операт пам)
Для поддержки потоков библ Си содержит иерархию классов построенную на основе класса ios(includeoutputstream)
Этот класс содержит общие для вв и выв поля и методы.
Иерархия классов
16. Стандартные потоки.
Прямыми потоками класса ios (производными классами) явл-ся класс istream (класс входных потоков) и ostream(класс выходных потоков); потомком этих 2-х классов явл класс iostream вв/выв).
Объект cout принадлежит классу ofstream и представляет собой поток вывода связанный с дисплеем.Оп. поместить в поток cout<<aозначает, что зн. «а» должно быть выв. из пам.на дисплей.
Объект cin принадлежит iostream и явл.потоком связанным с клав. Операции:взять из потока cin>>а означает что значение перем. а должно быть вв с клав в пам.
17. Файловые потоки. Запись данных в файл. Режимы открытия файлов.
При обработке файлов в Си исп. 3 класса:
1)ifstream-класс входных потоков,вып.опер.вв. из файла.
2)ofstream-класс выходных пот,вып.опер.выв в файл.
3)fstream-класс двунаправленных ф.пот.,вып.вв/выв инф.
Эти классы явл. производными от классов istream,ostream,iostream. Поэтому они наследуют операции >>,<< и др.оп.
По способу доступа файлы можно разделить на:
1) последовательные (текстовые,чт. и зап. в кот.произв-ся с начала байт зи байтом)
2) файлы с произвольным доступом(бинарные, допускающие чт.и зап. в указ. позиц.)
Создание ф.послед.доступа и запись его данных.
1)#include<fstream.h>
2)объединяем файловую перем.выходного ф-ого потока.
ofstreamfout:
открываем физ-ий файл fout.open (“имя физ.файла”)
ofstreamfout(“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::nocreate)
18. Чтение данных из файла.
1) Подкл.библ. fstream
2) Объявл.ф-вую перем входного ф.потока.
3) откр.физ.ф. ifstream.fin(“input.txt”,[режим откр.ф.])
4) Вв данные из ф. fin>>a
5) Закрываем fin.close();
19. Форматирование данных: флаги форматирования. Манипуляторы.
Ф. может осущ 3-мя способами:
1) с пом. флагов
2) с пом. манипуляторов
3) с пом. форматирующих методов
1 способ
Флаги представл.собой отдельные виды объединенные в поле x_flags класса ios.
left-выравн. по левому краю
right-по правому(умолч)
dec: десятичн.сис.счисл.(умолч)
oсt: 8-ая сис.сч.
hex: 16-аясис.сч.
scientific:выв вещ.чисел в форме мантиссы с порядком.
fixet: выв вещ чисел в форме с фиксир. точкой.
Кроме флагов для форм-я исп.след.поля класса ios:
x_width- задаёт мин. ширину выв.
x_precision- задаёт кол-во цифр дроб.части при выв значения fixed или общее кол-во значащих цифр при выв знач scientific.
Манипуляторы. (<iomanip.h>)
М. делятся на:
1)простые, не требующие указания аргумента.
2)параметризированные: требуют парам.
Пользоваться манн.проще чем флагами.
Параметриз.ман.
setbase(intn)-задаёт парам сис.сч.
setfill-устанавливает символ заполнитель с кодом равным значению парам
setprecision- устанавливает макс.кол-во в дробной части, если число с фикс точкой, или если число представлено её мант. и парядком.
setw(int)-задаёт макс. ширину поля вв.
20. Строки: описание, ввод/вывод.
В Си 2 вида строк: Си строки и Класс стандартные библ Си, класс стринг. Си строка представл. собой масс симв завершающийся сим-м с кодом нуль(‘
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Требуется разобрать ст. 135 Налогового кодекса по составу напогового...
Решение задач, Налоговое право
Срок сдачи к 5 дек.
Школьный кабинет химии и его роль в химико-образовательном процессе
Курсовая, Методика преподавания химии
Срок сдачи к 26 дек.
Реферат по теме «общественное мнение как объект манипулятивного воздействий. интерпретация общественного мнения по п. бурдьё»
Реферат, Социология
Срок сдачи к 9 дек.
Выполнить курсовую работу. Образовательные стандарты и программы. Е-01220
Курсовая, Английский язык
Срок сдачи к 10 дек.
Изложение темы: экзистенциализм. основные идеи с. кьеркегора.
Реферат, Философия
Срок сдачи к 12 дек.
Заполните форму и узнайте цену на индивидуальную работу!