HTML. Оформление документов с использованием CSS



 

CSS (Cascading Style Sheets- каскадные таблицы стилей) - технология, использующаяся для оформления веб-страниц с помощью стилей.

Основная идея CSS состоит в том, чтобы разделить структуру и содержание веб страниц от их оформления:

- c помощью HTML создается страница - ее каркас, а также вносится ее содержимое.
- с помощью CSS создается дизайн - задается оформление для элементов страницы.

Стили - это набор правил форматирования, применяемых к элементам страницы для изменения их свойств и параметров представления на странице: в основном это касается их внешнего вида и занимаемого положения.

Стили представлены свойствами CSS. Каждое свойство по своему влияет на оформление того или иного элемента страницы. Некоторые свойства не применимы к некоторым элементам.

Элементы страницы - это теги HTML или их содержимое.

Существует три способа применения стилей к элементам страницы:

I способ - Внутренние стили

II способ - Глобальные стили

III способ - Связанные или внешние стили

 

  Пример:

<link rel="stylesheet" type="text/css" href="My_base.css" />

Или же иной пример

<style type="text/css">

body {background-color:Silver}

h1 {text-align: center; color:teal; font-family:fantasy}

h2 {text-align: center; color:purple;font-family:Arial}

 

Задание:Разработать класс, характеризующий ж/д вагон (кол - во мест, тип вагона, и т.д.).Класс должен иметь конструктор по умолчанию и конструктор с параметрами

 


#include<string>
#include<iostream>
#include<stdio.h>
#include <stdlib.h>
using namespace std;
//объявление класса

class RadioDet
{
private:
std::string tip;
int nominal;
public:
RadioDet();
RadioDet(std::string t,int nom);
~RadioDet();
std::string GetTip();
void SetTip(std::string t);
int GetNom();
void SetNom(int nom);
};
//программа использующая класс

int main()
{
int n=3;
RadioDet R1;
RadioDet R2("Diod",200);
R1.SetTip("Usilitel");
R1.SetNom(100);
cout«R1.GetTip()«" "«R1.GetNom()«endl;
cout«R2.GetTip()«" "«R2.GetNom()«endl;

 

RadioDet R3[n];
std::string nt;
int nnom;
for(int i=0;i<n;i++)
{
cout«"Vvedite tip ";
cin»nt;
R3[i].SetTip(nt);

cout«"Vvedite nominal ";
cin»nnom;
R3[i].SetNom(nnom);
}
for(int i=0;i<n;i++)
cout«R3[i].GetTip()«" "«R3[i].GetNom()«endl;
return 0;}

RadioDet::RadioDet()
{ }
RadioDet::RadioDet(std::string t,int nom)

{tip=t;
nominal=nom;}
RadioDet::~RadioDet()
{}
std::stringRadioDet::GetTip()
{return tip;}
int RadioDet::GetNom()
{return nominal;}
void RadioDet::SetTip(std::stringt)
{tip=t;}
void RadioDet::SetNom(intnom)
{nominal=nom;}


Билет 18.

HTML. Типы CSS

Для добавления стилей на веб-страницу существует несколько способов, которые различаются своими возможностями и назначением. Далее рассмотрим их подробнее.

При использовании связанных стилей описание селекторов и их значений располагается в отдельном файле, как правило, с расширением css, а для связывания документа с этим файлом применяется тег <link>. Данный тег помещается в контейнер <head>

Значение href задает путь к CSS-файлу, он может быть задан как относительно, так и абсолютно. Заметьте, что таким образом можно подключать таблицу стилей, которая находится на другом сайте.

<title>Внешние стили</title>
<link rel="stylesheet" type="text/css" href="style.css">

Фрагмент кода из файла со стилями:

