On-line: гостей 0. Всего: 0 [подробнее..]
Форум закрывается и забрасывается в связи с переходом на другой, более презентабельный.ФИЛу было хорошо, но он не выжил.RIP.

АвторСообщение



Сообщение: 2
Зарегистрирован: 08.11.09
Репутация: 0
ссылка на сообщение  Отправлено: 08.11.09 17:16. Заголовок: Уроки C#


by

Урок 1



Введение в C Sharp и .Net


C# (произносится Си-Шарп) - это новый язык программирования от компании Microsoft. Он входит в новую версию Visual Studio - Visual Studio.NET. Кроме C# в Visual Studio.NET входят Visual Basic.NET и Visual C++.
Одна из причин разработки нового языка компанией Microsoft - это создание компонентно-ориентированного языка для новой платформы .NET. Другие языки были созданы до появления платформы .NET, язык же C# создавался специально под эту платформу и не несет с собой груза совместимости с предыдущими версиями языков. Хотя это не означает, что для новой платформы это единственный язык.
Еще одна из причин разработки компанией Microsoft нового языка программирования - это создание альтернативы языку Java. Как известно, реализация Java у Microsoft не была лицензионно чистой - Microsoft в присущей ей манере внесла в свою реализацию много чего от себя. Компания Sun, владелица Java, подала на Microsoft в суд, и Microsoft этот суд проиграла. Тогда Microsoft решила вообще отказаться от Java, и создать свой Java-подобный язык, который и получил название C#.

Если перевести слова NET Runtime на русский язык, то мы получим что-то вроде «Среда выполнения». Именно вы этой среде и выполняется код, получаемый в результате компиляции программы написанной на C#. NET Runtime основын не на ассемблере (т. е. не на коде, родном для процессора), а на некотором промежуточном коде. Отдаленно он напоминает виртуальную Java машину. Только если в случае Java у нас был только один язык для виртуальной машины, то для NET Runtime таких языков может быть несколько. Теоретически программа для среды NET Runtime может выполняться под любой операционной системой, в которой NET Runtime установлена. Но на практике пока единственная платформа для этого - это Windows.


Основные понятия

Assembly (Сборка) – базовый строительный блок приложения в .NET Framework. Управляемые модули объединяются в сборки. Сборка является логической группировкой одного или нескольких управляемых модулей или файлов ресурсов. Управляемые модули в составе сборок исполняются в Среде Времени Выполнения (CLR). Сборка может быть либо исполняемым приложением (при этом она размещается в файле с расширением .exe), либо библиотечным модулем (в файле с расширением .dll). При этом ничего общего с обычными (старого образца!) исполняемыми приложениями и библиотечными модулями сборка не имеет.
Managed Code (Управляемый код) – это код, который выполняется в среде CLR. Код строится на основе объявляемых в исходном модуле структур и классов, содержащих объявления методов. Управляемому коду должен соответствовать определенный уровень информации (метаданных) для среды выполнения. Код C#, Visual Basic, и JScript является управляемым по умолчанию. Код Visual C++ не является управляемым по умолчанию, но компилятор может создавать управляемый код, для этого нужно указать аргумент в командной строке(/CLR). Одной из особенностей управляемого кода является наличие механизмов, которые позволяют работать с управляемыми данными.
Managed Data (Управляемые данные) – объекты, которые в ходе выполнения кода модуля размещаются в управляемой памяти (в управляемой куче) и уничтожаются сборщиком мусора CLR. Данные C#, Visual Basic и JScript .NET являются управляемыми по умолчанию. Данные C# также могут быть помечены как неуправляемые.
GAC (Global Assembly Cache – Общий КЭШ сборок). Для выполнения .NET-приложения достаточно разместить относящиеся к данному приложению сборки в одном каталоге. Если при этом сборка может быть использована в нескольких приложениях, то она размещается и регистрируется с помощью специальной утилиты в GAC.
CTS – Common Type System (Общая Система Типов). Поддерживается всеми языками платформы. В силу того, что .NET основана на парадигме ООП, речь здесь идет об элементарных типах, классах, структурах, интерфейсах, делегатах и перечислениях. Common Type System является важной частью среды выполнения, определяет структуру синтаксических конструкций, способы объявления, использования и применения общих типов среды выполнения. В CTS сосредоточена основная информация о системе общих предопределенных типов, об их использовании и управлении (правилах преобразования значений). CTS играет важную роль в деле интеграции разноязыких управляемых приложений.
Namespace - Пространство имен – это способ организации системы типов в единую группу. В рамках .NET существует единая (общеязыковая) библиотека базовых классов. Концепция пространства имен обеспечивает эффективную организацию и навигацию по этой библиотеке. Вне зависимости от языка программирования, доступ к определенным классам обеспечивается за счет их группировки в рамках общих пространств имен.

