Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Введение 4 страница




cin>>s1>>s2; // считали две слова

if (s1!=s2) // использовали функцию!= (не равно)

// класса string

{

string s3=s1+" "+s2+"\n"; //конкатенация строк класса //string для создания новой строки

cout<<s3;

 

}

else cout<<"First = "<<s1[0];

}

Опишем наиболее используемые методы класса string.

Метод size_type [1] size() const и метод size_type length() const возвращают размер строки.

Метод insert (size_type posl, const string & str) вставляет строку str в вызывающую строку, начиная с позиции posl.

Метод replace (size_type posl, size_type n1, const string & str) заменяет n1 элементов, начиная с позиции pos1 вызывающей строки, элементами строки str.

Метод string substr (size_type pos=0, size_type n=NPOS) const возвращает подстроку длины n, назиная с позиции pos.

Метод size_type find (const string& str, size_type pos=0) const / size_type rfind (const string& str, size_type pos=0) const ищет самое левое/правое вхождение строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.

Метод size_type find (char с, size_type pos=0) const / size_type find (char с, size_type pos=0) const ищет самое левое/ правое вхождение символа с в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.

Метод size_type find_first_of (const string& str, size_type pos=0) const/ size_type find_last_of (const string& str, size_type pos=0) const ищет самое левое/ правое вхождение любого символа строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.

Метод swap (const string& str) обменивает содрежимое вызывающей строки и строи str.

Метод erase (size_type pos=0, size_type n= NPOS) удаляет n элементов, начиная с позиции pos.

Метод clear () ощищает всю строку.

Метод size_type copy (char * s, size_type n, size_type pos=0) const копирует в символьный массив s n элементов вызывающей строки, начиная с позиции pos. Возращается количество скопированных элементов.

 

 

Пример 2. Решим задачу из примера 6.3., использую класс string. Вывести слова введенной строки, начинающиеся с гласной буквы, на экран столбиком, без разделительных знаков (пробел, табуляция, точка, запятая и т.п.).

void main ()

{

string s,s1,*s2;//Cоздали два объекта класса

//string и указатель на объект классса string

int k=0;

string razd=",.:";

/*Создали объект класса string, с помощью конструктора копирования для хранения разделителей между словами */

string glas="aeoiuy";

/*Создали объект класса string, с помощью конструктора копирования для хранения гласных*/

cout<<"Enter string ";

getline(cin,s);//Считали строку из потока cin

s2=new string [s.length()/2];//Выделили память под

//массив строк

s1=s;

/* Скопировали строку s в строку s1 с помощью переопредленной операции = */

 

int n= s1.find_first_of(razd);

/*Нашли позицию первого разделителя в строке s1*/

while (n!=NPOS)

{

if (n)

{

s2[k]=s1.substr(0,n);

/*Сохранили подстроку до разделителя как очередной элемент массива */

if (glas.find(s2[k][0])!=NPOS)cout<<"\n"<<s2[k];

k++;

}

s1=s1.substr(n+1);

/*Далее рассматриваем только оставшуюся часть строки*/

n=s1.find_first_of(razd);//Нашли позицию очередного

//разделителя

}

s2[k]=s1; //Обработка последнего слова

if (glas.find(s2[k][0])!=NPOS)cout<<"\n"<<s2[k];

}

Отметим, что в данном решении задачи, так же как и в решении задачи в примере 6.3. массив слов введен лишь для демонстрации возможности сохранения слов в массиве для дальнейшей обработки. Однако, в данной задачи не предполагается дальнейшая обработка выделенных из строки слов, поэтому нет необходимости сохранять их в массиве. Поэтому целесообразнее не определять массив строк string *s2, а определить лишь одну строку string s2, которую и использовать для обработки очередного выделенного слова.

 

 

Задание 3. Класс fstream

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1-12 задания 4 из параграфа 1.6, использую класс fstream.

 

Для поддержки файлового ввода и вывода стандартная библиотека С++ содержит классы ifstream (входной файловый поток), ofstream(выходной файловый поток), fstream (двунаправленный файловый поток). Файловый потоки обеспечивают более надежный ввод/вывод, чем стандартные функции библиотеки С. Для использования файловый потоков необходимо подключить к программе заголовочный файл <fsteam.h>.

Над файловыми потоками можно выполнять следующие операции:

- создание потока (потокового объекта)

- открытие потока и связывание его с файлом

- обмен с потоком (ввод/вывод)

- закрытие файла (отсоединение от потока).

Создание потока можно осуществитьс с помощью конструктора без параметров, например