p {border:#FF0000 solid 2px; color:#33CC99; padding:5px}
h2 {border:#33CC99 solid 2px; background-color:#FF0066; color:#FFFFFF;padding:5px}

Файл со стилем не хранит никаких данных, кроме синтаксиса CSS. В свою очередь и HTML-документ содержит только ссылку на файл со стилем, т.е. таким способом в полной мере реализуется принцип разделения кода и оформления сайта. Поэтому использование связанных стилей является наиболее универсальным и удобным методом добавления стиля на сайт. Ведь стили хранятся в одном файле, а в HTML-документах указывается только ссылка на него.

 

При использовании глобальных стилей свойства CSS описываются в самом документе и располагаются в заголовке веб-страницы. По своей гибкости и возможностям этот способ добавления стиля уступает предыдущему, но также позволяет хранить стили в одном месте, в данном случае прямо на той же странице с помощью контейнера <style>

<title>Глобальные стили </title>
<style type="text/css">
p {font-size:16px; font-style:italic; color:#339999} </style> </head>

 

Внутренний или встроенный стиль является по существу расширением для одиночного тега используемого на текущей веб-странице. Для определения стиля используется атрибут style, а его значением выступает набор стилевых правил .

<p style="font-size:20px; color:#3366CC;"></p>

 

Все описанные методы использования CSS могут применяться как самостоятельно, так и в сочетании друг с другом. В этом случае необходимо помнить об их иерархии. Первым всегда применяется внутренний стиль, затем глобальный стиль и в последнюю очередь связанный стиль.

Задание:Разработать класс, характеризующий функцию (процедуру) любого языка программирования (имя, тип и кол - во параметров и т.д.).Класс должен иметь конструктор по умолчанию и конструктор с параметрами

#include<string> #include<iostream> #include<stdio.h> #include <stdlib.h> using namespace std; //объявление класса class RadioDet { private: std::string tip; int nominal; public: RadioDet(); RadioDet(std::string t,int nom); ~RadioDet(); std::string GetTip(); void SetTip(std::string t); int GetNom(); void SetNom(int nom); }; //программа использующая класс int main() { int n=3; RadioDet R1; RadioDet R2("Diod",200); R1.SetTip("Usilitel"); R1.SetNom(100); cout«R1.GetTip()«" "«R1.GetNom()«endl; cout«R2.GetTip()«" "«R2.GetNom()«endl; RadioDet R3[n]; std::string nt; int nnom; for(int i=0;i<n;i++) { cout«"Vvedite tip "; cin»nt; R3[i].SetTip(nt); cout«"Vvedite nominal "; cin»nnom; R3[i].SetNom(nnom); } for(int i=0;i<n;i++) cout«R3[i].GetTip()«" "«R3[i].GetNom()«endl; return 0; }RadioDet::RadioDet() {//конструкторпоумолчанию } RadioDet::RadioDet(std::string t,int nom) //конструктор с параметрами {tip=t; nominal=nom;} RadioDet::~RadioDet() { } std::stringRadioDet::GetTip() {return tip;} int RadioDet::GetNom() {return nominal;} void RadioDet::SetTip(std::stringt) {tip=t;} void RadioDet::SetNom(intnom) {nominal=nom;}  

 

Билет 21. Билет 29.

Перегрузка операторов в С++

Когда вы определяете в своей программе класс, то по существу вы определяете новый тип. А если так, C++ позволяет вам определить операции, соответствующие этому новому типу. Перегрузка оператора состоит в изменении смысла оператора (например, оператора плюс (+), который обычно в C++ используется для сложения) при использовании его с определенным классом.

· Переопределяя оператор, вы указываете функцию, которую C++ вызывает каждый раз, когда класс использует перегруженный оператор. Эта функция, в свою очередь, выполняет соответствующую операцию.

· Если ваша программа перегружает оператор для определенного класса, то смысл этого оператора изменяется только для указанного класса, оставшаяся часть программы будет продолжать использовать этот оператор для выполнения его стандартных операций.

Операторы, которые нельзя перегружать:

. Выбор элемента
.* Указатель на элемент
:: Разрешение области видимости
?: Условный оператор сравнения

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

Перегрузка операторов может упростить наиболее общие операции класса и улучшить читаемость программы.

Оператор в С++ - это некоторое действие или функция обозначенная специальным символом. Для того что бы распространять эти действия на новые типы данных, при этом сохраняя естественный синтаксис, в С++ была введена возможность перегрузки операторов.

 

Рассмотрим пример перегрузки операторов ввода/ вывода классов istream и ostream для упрощения формы записи ввода и вывода данных объекта класса person через объекты-потоки cin и cout.

// main.cpp // #include "person.h" #include<iostream>   int main() {     Person  My1, My2("Nick",1989);        std::cout << "Enter Name, Year ->"; //использование перегруженного оператора ввода        std::cin >> My1; // использование перегруженного оператора вывода        std::cout << My1;        std::cout<<My2;        return 0;}   // person.h #include <iostream>   class person {        char Name[20];        int Year; public:        person(void);        ~person(void);        person(char* N, int Y);        //Перегрузка ввода через объект класса istream (cin)        friend std::istream& operator>>(std::istream&, person&);        //Перегрузка вывода через объект класса ostream (cout)        friend std::ostream&operator<<(std::ostream&,person&); };   //person.cpp #include ".\person.h" #include<string.h> //#include <iostream>   person::person(void) { } person::~person(void) { } person::person(char* N, int Y) {     strcpy(Name, N);        Year=Y; } std::istream&operator>>(std::istream& is, person& p) {     char buf[20];        int Y;        std::cout << "Name->";        is>>buf;        strcpy(p.Name,buf);        std::cout << "Year->";        is >> Y;        p.Year = Y;        return is; } std::ostream& operator<<(std::ostream& os ,person& p) {        os << "Name " << p.Name << " Year " << p.Year << std::endl;        return os; }  

Задание: НТМL. Вставить в один документ несколько картинок и сделать на них гиперссылки

<HTML>

<HEAD>

<TITLE>New</TITLE>

</HEAD>

<BODY>

<p>Этолес<img src="лес.jpg"></p>

<p> А это поле <img src="поле.jpg"></p>

<a href="лес.jpg">Лес</a><BR>

<a href="поле.jpg">Поле</a><BR>

</BODY>

</HTML>

Задание: НТМL. . Вставить в 2 документа таблицы. В третьем сделать на них гиперссылки

 

1.htm <HTML> <HEAD> <TITLE>1</TITLE> </HEAD> <BODY> <TABLE BORDER> <TR> <TD>Ячейка 1 строки 1</TD> <TD>Ячейка 2 строки 1</TD> </TR> <TR> <TD>Ячейка 1 строки 2</TD> <TD>Ячейка 2 строки 2</TD> </TR> </TABLE> </BODY> </HTML> 2.htm <HTML> <HEAD> <TITLE>2</TITLE> </HEAD> <BODY> <TABLE BORDER> <TR> <TD>Ячейка 1 строки 1</TD> <TD>Ячейка 2 строки 1</TD> </TR> <TR> <TD>Ячейка 1 строки 2</TD> <TD>Ячейка 2 строки 2</TD> </TR> </TABLE> </BODY> </HTML> 3.htm <HTML> <HEAD> <TITLE>3</TITLE> </HEAD> <BODY> <a href="1.htm">таб1</a><BR> <a href="2.htm">таб2</a><BR> </BODY> </HTML>

 

 

Билет 22

Сравнение дружественных функций и методов класса в С++

Для описания дружественной тому или иному классу функции(метода или класса) необходимо в описании этого класса объявить (описать) дружественную функцию с указанием ключевого слова friend. Если функция дружественна нескольким классам, то надо добавить это описание во все классы, к внутренним данным которых производим обращение. В большинстве языков ООП не имеет различия в какой раздел описания класса(publuc, protected или private) вставлено описание дружественной функции.

Но возникает такой вопрос: А как же наша хваленая защищенность данных, если можно получить доступ к данным напрямую ?

Но оказывается, что с точки зрения применимости механизма инкапсуляции, защищенность данных сохраняется, поскольку полностью исключается всякая возможность доступа к данным так, чтобы объект не был осведомлен об этом.

А теперь приведу несколько примеров использования дружественных функций(и не только) в языке С++.

// Описание класса Aclass A {//...void z(); // Описание функции z класса A}; // Описание класса Bclass B {//...friend void A::z(); // Описание функции z класса A как дружественной // классу B, т.е. из функции z класса A можно// получить доступ к внутренним переменным класса B}; // Описание класса Cclass C {//...friend class A; // Описание класса A как дружественного классу C, // все функции класса A будут дружественны классу C и  // из любой функции класса A можно получить доступ к  // внутренним переменным класса C } class Employee //********** Класс "служащий" ****************************** { public: Employee( char *NName, char *NFam, char *NDep, int NAge); virtual void print(); void SetName( char *NName); int GetAge(); char *GetDep( char *NDep); char *GetFam( char *NFam); char *GetName( char *NName); void SetAge( int NAge); void SetDep( char *NDep); void SetFam( char *NFam); Employee(); virtual ~Employee(); friend istream& operator >>(istream&,Employee&); friend ostream& operator <<(ostream&,Employee&);   protected: int Age; char *Dep; char *Name; char *Fam; };

• Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом friend. В качестве параметра ей должен передаваться объект или ссылка на объект класса, поскольку указатель this ей не передается.
• Дружественная функция может быть обычной функцией или методом другого ранее определенного класса. На нее не распространяется действие спецификаторов доступа, место размещения ее объявления в классе безразлично.
• Одна функция может быть дружественной сразу нескольким классами.

 

 

Задание: НТМL. Вставить несколько рисунков в разные документы. В отдельном документе сделать для них гиперссылки

1.htm <HTML> <HEAD> <TITLE>1</TITLE> </HEAD> <BODY><img src="лес.jpg"></BODY> </HTML>   2.htm <HTML> <HEAD> <TITLE>2</TITLE> </HEAD> <BODY><img src="поле.jpg"></BODY> </HTML>   3.htm <HTML> <HEAD> <TITLE>3</TITLE> </HEAD> <BODY> <a href="1.htm">Лес</a><BR> <a href="2.htm">Поле</a><BR> </BODY> </HTML>

 

Билет 30

Структуры в языке С

До сих пор для хранения данных использовались простые типы данных: числа, строки и т.д. Тем не менее, многие объекты, которые возникают в программировании, нельзя охарактеризовать только одной числовой или строковой величиной. Например, точка на плоскости задается парой действительных чисел (x, y), а данные о человеке можно задавать при помощи нескольких строк (фамилии, имени, отчества) и числового параметра: года рождения.

Удобным является использование объектов, объединяющих сразу ряд параметров, каждый из которых может фигурировать, как отдельная переменная.

Для этого используются специальные типы данных, которые в языке C называются структурами. Для определения структуры используется ключевое слово struct. Например, структура Point, задающая точку на плоскости и содержащая два действительных числа x и y может быть задана следующим образом:

struct Point

{

    double x;

    double y;

};

 

Переменные x и y, входящие в структуру Point, называются полями структуры. Определение структуры дается вне всех функций (и, обычно делается перед объявлением всех функций или в отдельном заголовочном файле). Определение структуры обязательно завершается точкой с запятой.

 

После этого мы можем работать с Point, как с новым типом данных, содержащим два поля: x и y. Примеры создания переменной и массива переменных типа Point:

Point P, Arr[10];

Структуры в языке С++ допускают вложенность, то есть использование структурной перемен­ной в качестве поля какой-либо другой структуры.


struct Distance

{

 

int feet;

float inches;

 

};

 

 

struct Room

{

 

Distance length;

Distance width;

 

};
 

Структура - это совокупность переменных, объединенных под одним именем. С помощью структур удобно размещать в смежных полях связанные между собой элементы информации. Объявление структур создает шаблон, который можно использовать для создания ее объектов, то есть экземпляров этой структуры. Переменные, из которых состоит структура, называются членами. Члены структуры еще называют элементами или полями.

Как правило, члены структуры связаны друг с другом. Например, элемент списка рассылки, состоящий из имении адреса, логично представить в виде структуры. В объявлении структуры используется ключевое слово struct. Оно сообщает компьютеру, что объявляется (декларируется) структура.

struct addr

{

char name[30];

char street[40];

char city[20];

char state[3];

unsigned long int zip;

};

Задание: НТМL. Вставить в один документ несколько картинок и сделать на них гиперссылки

<HTML>

<HEAD>

<TITLE>New</TITLE>

</HEAD>

<BODY>

<p>Этолес<img src="лес.jpg"></p>

<p> А это поле <img src="поле.jpg"></p>

<a href="лес.jpg">Лес</a><BR>

<a href="поле.jpg">Поле</a><BR>

</BODY>

</HTML>

 

Билет 33


Дата добавления: 2018-04-04; просмотров: 487; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!