NET Runtime состоит из нескольких частей. Одна из них - это Common Language Runtime. Это, говоря кратко, это некоторый набор стандартов, котрые должны поддерживать все языки платформы .NET. Например, в предыдущих версиях Visual Studio была такая проблема, что разные языки по разному хранили данные одного по идее типа. Так, скажем, тип целого в Visual Basic'е занимал два байта, а в Visual C++ - четыре. А это порождало кучу проблем при совместном использовании языков. Так вот, Common Language Runtime как раз в частности и определяет стандартные для все языков .NET типы данных. И уже есть гарантии, что целый тип в одном языке будет в точности соответствовать одноименному типу в другом.
Структура среды выполнения CLR (основные функциональные элементы среды) представлена на рисунке.
Строгий контроль типов, в частности, предполагает проверку соответствия типа объекта диапазону значений, которые могут быть присвоены данному объекту.
Защита .NET (безопасность) строится поверх системы защиты операционной системы компьютера. Она не дает пользователю или коду делать то, что делать не позволено, и накладывает ограничения на выполнение кода. Например, можно запретить доступ некоторым секциям кода к определенным файлам.
Функциональные блоки CLR Code Manager и Garbage Collector работают совместно: Code Manager обеспечивает размещение объектов в управляемой памяти, Garbage Collector – освобождает управляемую память.
Exception Manager включает следующие компоненты:


* finally handler (обеспечивает передачу управления в блок finally);
* fault handler (включается при возникновении исключения);
* type-filtered handler (обеспечивает выполнение кода соответствующего блока обработки исключения);
* user-filtered handler (выбор альтернативного блока исключения).


Ниже представлена схема выполнения .NET-приложения в среде CLR.




Еще одна важная часть NET Runtime - это набор базовых классов. Их очень много (порядка несколько тысяч). Кроме того, эти классы относятся не к конкретному языку, а к NET Runtime. Т. е. мы получаем набор классов, общий для всех языков .NET, что достаточно удобно.
На данный момент последняя версия Visual Studio.NET 2008.
Все уроки будут выполнятся в среде Microsoft Visual Studio, но это не значит что нельзя будет использовать какую либо другую из известных сред. Если у Вас нет среды VS.NET, с сайта производителя можно скачать бесплатную редакцию среды разработки.
-----------------------------------------------------------------------------------------------------------------------------------------------
by

Урок 2

Первая программа на C Sharp

Пишем первую программу на C#. Запускайте Visual Studio.NET. Для создания нового пустого проекта C# нажимаем на кнопку в New Project, или нажимаем комбинацию клавиш Ctrl+Shift+N, или просто заходим в меню File и далее выбираем New и затем Project:



В появившемся окне New Project слева выбираем, естественно, Visual C#, а справа тип приложения - Console Application:



В качестве имени проекта (Name) напечатайте MyFirstApp или что-то в этом роде. Нажмитие кпопку Ok для закрытия данного диалогового окна.
Теперь приступаем к коду. Наша первая программа просто выведет некоторое фиксированное слово в консольное окошко. Вот ее листинг.

[CODE]using System;
namespace first
{
   ///
   /// Summary description for MyFirstClass.
   ///
   class MyFirstClass
   {
       ///
       /// The main entry point for the application.
       ///
       [STAThread]
       static void Main(string[] args)
       {
           //
           // TODO: Add code to start application here
           //
           Console.WriteLine("Я начинаю изучать C#");
       }
   }
}[/CODE]

Запускаем программу, нажав Ctrl+F5. Результат будет таким:



Разберем текст программы поподробнее. Как вы знаете из предыдущего урока, в .NET Runtime существуют пространства имен. Одно из таких пространств - это System. Вообще-то оно добавляется автоматически в любой проект на C#. Так как мы добавили в нашу программу строчку

[CODE]...
using System;
... [/CODE]

то мы можем вместо длинных имен использовать более короткие. В частности, вместо System.Console можно писать просто Console. Что мы делаем в строчке

[CODE]...
Console.WriteLine("Я начинаю изучать C#");
... [/CODE]

Далее мы в нашей программе объявляем класс MyFirstClass. Что такое классы мы посмотрим в последующих уроках, сейчас же достаточно сказать, что в C# не существует глобальных функций, так что нам ничего не остается, как завести сначало класс и затем функцию Main в нем (функция Main обязательно должна быть в каждой программе на C#, и именно с этой функции и начинается выполнение программы. Обратите также внимание, что эта функция пишется с прописной (большой) буквы. C# различает строчные и прописные буквы, так что это важно). Кроме того, эта функция объявлена с модификатором static. Это означает, что она не относится к конкретному экземпляру класса MyFirstClass, а принадлежит всему классу. В нашей функции Main мы просто выводим на экран некоторую строчку методом WriteLine.
Как вы обратили внимание программа выполнилась и быстро закрыла свое окно, для того что бы такого не произошло, добавим еще одну строку в нашу программу:

[CODE]...
Console.WriteLine("Я начинаю изучать C#");
Console.ReadLine();
...
[/CODE]

ReadLine как видно из названия, считывает строку.
Теперь после запуска окно остается и программа ждет ввода. Для завершения ее работы требуется нажать Enter.

Теперь напишем эту же программу но для Windows Forms:
Создадим новый проект, но тип проекта выберем «Windows Forms Application», зададим ему имя MyFirsWinApp, нажмите «OK». Перед вами появилась пустая форма. Поместим на нее кнопку (Button).



После того как разместили кнопку по ней следует кликнуть два раза мышкой, тогда откроется окно редактора кода. Напишем такую строчку:

[CODE]MessageBox.Show ("Я начинаю изучать С#"); [/CODE]

Можно запускать программу.
С первой программой на C# все.
-----------------------------------------------------------------------------------------------------
by

Урок 3

Алфавит и синтаксис C#

АЛФАВИТ С#

Алфавит (или множество литер) языка программирования С# составляют символы таблицы кодов ASCII. Алфавит С# включает:
• строчные и прописные буквы латинского алфавита (мы их будем называть буквами);
• цифры от 0 до 9 (назовем их буквами-цифрами);
• символ «_» (подчеркивание — также считается буквой);
• набор специальных символов: " { }, 1 [ ] + — %/ \; ' : ? < > = ! & # ~ *-
• прочие символы.
Алфавит С# служит для построения слов, которые в C++ называются лексемами. Различают пять типов лексем:
• идентификаторы;
• ключевые слова;
• знаки (символы) операций;
• литералы;
• разделители.
Почти все типы лексем (кроме ключевых слов и идентификаторов) имеют собственные правила словообразования, включая собственные подмножества алфавита.
Лексемы обособляются разделителями. Этой же цели служит множество пробельных символов, к числу которых относятся пробел, табуляция, символ новой строки и комментарии.

ПРАВИЛА ОБРАЗОВАНИЯ ИДЕНТИФИКАТОРОВ

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

РЕКОМЕНДАЦИИ ПО НАИМЕНОВАНИЮ ОБЪЕКТОВ

Имена —это идентификаторы. Любая случайным образом составленная последовательность букв, цифр и знаков подчеркивания с точки зрения грамматики языка идеально подходит на роль имени любого объекта, если только начинается с буквы. Фрагмент программы, содержащий подобную переменную, будет синтаксически безупречен.
И все же имеет смысл воспользоваться дополнительной возможностью облегчить восприятие и понимание последовательностей операторов. Для этого достаточно закодировать с помощью имен содержательную информацию.
Желательно создавать составные осмысленные имена. В этом случае в одно слово можно «втиснуть» предложение, которое в доступной форме представит информацию о типе объекта, его назначении и особенностях использования.

КЛЮЧЕВЫЕ СЛОВА И ИМЕНА

Часть идентификаторов С# входит в фиксированный словарь ключевых слов. Эти идентификаторы образуют подмножество ключевых слов (они так и называются ключевыми словами). Прочие идентификаторы после специального объявления становятся именами. Имена служат для обозначения переменных, типов данных, функций. Обо всем этом позже.
Ниже приводится таблица со списком ключевых слов. Вы не можете использовать эти имена для образования классов, функций, переменных и других языковых структур.
[CODE]
abstract do in protected true
as double int public try
base else interface readonly typeof
bool enum internal ref uint
break event is return ulong
byte explicit lock sbyte unchecked
case extern long sealed unsafe
catch false namespace short ushort
char finally new sizeof using
checked fixed null stackalloc virtual
class float object static void
const for operator string volatile
continue foreach out struct while
decimal goto override switch
default if params this
delegate implicit private throw[/CODE]

КОММЕНТАРИИ


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

ЛИТЕРАЛЫ