ofstream outFile;// создан выходной поток

Чтобы свзяать поток, созданный таким образом, с файлом используют метод open().

Например,

outFile.open(“1.txt”);

Метод open() может иметь следующие параметры

ios::in Открыть файл для ввода

ios::out Открыть файл для вывода

ios::ate Установить указатель на конец файла

ios::app Открыть в режиме добавления в конец файла

ios::trunc Если файл сущесвтует обрезать его до нулевой длины

ios::binary Открыть в двоичном режиме

ios::nocreate Если файл не существует, установить поток в нулевое значение

ios::noreplace Если файл существует, устновить поток в нулевое значение

Обмен данных с файлами входными и выходными потоками осуществяется также как со стандарными потоками cin и cout соотвественно – с помощью опраций чтения из потока (>>) и записи в поток (<<) и специальных методов.

Например,

char c, s[20];

inFile.get(c);// считали очередной символ в переменную с

inFile>>c;//считали очердной символ в переменную с

inFile.getline(s,sizeof(s)); // считали строку в массив s

outFile.put(c); // записали символ с

outFile<<c<<s; //записали символ с и строку s

 

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

При различных ошибочных ситуациях, напрмер переполнение диска или отсутсвия файла на диске, потоковый объект утанавливается в нулевое значение. Например,

ifstream inFile(“1.txt“);

if (!inFile) cout<<"Не существет такого файла!";

Для закрытия файла (отсоединения от потока) используют метод close(). Например,

outFile.close();

Пример. Решим задачу из примера 6.4, использую класс fstream. Дан текстовый файл, строки которого содержат не более m (m <=20) символов. Считать строки и записать их в файл result.txt в порядке считывания, причем каждая строка должна быть «перевернута».

#include <fstream.h>

 

void main ()

{

char filename[255];

cout<<"Введите имя файла ";

cin>>filename;

ifstream inFile(filename);

/*определили входной файловй поток (для чтения) и прикрепили к нему файл с именем filename */

 

if (inFile) // Если файл успешно открыт

{

ofstream outFile; //определили выходной файловый поток

//(для записи)

outFile.open("result.txt"); //присоединили файл с именем

//"result.txt" к выходному потоку

char s[20];// определяем массив для хранения

//считанной строки

while(!inFile.eof()) //Цикл считывания строк

{

inFile.getline(s,sizeof(s));// Считали очередную строку

int l=strlen(s);

if (s[l-1]!='\n') outFile<<s[l-1];

for (int j=l-2; j>=0; j--) outFile<<s[j];

//цикл записи символов строки в обратном порядке

outFile<<'\n';//запись символа новой строки

}

inFile.close();

outFile.close ();

cout<<"Файл записан";

}

else cout<<"Не существет такого файла!";

}

Задание 4. Наследование

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1-10.

 

1. Описать базовый класс CStr - строка. Обязательные поля класса CStr: указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки; значение типа int — хранит длину строки в байтах. Обязательные методы должны выполнять следующие действия: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор, принимающий в качестве параметра символ; конструктор копирования; получение длины строки; очистка строки (сделать строку пустой); деструктор. Переопределить следующие операции: присваивание (=); сложение (+) — конкатенация строк; операция (==) - проверка на равенство. Описать производный от СStr класс CDstr - десятичная строка. Строки данного класса могут содержать только символы десятичных цифр и символы - и +, задающие знак числа. Символы - или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, десятичная строка принимает нулевое значение. Содержимое данной строки рассматривается как десятичное число. Класс CDStr содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор; метод, преобразующий данную строку в целое число. Переопределить следующие операции: присваивание (=); вычитание (-) — арифметическая разность строк; операция >— проверка на больше (по значению); операция < — проверка на меньше (по значению). Написать демонстрационную программу.

2. Описать базовый класс CStr – строка (см. задачу 1). Описать производный от СStr класс CSStr – шестнадцатеричная строка. Строки данного класса могут содержать только шестнадцатиричные символы. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, строка принимает нулевое значение. Содержимое данной строки рассматривается как знаковое шестнадцатеричное число.. Класс CSStr содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор, метод, преобразующий данную строку в целое десятичное число, метод изменение знака на противоположный (перевод числа в дополнительный код). Переопределить следующие операции: присваивание (=); сложение (+) — арифметическая сумма строк; операция (==) — проверка на равенство. Написать демонстрационную программу.