В С# существует четыре типа литералов:
• целочисленный литерал;
• вещественный литерал;
• символьный литерал;
• строковый литерал.
Литералы — это особая категория слов языка. Для каждого подмножества литералов используются собственные правила словообразования. Мы не будем приводить их здесь, ограничившись лишь общим описанием структуры и назначения каждого подмножества литералов. После этого правила станут более-менее понятны.
Целочисленный литерал служит для записи целочисленных значений и является соответствующей последовательностью цифр (возможно, со знаком '-'). Целочисленный литерал, начинающийся со знака 0, воспринимается как восьмеричное целое. В этом случае цифры 8 и 9 не должны встречаться среди составляющих литерал символов. Целочисленный литерал, начинающийся с Ох или ОХ, воспринимается как шестнадцатеричное целое. В этом случае целочисленный литерал может включать символы от А или а, до F или f, которые в шестнадцатеричной системе эквивалентны десятичным значениям от 10 до 15. Непосредственно за литералом могут располагаться в произвольном сочетании один или два специальных суффикса: U (или и) и L (или l).
Вещественный литерал служит для отображения вещественных значений. Он фиксирует запись соответствующего значения в обычной десятичной или научной нотациях. В научной нотации мантисса отделяется от порядка литерой Е (или е). Непосредственно за литералом может располагаться один из двух специальных суффиксов: F (или f) и L (или l).
Значением символьного литерала является соответствующее значение ASCII кода (это, разумеется, не только буквы, буквы-цифры или специальные символы алфавита С#). Символьный литерал представляет собой последовательность одной или нескольких литер, заключенных в одинарные кавычки. Символьный литерал служит для представления литер в одном из форматов представления. Например, литера Z может быть представлена литералом «Z», а также литералами «\132» и «\х5А». Любая литера может быть представлена в нескольких форматах представления: обычном, восьмеричном и шестнадцатеричном.
Строковые литералы являются последовательностью (возможно, пустой) литер в одном из возможных форматов представления, заключенных в двойные кавычки. Строковые литералы, расположенные последовательно, соединяются в один литерал, причем литеры соединенных строк остаются различными. Так, последовательность строковых литералов «\xF» «F» после объединения будет содержать две литеры, первая из которых является символьным литералом в шестнадцатеричном формате «\xF», вторая — символьным литералом «F». Строковый литерал и объединенная последовательность строковых литералов заканчиваются пустой литерой, которая используется как индикатор конца литерала.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 7 [только новые]





Сообщение: 3
Зарегистрирован: 08.11.09
Репутация: 0
ссылка на сообщение  Отправлено: 08.11.09 17:22. Заголовок: Внимание! Федерация ..


Внимание! Федерация уважает права авторов. Все права на статьи принадлежат by


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1
Зарегистрирован: 09.11.09
Репутация: 0
ссылка на сообщение  Отправлено: 09.11.09 04:17. Заголовок: я не понимаю, зачем ..


я не понимаю, зачем делать подобный урок? это вроде сайт о создании игр и программировании их, так зачем здесь простой урок по C#?? лудше бы написали как на этом C# делать игры!

Спасибо: 0 
ПрофильЦитата Ответить
Доктор Макс Пэйн




Сообщение: 13
Зарегистрирован: 08.11.09
Откуда: Россия
Репутация: 0
ссылка на сообщение  Отправлено: 09.11.09 08:03. Заголовок: Это так, введение в ..


Это так, введение в тему. Смысл в игровых уроках по С#, если его никто не знает... По скриптингу в Unity будет урок.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2
Зарегистрирован: 09.11.09
Откуда: РССС, Норильск
Репутация: 0
ссылка на сообщение  Отправлено: 09.11.09 11:21. Заголовок: ну если кому то пона..


ну если кому то понадобятся основы могут поискать на других сайтах или книжку прикупить где будет не только основы но и про шаблоны и про классы...


cout << "Hello world =)";
Уроки по программированию игр
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 3
Зарегистрирован: 09.11.09
Откуда: РССС, Норильск
Репутация: 0
ссылка на сообщение  Отправлено: 09.11.09 11:21. Заголовок: ну если кому то пона..


ну если кому то понадобятся основы могут поискать на других сайтах или книжку прикупить где будет не только основы но и про шаблоны и про классы...


cout << "Hello world =)";
Уроки по программированию игр
Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 02.09.10 04:36. Заголовок: Всегда интересовало...


Всегда интересовало. Ведь МС наверное имеет у себя в недрах средство для лёгкой декомпиляции С#?

Спасибо: 0 
Цитата Ответить
Доктор Макс Пэйн




Сообщение: 188
Зарегистрирован: 08.11.09
Откуда: Россия
Репутация: 3
ссылка на сообщение  Отправлено: 02.09.10 09:00. Заголовок: Ну, вообще NET-рефле..


Ну, вообще NET-рефлектором.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



счетчик посещений                                                                                                                                                                                                                                                                                                                
купить Apple iPad                                                             Соколов Максим, 2010. Уникальный дизайн и контент принадлежат MSSG. Все права защищены.