3. Описать базовый класс CStr – строка (см. задачу 1). Описать производный от CStr класс CStr_ID – строка - идентификатор. Строки данного класса строятся по правилам записи идентификаторов в языке С и могут включать в себя только те символы, которые могут входить в состав С-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая строка-идентификатор. Класс CStr_ID содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор, принимающий в качестве параметра символ; конструктор копирования; деструктор. Переопределить следующие операции: присваивание (=); больше (>) - проверка на больше. (Строка считается больше другой, если код символа первой строки в i -й позиции, i изменяется от 0 до n -1, где n — длина более короткой строки, больше кода символа в той же позиции во второй строке, длины строк могут не совпадать), меньше (<) - проверка на меньше. Написать демонстрационную программу.

4. Описать базовый класс CStr – строка (см. задачу 1). Описать производный от CStr класс CStr_С – строка – комментарий. Строки данного класса строятся по правилам записи комментариев в С++. Если исходные данные противоречат правилам записи идентификатора, то создается пустая строка-идентификатор. Класс CStr_С содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; перевод всех символов строки в верхний регистр; перевод всех символов строки в нижний регистр; поиск первого вхождения символа в строку; деструктор. Переопределить следующие операции: присваивание (=); сложение (+) - операция конкатенации строк; вычитание (-) — из строки (первый операнд) удаляются все символы, входящие в строку, — второй операнд, при этом может получиться пустая строка. Написать демонстрационную программу.

5. Описать базовый класс CStr – строка (см. задачу 1). Описать производный от CStr класс CСomplex– комплексное число. Строки данного класса состоят из двух полей, разделенных символом i. Каждое из полей может содержать только символы десятичных цифр и символы + и -, задающие знак числа. Символы + и – могут находиться только в первой позиции числа, причем символ + может отсутствовать. Если исходные данные противоречат правилам записи комплексного числа, то комплексное число принимает нулевое значение. Класс CStr_ID содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор. Переопределить следующие операции: присваивание (=); операция (==) – проверка на равенство; умножение (-). Написать демонстрационную программу.

6. Создать класс CPoint — точка. На его основе создать классы CcoloredPoint – цветная точка и Cline - линия. На основе класса CLine создать класс CcoloredLine – цветная линия. Все классы должны иметь методы для установки и получения значений всех координат. Классы CcoloredPoint и CcoloredLine должны иметь обязательные поля – 2 точки и имя, обязательные методы для изменения цвета и получения текущего цвета. Классы CLine и CcoloredLine должны иметь конструкторы без параметров, конструктор, принимающий в качестве параметров 2 точки (и цвет), конструктор копирования. Определить методы, проверяющие, являются ли линии параллельные, перпендикулярными. Переопределить операции присваивания (=), сравнения (==) – проверка на совпадение линий. Написать демонстрационную программу.

7. Описать класс Cpoint - точка. Описать класс прямоугольник CRectangle. Обязательные поля класса CRectangle: char* - имя прямоугольника, 4 объекта класса CPoint, 4 поля типа double – стороны прямоугольника. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого прямоугольника); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор. Переопределить операцию присваивания (=). Описать производный класс CQuadrate – квадрат. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого квадрата); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор. Переопределить следующие операции: присваивание (=); операцию (==) – сравнение по площади. Написать демонстрационную программу.

8. Описать класс CPoint - точка. Описать класс прямоугольник CRectangle (см. задачу 7). Описать производный класс CTrapezoid – трапеция. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого квадрата); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор, метод, проверяющий, является ли трапеция равнобедренной. Переопределить операцию присваивания (=). Для классов CRectangle и CTrapezoid определить метод, проверяющий две фигуры на пересечение. Написать демонстрационную программу.

9. Описать класс CPoint - точка. Описать класс четырехугольник CTetragon. Обязательные поля класса CTetragon: char* - имя прямоугольника, 4 объекта класса CPoint, 4 поля типа double – стороны четырех угольника. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого прямоугольника); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения периметра, деструктор. Переопределить операцию присваивания (=), операцию (<) – сравнение по длине периметра. Описать производный класс CRectangle – прямоугольник. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого квадрата); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения периметра, деструктор. Переопределить следующие операции: присваивание (=); операцию (<) – сравнение по длине периметра. Для классов CTetragon и CRectangle определить метод, определяющий факт включения одной фигуры в другую. Написать демонстрационную программу.

10. Описать класс CPoint - точка. Описать класс четырехугольник CTetragon (см. задачу 9). Описать производный класс СParallelogram – параллелограмм. Обязательные методы должны выполнять следующие действия: конструктор без параметров (нулевого параллелограмма); конструктор, принимающий в качестве параметра 4 точки, конструктор копирования; метод получения площади, метод получения периметра, деструктор. Переопределить следующие операции: присваивание (=); операцию (<) – сравнения по площади. Для классов CTetragon и СParallelogram определить метод, перемещения на плоскости. Написать демонстрационную программу.

 

Список литературы

1. Березин Б. И., Березин С. Б. Начальный курс С и С++. – М.: Диалог, 2000. – 288 с.

2. Дейтел Х. М., Дейтел П. Дж. Как программировать на C++.– М.: Бином, 2000.- 1024 с.

3. Джамса К. Учимся программировать на языке C++. – М.: Мир, 2000.- 320с.

4. Климова Л.М. Основы программирования на языке С++. М.: Изд-во «Приор», 1999. – 464 с.

5. Крячков А.В., Сухинова И.В., Томшин. В.К. Программирование на С и С++. Практикум – М.: Горячая линия-Телеком, 2000. –344с.

6. Подбельский В.В. Язык С++. – М.: Финансы и статистика, 2000.- 560с.

7. Стауструп Б. Язык программирования С++. – М.: Бином, 1999. – 991с.

8. Шилдт Г. Справочник программиста по С/C++. М.: Вильямс, 2001

 


[1] Идентификатор size_type является синонимом типа unsigned int.

Учебное пособие посвящено изучению основ объектно-ориентрованного программирования на языке С#.

Язык C# - один из самых популярных в мире на сегодняшний день языков программирования. Язык разрабтовался под рукводством Андреаса Хейлсберга, сотрудника компании Microsoft. Первая версия стандарта языка была принята в 2001 году, последния на данный момент – четвертая вервия в 2006 году (Standard ECMA-334 C# Language Specifications, 4-th edition). Отметим, что каждая новая версия языка включает принципиально новые свойства. В данном учебном пособии рассматриватеся версия языка С# 3.0.

Отметим основные особенности языка C#:

- C# является объектно-ориентированным языком;

- C# создавался и развивается параллельно с карсасом Framework.Net и учитывает все его возможности;

- C# является наследником языка С и C++, следовательно, общий синтаксис, общие операторы языка облегчают переход от языков С и С++ к C#;

- сохранив основные черты своих родителей, язык стал проще и надежнее;

- Framework.Net поддерживает разнообразие типов приложений на C#.

Данное учебное пособие предназначено для методического обеспечения практических занятий и самостоятельной работы по дисциплине «Программирование» по направлениям подготовки бакалавров «Программная инженерия» и «Прикладная информатика». Данная дисциплина основана на знаниях, полученных в результате изучения дисциплины «Информатика и программирование» и является базисом для изучения таких общепрофессиональных и специальных дисциплин как «Программная инженерия», «Проектирование человеко-машинного интерфейса», «Функциональное программирование», «Параллельное программирование». Пособие также может быть использовано студентами любых специальностей и направлений, изучающих объектно-ориентированное программирование и желающих освоить основы языка С#.

Целью дисциплины «Программирование» является изучение основ объектно-ориентированного программирования и получение навыков разработки объектно-ориентированных программ на языке С# в современной среде программирования MS Visual Studio 2010.

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

Каждая глава пособия содержит краткий теоретический материал, необходимый для выполнения практических заданий по программированию, примеры решения заданий, а также варианты заданий. Все примеры в пособии разработаны в интегрированной среде программирования MS Visual Studio 2010.

 


 

Глава 1. Структура программы на языке С#

Для того чтобы описать структуру программы, написанной на C#, необходимо ввести понятие класса. Подробно способы описания и использования классов будут рассмотрены в главе 7.

Класс описывает общее свойства и общее поведения для объектов одного типа. В программе класс – это тип данных, определяемый пользователем.

Для создания простейшего класса в С# используют запись

class имя_класса

{список элементов};

Обычно класс содержит следующие элементы:

- поля, определяющие данные которые хранит класс (свойства объектов);

- методы, определяющие функции обработки этих данных (поведение объектов).

Синтаксис описания полей класса в С# в целом соответствует синтаксису описания переменных в языке С, а синтаксис описание методов в С# в целом соответствует – синтаксису описанию функций в языке С (см главу 7).

Однако работа с полями и методам класса отличается от работы с обычными переменными и функциями. Для того чтобы обратиться к любому элементу класса (полю или методу) используют операцию уточненного имени:

имя_класса.имя_элемента

или

имя_объекта_класса.имя_элемента

Программист может описывать собственные классы и также может использовать стандартные классы.

Например, для ввода-вывода данных для консольных приложений в языке С# используется стандартный класс с именем Console из библиотеки классов.Net[1].

Для того чтобы использовать любой из его методов в программе необходимо использовать следующую запись:

Console.имя_метода([список параметров])

Например, для вывода данных на экран используется метод WriteLine. Метод является переопределенным и может использоваться с разными параметрами. Для вывода строки на экран используется метод WriteLine с параметром строковой константы, например:

Console. WriteLine (“Hello, World”);

Все стандартные классы библиотеки.Net и классы, которые создает программист организованы в единую иерархическую структуру классов с одним общим предком – классом object. Внутри этой иерархии классы сгруппированы в так называемые пространства имен. Любая программа использует пространство имен System. В этом пространстве имен определены классы, обеспечивающие базовые функции программы: ввод-вывод, математические операции, управление памятью и др. Например, упомянутый выше класс Console описан именно в пространстве имен System. Для того, чтобы в программе использовать стандартный класс можно перед его именем указать через точку имя пространства имен, например,

System.Console.WriteLine("\nHello, World!\n");

Однако удобнее для использования стандартных класс в начале программы подключить соответствующее пространство имеем с помощью директивы

using Имя-простаства_имен

Например, чтобы использовать класс Console подключают пространство имен System:

using System;

В этом случае в программе можно непосредственно использовать имя класса без указания его пространства имен, например,

Console. WriteLine (“Hello, World”);

Рассмотрим простейшую программу, выводящую на экран строку Hello, world.

// Program.cs

using System;

 

namespace ConsoleApplication1

{

class Program

{

static void Main()

{

Console.WriteLine("\nHello, World!");

Console.ReadKey();

}

}

}

В первой строке данной программы находится однострочный комментарий. В приведенном комментарии указано имя файла, в котором хранится исходный текст программы. В С#, так же как и в языке С, комментарии задаются двумя основными способами. Для однострочных комментариев используют символы //, как в нашем примере. Для многострочных комментариев можно использовать символы /*, */, между которыми и должен находится сам текст комментария. В тексте комментария могут содержаться любые символы, а вся последовательность символов эквивалентна символу пропуска (например, символу пробела). Комментарии не могут быть вложенными. Кроме того, в языке С# есть еще один способ задания комментариев, который используется для формирования документации к программе в формате XML. Такие комментарии начинаются с символов ///.

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

В третьей строке программы с помощью ключевого слова namespace создается собственное пространство имен проекта. Обратите внимание, что при создании проекта в Visual Studio это имя пространства имен будет по умолчанию совпадать с именем проекта (в этом примере ConsoleApplication1), однако его можно изменить. Собственное пространство имен проекта создается для того, что в нем можно было описывать программные объекты (например, классы) с любыми именами, не заботясь о том, что объекты с такими именами существуют в других пространствах имен. Все объекты программы в данном пространстве имен описываются внутри операторах скобок языка C# {}.

Любая программа на языке C# представляет собой набор взаимодействующих между собой классов, следовательно, должна содержать хотя бы один класс. В нашем примере описан один класс с именем Program. Обратите внимание, что при создании проекта в Visual Studio имя класса будет по умолчанию совпадать с именем файла исходного текса с расширением.cs, однако его можно изменить.

В нашем примере class Program содержит только один элемент, а именно метод с именем Main.

Каждая программа должна содержать метод с именем Main, и работа программы начинается с именно с выполнения этого метода.

Любой метод в языке C#, как и функция в языке С, состоит из заголовка и тела. Заголовок метода должен в обязательном порядке определять его тип, имя и в круглых скобках список параметров (может быть пустой). В нашем примере метод Main имеет заголовок

static void Main()

Из данного заголовка видно, что тип этого метода void (спецификатор типа, указывающий, что метод не возвращает никакого значения), имя Main, а список параметров пуст. Спецификатор static означает, что данный метод класса является статическим, т.е. его можно использовать без создания объекта класса.

Тело метода определяет выполняемые в нем действия и представляет заключенную в фигурные скобки последовательность описаний и операторов. Каждое описание и оператор заканчивается символом ‘;’. В данном примере в теле метода Main нет явных описаний, а есть только два оператора:

Console.WriteLine("\nHello, World!");

Console.ReadKey();

Первый из них, как было указано выше, представляет собой вызов метода WriteLine (вывода на экран) из класса Console. В данном случае на экран выводится строка "\nHello, World!". Строковая константа в языке С# –это последовательность символов, заключенная в двойные кавычки.




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


Дата добавления: 2014-12-27; Просмотров: 672; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.122 сек.