Четверг, 25.04.2024, 08:06
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 11
Дополнительные возможности
для компиляции С#
В настоящем приложении приводится список различных возможностей компи-
лятора С#, которыми можно воспользоваться при выполнении компиляции проек-
тов С# без использования возможностей Visual Studio.NET, либо, если нужно,
чтобы компилятор выполнил какие-либо операции, не поддерживаемые Visual
Studio.NET. Эти опции представлены в виде нескольких таблиц, где они сгруппи-
рованы в соответствии со своей категорией.
В первой таблице приводятся различные форматы файлов, которые могут вклю-
чаться в выходной поток компилятора:
Опция Назначение ч
Выполняется обработка комментариев, предназначенных для создания
XML-документации (помеченных тремя слэшами — / / / ) , и выходной
поток направляется в указанный файл.
Осуществляется компиляция кода, но не создается выходной файл; этот
режим может оказаться полезным для отладки, поскольку в нем можно
увидеть все предупрежден ... Читать дальше »
Категория: информатика | Просмотров: 237131 | Добавил: basic | Дата: 11.02.2010 | Комментарии (91)

Инсталляция MSDE
Предназначенные для работы при больших нагрузках системы управления БД
(database managemant system — DBMS) типа Oracle и Microsoft SQL Server по-
зволяют поддерживать выполнение десятков тысяч транзакций в минуту, при этом
сокращая до минимума время отключения для проведения работ по сопровожде-
нию и внесению изменений. Они представляют собой замечательный пример со-
временного программного обеспечения, однако за эту мощь приходится платить
определенную цену. Прежде всего — дороговизной таких систем DBMS, которая
начинается с несколько тысяч долларов и круто идет вверх при увеличении воз-
можностей. КрОхМе того, за применение систем DBMS промышленного использо-
вания приходится также расплачиваться памятью, мощностью процессора и объемом
памяти на жестком диске, которые необходимы для работы таких систем.
С точки зрения разработчиков установка такой полномасштабной системы на
переносных компью ... Читать дальше »
Категория: информатика | Просмотров: 4642 | Добавил: basic | Дата: 11.02.2010 | Комментарии (1)

Задание переменной среды PATH
Для того чтобы иметь возможность использовать компилятор С# и другой ин-
струментарий .NET из командной строки Windows, необходимо убедиться в том,
что переменная среды PATH соответствующим образом изменена. В командной
строке поиск файлов осуществляется в рамках текущей директории; если же воз-
никает необходимость запустить файл из какой-либо другой директории, то для
этого требуется задать информацию, где именно Windows следует искать требуе-
мый файл. Это может быть сделано с помощью переменной среды PATH. В ней со-
держится список имен директорий, разделенных точкой с запятой, где Windows
будет осуществлять поиск запрашиваемого файла, если его не удается обнаружить
в текущей директории. Необходимо добавить в эту переменную информацию о двух
папках, для того чтобы система Windows могла отыскать все инструменты .NET;
ОДНа ИЗ Н И Х — ЭТО C:\Program Files\Microsoft.Net\Fr ... Читать дальше »
Категория: информатика | Просмотров: 3886 | Добавил: basic | Дата: 11.02.2010 | Комментарии (2)

Создание подписной формы для пользователя
Все страницы, предназначенные для управления списками рассылки и подпис-
чиками, отправки сообщений по электронной почте изменения внешнего представ-
ления, завершены. Осталось создать подписную форму, которая позволит
конечному пользователю подписаться на некоторый список.
Вместо создания одной подписной формы,
создадим страницу ASP.NET (см. рис. слева),
которая будет автоматически генерировать
HTML-форму для заданного списка рассылки.
Администратор сначала выбирает список
рассылки, для которого он собирается созда-
вать подписную форму, потом определяет не-
обходимость наличия полей для первого
и последнего имени (эти поля при подписке
не являются обязательными, поэтому форма
вполне может без них обойтись). Создавае-
мая форма будет иметь две кнопки, которые
реализуют две возможности пользователя —
подписаться и отказаться от подписки. При
нажатии кн ... Читать дальше »
Категория: информатика | Просмотров: 3193 | Добавил: basic | Дата: 11.02.2010 | Комментарии (4)

Редактирование и обновление списков
М ы переходим к реализации методов, которые осуществляют редактирование
и обновление списков:
protected void ListsGrid_Edit (object sender, DataGridCoiranandEventArgs e)
{
ShowAddNewControls(false);
//начать редактирование
ListsGrid.Editltemlndex = (int)e.Item.Itemlndex;
BindGridO;
•• • i i i > i ушшшшш ш •••:
:- • •' : " v ••.-•• ш
protected void ListsGrid_CancelEdit (object sender", DataGridCornmandEyentArgs
ListsGrid.Editltemlndex = -I;
. • • • • . , • • . . - . • , • . . . • . B i n d G r i d O ; •••• . • ' • ' • : • ••'••' '' : " : ; ; • : V ' \ . : , - - : • , . • • • ; . . . .. : •
: protected void ListsGrid_Update(object sender, DataGridCoiranandEventArgs e)
: : • < •'•' . •.''/. - : : ' : -
if (Page.IsValid)
{ ' Щ. •• - ; :
:
.;. //получить новые данные из диалоговых окон
string ListName = ((TextBox)e.Item.FindControl("EditListName")).T ... Читать дальше »
Категория: информатика | Просмотров: 2281 | Добавил: basic | Дата: 11.02.2010 | Комментарии (4)

Управление конфигурацией данных
Программа рассылки новостей может быть настроена со спе-
циальными подтверждениями, именем и электронным адресом
администратора, и некоторыми другими опциями (со всеми воз-
можными опциями мы вскоре познакомимся). Использование же-
стко заданных в программе значений этих опций является плохим
подходом, так как при возникновении у администратора необходи-
мости изменить некоторую опцию (например, свой адрес элект-
ронной почты), ему придется вносить соответствующие изменения
в исходный код, компилировать весь проект заново и загружать
новый модуль. Это серьезная проблема, особенно если админист-
ратор сайта не является программистом. Поэтому мы будем хра-
нить все установки в виде внешнего файла, из которого их будет
очень просто считывать и записывать, а также выводить на стра-
ницу, позволяя администратору с легкостью изменять любые
значения без повторной компиляции и пере ... Читать дальше »
Категория: информатика | Просмотров: 1932 | Добавил: basic | Дата: 11.02.2010 | Комментарии (1)

Практический пример 2 -
Менеджер рассылки новостей
в режиме онлайн
Программа рассылки новостей
В предшествующих главах настоящей книги вы познакомились с тем, как про-
граммировать на языке С# и как использовать этот язык программирования
в приложениях Windows и простых приложениях ASP.NET. Теперь мы собираемся
продемонстрировать, каким образом можно использовать многое из того, с чем вы
познакомились, для создания web-приложения, которое может быть использовано
в реальном web-сайте .NET.
Ниже перечислены некоторые из тем, с которыми вы познакомитесь или кото-
рые вы сможете лучше усвоить в результате прочтения этого практического при-
мера:
• Создание законченных web-приложений с помощью ASP.NET
• Использование некоторых серверных управляющих элементов ASP.NET
для создания пользовательского интерфейса с богатыми возможностями
• Использование кода поддержки для разделения основного кода
от пользоват ... Читать дальше »
Категория: информатика | Просмотров: 1861 | Добавил: basic | Дата: 11.02.2010 | Комментарии (1)

Управление опросами
Одно из преимуществ .NET перед предшествующими технологиями заключает-
ся в том, что возможность повторного использования создаваемого программного
обеспечения несколько упрощается. В этом разделе мы собираемся создать пакет
web-сайта для проведения опросов, с тем чтобы иметь возможность вставлять
этот сайт в любую страницу ASP.NET при помощи всего лишь пары строк кода.
На данном этапе необходимо выполнить довольно значительный объем работы,
для того чтобы интегрировать процедуру проведения опроса в какую-либо другую
web-страницу, поскольку для этого потребуется скопировать соответствующую ин-
формацию как из файла с расширением .aspx, так и из файла "с кодом поддерж-
ки", который имеет расширение .aspx.cs. Мы будем создавать управляющий
элемент таким образом, что в качестве дополнительной возможности он будет вы-
водить страницу с опросом, и если данный пользователь уже проголосовал ранее,
... Читать дальше »
Категория: информатика | Просмотров: 1598 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Пользовательский интерфейс (уровень представления)
Завершив создание уровня данных
и уровня бизнес-логики и поэксперимен-
тировав с консольным приложением на
уровне представления, можно перейти
к созданию web-интерфейса для опроса
с использованием ASP.NET. Прежде все-
го необходимо добавить проект ASP.NET
в наше решение в Visual Studio.NET.
Назовем его Poiiw (сокращение от Poll
Web), как показано на рисунке слева.
Заметьте, что при создании нового
web-приложения Visual Studio.NET авто-
матически генерирует несколько файлов,
ВКЛЮЧая файл WebForml. aspx — началь-
ную страницу ASP.NET. Переименуем ее
В default.aspx С тем, чтобы МОЖНО было
*"^Л' " ~С***'*
Project Types:
j l ' ----- С* Projects
CJ Seiyp -and Deployment Prefects
*" LJ Other Projects window
Application Windows
:i Шш
Щ
МС library
ASPJNE T Web w«b Ox*
_rJ
Location;
Project vM be created at hltp://locdhost/ ... Читать дальше »
Категория: информатика | Просмотров: 2300 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Практический пример 1 -
web-сайт для проведения опросов
На протяжении книги вы знакомились со всем спектром технологий .NET, ко-
торые можно использовать, программируя на С#. В этом разделе мы собираемся
отойти от теории и заняться в качестве практического упражнения приложением,
в котором будут использоваться самые разнообразные технологии из имеющихся
в .NET.
Сначала мы создадим базовое приложение, а затем расширим его и создадим
вторую версию, в которую будут включены дополнительные возможности. В реаль-
ной жизни от любого приложения всегда требуется постоянно соответствовать из-
меняющимся требованиям, и совершенно очевидно, что познакомиться с процессом
изменения приложения в практическом примере такой книги, как эта, оказывается
очень полезным. Использование двух различных версий также предоставит воз-
можность узнать, каким образом .NET позволяет упростить процедуру расширения
приложений, это означае ... Читать дальше »
Категория: информатика | Просмотров: 2916 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Добавление web-метода
Следующее, что необходимо сделать, это добавить некоторый метод в web-
службу. Мы добавим в нее простой метод Reversestring (), который получает
строку и возвращает клиенту перевернутую строку.
Практикум: добавление метода
1. Добавьте Следующий КОД В файл Servicel.asmx.cs:
[WebMethod] •:
public s t r i n g ReverseString(string message)
:•/:;:;: • { .
char[] arr = message.ToCharArray();
Array.Reverse(arr);
message = new string(arr);
,;;.••';•••.;•:'••;•-.,.\ r e t u r n m e s s a g e ; : V'^v^'-':\::;::,;;:..;^::-i;:-';:.:'.^; :. . . •'• . .
Чтобы однозначно идентифицировать XML-элементы в создаваемом описании
web-службы, необходимо добавить пространство имен. Добавим атрибут webservice
с пространство имен http://www.wrox.com/webservices в класс Service"!. Можно ис-
пользовать любую другую строку, которая идентифицирует XML-элементы уникаль-
ным образом. Так, например, м ... Читать дальше »
Категория: информатика | Просмотров: 3641 | Добавил: basic | Дата: 11.02.2010 | Комментарии (6)

Web-службы
Возможно, термин "web-служба" вам уже встречался ранее, хотя вы можете
и не знать, что из себя представляют эти службы и каким образом они подстраи-
ваются под работу Паутины в настоящее время. Web-службы являются основой
нового поколения web-приложений. Что бы ни представляло из себя клиентское
приложение, будь это приложение Windows или приложение ASP.NET Web
Forms, и какая бы система ни использовалась на клиентской машине, например,
Windows, Pocket Windows или какая-либо другая, они будут постоянно взаимодей-
ствовать с Интернетом посредством web-службы. Web-службы напоминают ком-
поненты, с которыми мы познакомились в главе 21, за исключением того, что они
выполняются через Интернет. Это выполняющиеся на стороне сервера программы
ожидают прихода сообщений от клиентских приложений и возвращают им какую-
то специфическую информацию. Эта информация может исходить непосредственно
от самой web-службы, ... Читать дальше »
Категория: информатика | Просмотров: 2900 | Добавил: basic | Дата: 11.02.2010 | Комментарии (5)

Сортировка вхождений
Последнее созданное вхождение не выводится в самом верху страницы. Однако
при традиционном способе работы web-регистраторов первым должно выводиться
вхождение, введенное самым последним.
Поэтому требуется сортировать вхождения по дате при считывания их из ди-
ректории. .NET возвращает файлы в алфавитном порядке, и именно поэтому мы
используем уже созданный формат. Рассмотрим следующие три файловых имени:
20010718_1318.xml
20010719_1003.xml
20010720_1823.xml
В данном случае используется формат yyyymmdd_hhmm. Его недостаток заклю-
чается в том, что файлы, предназначенные для работы с сайтом, могут создаваться
не чаще одного в минуту. В данном случае это не представляет серьезной пробле-
мы, поскольку мы обычно должны создавать не более одного файла в день. Файлы
с именами в таком формате при сортировке по алфавиту автоматически располага-
ются от самого раннего к самому позднему. Все, ч ... Читать дальше »
Категория: информатика | Просмотров: 1372 | Добавил: basic | Дата: 11.02.2010 | Комментарии (4)

Создание новых вхождений web-регистратора
На данный момент имеются все функциональные возможности, необходимые
для извлечения и вывода списка вхождений, которые могут появиться на нашем
сайте. Мы однако пока не умеем создавать новые вхождения без Notepad! В идеа-
ле желательно иметь на сайте форму, которую можно было бы использовать для
создания новых вхождений.
Практикум: создание вхождений web-регистратора
1. Войдите в Solution Explorer, щелкните правой кнопкой мыши
на проекте Weblog и выберите пункт меню Add | Add Web Form.
Введите ИМЯ — Edit.aspx.
2. Откройте Designer для данной страницы. Щелкните мышью один раз
на основание страницы и с помощью окна Properties замените
Значение свойства pageLayout на FlowLayout.
3. Выберите пункт меню View HTML Source. Добавьте следующий код:
<%@ Page language="c#" Codebehind=nEdit.aspx.cs" AutoEventWireup="false"
Inherits=IIWebLog.Edit" %>
<!DOCTYPE HTML ... Читать дальше »
Категория: информатика | Просмотров: 1223 | Добавил: basic | Дата: 11.02.2010 | Комментарии (1)

Вхождения web-регистратора
Рассмотрев основной принцип построения страниц ASP.NET, в котором ис-
пользуется парадигма управляющего элемента/события, перейдем к вопросу
о том, каким образом этот принцип может быть использован для создания чего-
нибудь полезного. Мы создадим отдельную страницу, где будет целиком выводить-
ся вхождение web-регистратора, которое представляет собой список событий
и планов на конкретный день.
Одно из преимуществ создания активного web-сайта заключается в том, что не
требуется писать код на HTML каждый раз, когда необходимо дополнить или из-
менить его содержимое. Отсюда следует, во-первых, что добавлять в него новое
содержимое теперь могут и люди, ничего не понимающие в HTML, и, во-вторых,
что опытные программисты на HTML могут добавлять новое содержание быстро
и просто.
Традиционным способом наполнять сайт новым содержанием является предо-
ставление пользователю некоторой формы, ... Читать дальше »
Категория: информатика | Просмотров: 1271 | Добавил: basic | Дата: 11.02.2010 | Комментарии (2)

Приложения ASP.NET
ASP.NET — это способ, предусмотренный в .NET для создания динамических
web-сайтов. Как и ADO.NET, ASP.NET заимствует свое название от предшеству-
ющей технологии Active Server Pages (ASP — активные серверные страницы), но
в данном случае сходство этим практически и ограничивается. В то время как
ASP-страницы интерпретировались и создавались на функционально ограниченных
языках описания сценариев VBScript и JScript, приложения ASP.NET компилиру-
ются на язык MSIL точно также, как и другие приложения .NET. Это означает,
что у нас появляется возможность описывать их на тех же языках программирова-
ния, что и остальные приложения .NET. В данном случае особенно важно (посколь-
ку книга посвящена языку.программирования С#), что можно писать приложения
ASP.NET на С#.
Другим огромным преимуществом ASP.NET является использование управляю-
щих элементов на стороне сервера. В ASP та ... Читать дальше »
Категория: информатика | Просмотров: 9733 | Добавил: basic | Дата: 11.02.2010 | Комментарии (3)

Эволюция Паутины
Появление web-страниц ASP было знаменательным событием. Они позволяли
решить фундаментальную проблему функционирования World Wide Web. Возмож-
ность создавать активные web-страницы на основе информации, извлекаемой из
баз данных или других систем, расположенных на стороне сервера, была поистине
революционной. Большинство сайтов продолжают использовать эту технологию
и сегодня.
Многие обратили внимание на то, что при выполнении сценариев на стороне
сервера существуют некоторое фундаментальное ограничение. Поскольку такие
страницы не компилируются, а создаются в динамике по мере поступления запроса
от клиента, то время ожидания ответа может оказаться достаточно большим. А по-
скольку на создание каждой страницы требуется достаточно много времени, сервер
может оказаться не в состоянии справиться с нагрузкой, если к нему будет посту-
пать тысячи обращений в секунду.
По этой ... Читать дальше »
Категория: информатика | Просмотров: 962 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Основы web-программирования
На протяжении трех последующих глав мы будем изучать программирование для
World Wide Web (Всемирная паутина). Это очень большая тема, и в настоящей
главе вы получите хорошие знания как о таящихся в ней трудностях, так и об уди-
вительных открывающихся возможностях. В следующей главе мы познакомимся
с использованием ASP.NET, однако для начала нам придется потратить некоторое
время для рассмотрения того, что было раньше и каким образом возникли Интер-
нет вообще и Всемирная паутина в частности.
В этой главе будут рассматриваться следующие темы:
• Устройство Интернета
• Основы HTML и HTML-форм
• Различия между неизменяемыми и активными web-страницами
• Различия между сценариями клиентской и серверной сторон
• Вопрос о том, почему ASP.NET представляет собой
наилучший выбор для разработки современных web-решений
Краткая история Интернета
Интернет впервые был ... Читать дальше »
Категория: информатика | Просмотров: 2898 | Добавил: basic | Дата: 11.02.2010 | Комментарии (2)

Нестандартные атрибуты
В первой половине главы мы сосредоточились на некоторых атрибутах, кото-
рые входят в состав .NET Framework. Но это еще не все — можно создавать свои
собственные атрибуты.
В этой главе мы только обрисуем в общих чертах те возможности, которые
таят в себе нестандартные атрибуты. В этом разделе мы познакомимся с разраба-
тываемыми атрибутами:
• TestcaseAttribute позволяет привязать код, в котором осуществляется
тестирование некоторого класса, к самому классу
• BugFixAttribute позволяет сохранять информацию о том,
кто изменял что-либо в исходном коде и когда это делалось
• DatabaseTableAttribute демонстрирует, как МОЖНО Создавать
схему базы данных из классов .NET.
Атрибуты 631
Нестандартный атрибут — это просто специальный класс, который должен
удовлетворять следующим двум требованиям:
• Атрибут ДОЛЖен быть ПРОИЗВОДНЫМ ОТ System. Attribute
• Конструктор(ы) ат ... Читать дальше »
Категория: информатика | Просмотров: 1185 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Атрибуты
В этой главе будет рассказано о том, что такое атрибуты и для чего они могут
быть использованы, а в качестве примера будут приведены некоторые атрибуты,
используемые в .NET Framework.
Будет также обсуждено понятие нестандартных атрибутов — атрибутов, кото-
рые вы можете создавать самостоятельно для расширения вашей системы, и при-
ведено несколько работающих примеров. Будет рассмотрен вопрос о том, каким
образом Intermediate Language Disassembler (iidasm — дисассемблер промежу-
точного языка) может использоваться для обнаружения атрибутов существующих
модулей.
Атрибуты являются одной из наиболее полезных особенностей .NET Framework.
Они часто используются компанией Microsoft. Для того чтобы научиться эффек-
тивно их использовать, придется потратить значительное количество времени, но
оно того стоит. В последующих разделах мы познакомимся с тем, каким образом
атрибуты могут приме ... Читать дальше »
Категория: информатика | Просмотров: 1502 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Частные и общие модули
До настоящего момента нам приходилось иметь дело только с частными моду-
лями — т е . модулями, устанавливаемыми в качестве составной части единствен-
ного приложения. В .NET имеются специальные средства, позволяющие создавать
общие модули, которые могут использоваться несколькими программами одновре-
менно.
Частные модули
По умолчанию модуль является частным по отношению к проекту. Частные мо-
дули обязательно должны располагаться в той же директории, что и само прило-
жение.
Модуль shapes.dll является частным; для того чтобы ссылаться на него из
проекта shapes, нам пришлось на предыдущем этапе строить оба проекта в одной
и той же директории, в противном случае потребовалось бы осуществлять поиск
по директории разработки проекта shapes из проекта shapeuser при добавлении
ссылки в VS; в этом случае VS создает частную копию shapes.dll и размещает
ее В директории ... Читать дальше »
Категория: информатика | Просмотров: 1225 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Включение ILDASM
в качестве внешнего инструмента в VS
ildasm представляет собой внешний инструмент, который может быть включен
в состав Visual Studio.NET. Для этого потребуется перейти в меню Tools | External
Tools, которое имеется в Visual Studio.NET. щелкните мышью кнопку Add в этом
диалоговом окне. Вы увидите строку [New Tool 1] в списке
в окне Menu Contents и текстовое окно Title, предназначен-
ное для ввода текста. Введите в окно Title название ildasm,
затем нажмите на кнопку поиска (...), расположенную спра-
ва от окна Command. В появившемся диалоговом окне Open
пройдите по следующему пути:
С:\Program Files\Microsoft.Net\FrameworkSDK\Bin
<r>d:
Г J
j j
Щелкните мышью на файле ildasm.exe, расположенном
в директории Bin, а затем щелкните на Open. После этого
ildasm появится в списке Menu Contents (см. рис. слева).
Теперь щелкните мышью ОК, и ildasm по ... Читать дальше »
Категория: информатика | Просмотров: 1633 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Модули .NET
Модулем в .NET называется выполняемая программа (или ее некоторая часть),
поставляемая в виде отдельного блока. Модули — это средства для создания паке-
тов программ на С# для выполнения и распространения. Когда вы строите про-
грамму на С#, то получаемый в результате файл с расширением . ехе представляет
собой не что иное как модуль. Если вы строите библиотеку классов, то получае-
мый в результате файл DLL (Dynamic Link Library — динамически загружаемая
библиотека) также представляет собой модуль.
Весь код, находящийся в некотором модуле, строится, распространяется
и получает номер версии как единое целое. Модуль экспортирует общие классы,
свойства и методы, доступные для Других программ. Все объекты, описанные
как частные, остаются внутренними для модуля. Для получения более подробной
информации следует продолжить чтение книги. Для получения дополнительной
информации вам можно ... Читать дальше »
Категория: информатика | Просмотров: 2124 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Дополнительные темы
В этом разделе мы рассмотрим вопрос, касающийся наблюдения за состоянием
файловой системы, в результате которого приложение сможет получать уведомле-
ние об происходящих изменениях, а также асинхронный доступ к файлам, который
позволяет загружать большие файлы на фоне продолжения выполнения приложе-
нием других процессов.
Наблюдение за состоянием файловой структуры
Иногда в задачу приложения входит нечто большее, чем просто чтение и запись
файлов, хранящихся в файловой системе, и оказывается важным определить мо-
мент, когда в структуру файлов и директорий вносятся изменения. .NET Framework
существенно облегчает создание приложений, которые могут выполнять постав-
ленную задачу.
Класс, ПОЗВОЛЯЮЩИЙ Нам добиваться ЭТОГО, называется FileSystemWatcher. Он
обладает несколькими событиями, которые могут перехватываться приложениями,
что дает им возможность реагировать на так ... Читать дальше »
Категория: информатика | Просмотров: 1192 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Работа с файлами
В этой главе вы узнаете, каким образом можно осуществлять считывание и за-
пись текстовых файлов, что оказывается весьма существенным для многих прило-
жений .NET. Мы будем обсуждать основные классы, которые используются для
создания файлов, чтения из файлов и записи в них, а также вспомогательные
классы, которые используются для выполнения различных манипуляций над фай-
ловой системой из программ на С#. Хотя у нас отсутствует возможность подробно
описать все классы, наше рассмотрение окажется достаточно глубоким для того,
чтобы вы получили хорошее представление об основных понятиях и принципах.
Файлы могут оказаться очень удобным средством сохранения информации при
работе с несколькими вариантами приложения, они могут также использоваться
для обмена данными между приложениями. Конфигурации пользователя и прило-
жения также могут храниться в файлах, для того чтобы впоследствии ... Читать дальше »
Категория: информатика | Просмотров: 1933 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Доступ к данным
посредством ADO.NET
В предыдущей главе рассматривалось, каким образом мастера и генерирующие
код инструменты, входящие в состав Visual С#, могут быть использованы при со-
здании пользовательских интерфейсов и управляющих элементов для доступа к ре-
ляционным базам данных.
В настоящей главе будет рассматриваться реализация такого же доступа к дан-
ным с помощью кода, написанного непосредственно программистом, а не сгенери-
. рованного мастером. Для реализации такого подхода следует воспользоваться
классами ADO.NET доступа к данным. Сначала сделаем небольшой обзор самого
ADO.NET, затем перейдем к изучению структуры классов, входящих в ADO.NET,
и, наконец, создадим несколько примеров программ, которые используют
ADO.NET.
4 T O T a K o e A D O . N E T ?
Под названием ADO.NET объединено множество классов, которые использу-
ются совместно с С# и Microsoft .NET Framework для ... Читать дальше »
Категория: информатика | Просмотров: 2168 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Доступ к данным пользователя
Начиная с главы 3, в которой было введено понятие переменных и буквенных
значений, мы уже осуществляли манипуляции с данными в С#. Однако до настоя-
щего момента мы использовали только те данные, которые были "зашиты" в про-
граммах. Если такие данные изменялись, то нам приходилось вносить изменения
непосредственно в саму программу. В настоящей главе мы собираемся рассмот-
реть то, каким образом можно осуществлять доступ к данным, хранящимся за пре-
делами программ — в базах данных, распределенных документах и т. д.
Основное содержание любого бизнес-приложения — его данные. В любой
компании хранятся данные, которые касаются ее служащих,— зарплата и выпол-
няемая работа, информация о заказчиках и т. д. Большинству программ, которые
вы будете писать в дальнейшем, будет требоваться осуществляемый тем или иным
способом доступ к этим внешним данным независимо от того, я ... Читать дальше »
Категория: информатика | Просмотров: 1764 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Установка приложений Windows
Одной из особенностей .NET является возможность осуществления инсталля-
ции с помощью обыкновенной команды хсору. Модули — это всего лишь некото-
рый набор файлов, и нет необходимости хранить информацию о конфигурации
модулей в реестре, из чего следует, что для инсталляции достаточно просто пере-
писать несколько файлов.
Ниже будет рассмотрен ряд причин, по которым не рекомендуется использо-
вать команду хсору для инсталляции приложений Windows. Для их установки хсору
может использоваться только в случае самых простых приложений. Для неболь-
ших приложений, инсталлированных лишь на некоторых системах, команда хсору
может оказаться вполне пригодной, однако для сложных приложений или прило-
жений, инсталлированных на большом количестве систем, приходится задумываться
о другом, более подходящем механизме инсталляции. Команда хсору не позволяет
регистрировать модули ... Читать дальше »
Категория: информатика | Просмотров: 1579 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Двойная буферизация
Мы уже коротко касались проблем, которые возникают
в тех случаях, когда процедура рисования требует слишком
много времени и пользователю приходится очень долго ожи-
дать, пока рисунок будет выведен на экран полностью. Как мы уже объясняли, ре-
шение этой проблемы заключается в создании образа, который затем — после
завершения всех графических операций над ним — целиком выводится в окно.
Практикум: пример без использования двойной буферизации
Использованная в данном примере программа onPainto рисует большое коли-
чество линий цветом, выбираемым случайным образом. Когда вы запускаете эту
программу, то можете увидеть саму процедуру рисования (если, конечно, у вас не
слишком быстродействующий компьютер):
protected override void OnPaint(PaintEventArgs e)
Graphics g = e.Graphics;
Random r = new Random();
g.FillRectangle(Brushes.White, ClientRectangle);
for (int. x = 0 ... Читать дальше »
Категория: информатика | Просмотров: 1373 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Введение в GDI+
Настоящая глава является введением в программирование с использованием
классов Graphics Device Interface (GDH интерфейс графических устройств).
Приложения с графикой, игры, Computer Aided Design/Computer Aided Manufacture
(CAD/CAM — проектирование/производство с помощью компьютера), программы
для рисования, для создания графиков и многие другие типы приложений требуют
от разработчиков написания кода для работы с графикой. Использование создава-
емых пользователем управляющих элементов также предполагает работу с графи-
кой. Посредством своей последней библиотеки классов компания Microsoft сделала
написание кода для работы с графикой как никогда простым.
Писать код для работы с графикой — это наибольшее удовольствие из всех
программистских задач. Это очень здорово, когда ты вносишь изменения в про-
грамму и тут же наглядно видишь результаты этих изменений. Если вы создаете
со ... Читать дальше »
Категория: информатика | Просмотров: 2940 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Диалоговые окна FontDialog и ColorDialog
Последние два диалоговых окйа, на которых мы коротко остановимся в данной
главе,— ЭТО FontDialog И ColorDialog.
Основное внимание будет сосредоточено на обсуждении
диалоговых окон, позволяющих задавать шрифт и цвет,
а не на классах Font и color, поскольку эти классы
детально изучаются в главе 16.
Диалоговое окно FontDialog
Диалоговое окно FontDialog позволяет пользователю приложения осуществ-
лять выбор шрифта. Пользователю предоставляется возможность изменять
шрифт, стиль, размер и цвет шрифта.
Использование диалоговых окоп 421
На следующем рисунке показаны все свойства, которые отвечают за изменение
элементов данного диалогового окна:
i f
Flxad NUriett
\OEf feMctcisrosoft Sans Sertf ^*
Г Striked
| Sample
; l f
Script;
ShowColor
~ AllowS
Использование диалогового окна FontDialog
Данное диалоговое окно может испол ... Читать дальше »
Категория: информатика | Просмотров: 2656 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Вывод на печать нескольких страниц
Событие PrintPage вызывается для каждой страницы, подлежащей выводу на
печать. Необходимо передать Printcontroiier информацию о том, что страница,
выводящаяся на печать в данный момент времени, не является последней, посред-
ством присваивания СВОЙСТВУ HasMorePages Класса PrintPageEventArgs значения
true.
Практикум: модификация OnPrintPage для вывода нескольких страниц
1. Необходимо объявить переменную lines типа string [] и переменную
linesPrinted типа int В классе SimpleEditorForm:
private string[]lines;
private int linesPrinted;
2. Внесите следующие изменения в обработчик OnPrintPage ().
В реализации OnPrintPage (), которая использовалась до настоящего
момента, мы осуществляли разбиение текста на строки. Поскольку
метод OnPrintPage о вызывается для каждой страницы, разбиение
текста на строки оказывается необходимым выполнять только один
раз — п ... Читать дальше »
Категория: информатика | Просмотров: 2035 | Добавил: basic | Дата: 11.02.2010 | Комментарии (1)

Диалоговое окно
SaveFileDialog
AFobuonudte dGol inba l1 9K3n5o. wGeloldbgeal Knoweldge, Inc. is the wordls' alrgest nidependent IaT endudca htoin 1 5nite algnragtuoar,ge osf.fe rnGigolb malo Kreno thwaelndg e7s00 bel cnoduersdes IT in ed mucoaretoin th asonult oi2n0s c cooumntrbeinise vceunrdrcioural «,a udtheovilerzieredd a tnhdro upgrohpre ithtaery rgi hcotn ttemnt v *ofjtfh ni 8ten olsbviael Khannodwsel-odnge *c<alfesvserobopmed traninig amnadna gnietemraencttvi esou letoi-einasm nniigc.uld Tnihge e -cnomromlpaenynt, o aftesnse?ss mcomenptel tepro gITre sesdu tcraacotiknnipgrog raanmd nicsetrrutscfcitoarbi-fend. Tdhaess ctooommpan y(c?-el abmelnnidge]d, v ItTitua Jed ucaclsastooior)m sou l{tvoi-ntesam ^renig dlje svilee-lrpeadce vdia
e-fearning, ^пй e4earning tools or software applications.
Mission .
Gbbdl KrK>wtedge к dedicated to improving the w^y companies and individuals
earn, use, and master techn ... Читать дальше »
Категория: информатика | Просмотров: 1295 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Использование диалоговых окон
В предыдущей главе мы узнали, каким образом можно реализовывать меню,
панели инструментов, SDI- и MDI-формы и т. д. Кроме того, мы знаем, как созда-
вать простые диалоговые окна, чтобы получать информацию от пользователя. Мы
также создали достаточно сложные диалоговые окна, чтобы запрашивать у пользо-
вателя более специфическую информацию. Однако для выполнения стандартных
операций, таких как открытие и сохранение файлов, вывод на печать, рекоменду-
ется использовать заранее созданный класс диалоговых окон. В этом случае не
только уменьшается объем кода, но и используются стандартные, хорошо всем
знакомые диалоговые окна Windows. В .NET Framework имеются классы, которые
позволяют использовать диалоговые окна Windows для открытия и сохранения
файлов, для вывода на принтер, а также для выбора цвета и шрифта. Их использо-
вание позволяет пользователю не изучать сложн ... Читать дальше »
Категория: информатика | Просмотров: 2723 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Расширение управляющего элемента LabelTextbox
Практикум: продолжение примера создания управляющего элемента LabelTextbox
ctLafelTextbox
ШИШ Теперь можно протестировать свойства управля-
ющего элемента. Повторите все шаги по созданию
проекта в новом экземпляре Visual Studio, в котором
Существует управляющий элемент LabelTextbox.
Затем перенесите управляющий элемент в форму.
Надпись с именем управляющего элемента и тексто-
вое окно занимают всю оставшуюся площадь управ-
ляющего элемента. Обратите внимание на то, что
управляющие элементы, расположенные внутри
управляющего элемента LabelTextbox, занимают
правильные позиции, когда управляющий элемент
добавляется к форме (см. рис. слева).
Добавление новых свойств
На данном этапе практически ничего нельзя де-
лать с помощью названного управляющего элемента,
поскольку у нас отсутствует возможность изменять
текст надписи и текст в ... Читать дальше »
Категория: информатика | Просмотров: 871 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

SDI- и MDI-приложения
Традиционно существует три разновидности приложений, которые могут созда-
ваться ДДЯ MS Word, а именно:
• Приложения, основанные на диалоговом окне. Такие приложения
предоставляются пользователям в виде единого диалогового окна,
с помощью которого может быть осуществлен доступ ко всем
функциональным возможностям.
• Однодокументные интерфейсы (Single Document Interface, SDI),
Такие приложения предоставляются пользователям в виде меню,
одной или нескольких линеек инструментов и одного окна,
в котором пользователь может выполнять определенные действия.
• Многодокументные интерфейсы
(Multi-Document Interface, MDI).
Такие приложения представляются
пользователям в. таком же виде,
что SDI-приложения, однако обладают
способностью одновременно поддерживать
несколько открытых окон.
Приложения, основанные на диалоговом окне,
обычно представляют собой небольшие о ... Читать дальше »
Категория: информатика | Просмотров: 3962 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Панели инструментов
Хотя меню прекрасно справляются с задачей предоставления доступа ко всему
многообразию функциональных возможностей приложения, размещение некоторых
пунктов не только в меню, но и на панели инструментов, может дать некоторые
выгоды. Это оказывается справедливым для пунктов меню, используемых пользо-
вателем наиболее часто, например, Open и Save. Панель ведет к отдельным функ-
циональным возможностям приложения посредством одного щелчка мышью, что,
вне всякого сомнения, требует меньших усилий, чем при работе с меню — поль-
зователю намного легче щелкать мышью на постоянно видимой кнопке, чем осу-
ществлять поиск по иерархии различных меню.
Изображение экрана, приведенное ниже, демонстрирует набор линеек инстру-
ментов, которые видны автору в процессе написания этой главы в MS Word:
• ц 100%
mentText * BaskerviPe BE Regu v ID - 5 В / -ЯГ.
& : Л
Кнопки, расположенн ... Читать дальше »
Категория: информатика | Просмотров: 1458 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Дополнительные возможности
Windows Form
Использование управляющих элементов, наиболее часто используемых при
разработке приложений Windows, позволяет создавать весьма впечатляющие диа-
логовые, однако очень мало серьезных приложений Windows, которые обладают
пользовательским интерфейсом, состоящим всего из одного диалогового окна. На-
против, такие приложения используют либо Single Document Interface (SDI, одно-
документный интерфейс), либо Multi-Document Interface (MDI, многодокументный
интерфейс). Приложения обоих этих типов обычно интенсивно используют различ-
ные меню и панели инструментов — управляющие элементы, которые еще не рас-
сматривались.
Начнем с рассмотрения таких управляющих элементов, как "меню" и "панель
инструментов". В результате мы узнаем, каким образом можно привязывать кноп-
ки к панелям инструментов и наоборот. Затем перейдем к созданию SDI- и MDI-
приложений, удел ... Читать дальше »
Категория: информатика | Просмотров: 1290 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Использование
управляющих элементов
Windows Form
В последние годы Visual Basic получил широкое признание, поскольку он пре-
доставляет программистам удобные инструменты для создания весьма детализиро-
ванных интерфейсов с помощью программы разработки форм. Это обстоятельство,
дополненное очень легким для изучения языком программирования, формирует
наилучшую среду для быстрой разработки приложений. В частности, Visual Basic,
как и ряд других систем, предназначенных для быстрой разработки приложений,
например, Delphi, предоставляет набор управляющих элементов, которые разработ-
чик может использовать, чтобы быстро создать пользовательский интерфейс (user
interface, UI) для своего приложения.
В основе большинства Windows-приложений, написанных на Visual Basic, лежит
программа разработки форм. Процедура создания пользовательского интерфейса
заключается в том, чтобы переносить мышью различные ... Читать дальше »
Категория: информатика | Просмотров: 2738 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

События
В этой последней главе, посвященной ООП, будет обсуждаться один из наибо-
лее часто встречающихся в .NET приемов ООП — использование событий.
Обсуждение начнется с основ — с вопроса о том, что на самом деле представ-
ляют из себя события. После этого будет рассмотрено применение некоторых про-
стых событий на практике. Изучив этот вопрос, мы познакомимся с тем, каким
образом можно создавать и использовать собственные события.
Во второй части главы будет усовершенствована библиотека классов CardLib
с помощью включения в нее события. Кроме того — поскольку это наша послед-
няя остановка перед знакомством с более сложными темами — мы позволим себе
немного развлечься и создадим приложение для карточных игр, которое будет ис-
пользовать созданную нами библиотеку классов.
Что такое событие?
События похожи на исключительные ситуации в том смысле, что они создаются
(генерируются) объекта ... Читать дальше »
Категория: информатика | Просмотров: 1225 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Дополнительные сведения
о классах
К настоящему моменту мы рассмотрели практически все основные приемы ООП,
использующиеся в С#; однако существует несколько более сложных способов,
с которыми также не мешает познакомиться. В этой главе будут обсуждаться сле-
дующие темы:
• Семейства — это объекты, в которых могут содержаться массивы
других объектов и которые обладают функциональными возможностями
для организации доступа к ним.
• Перегрузка операторов — процедура конфигурирования классов
с тем, чтобы иметь возможность применять такие операторы,
как, например, + , для выполнения операций над экземплярами
данного класса.
• Усложненное преобразование — некоторые дополнительные
возможности по преобразованию типов в С#.
• Глубокое копирование — это процедура копирования, гарантирующая,
что создаваемые объекты не содержат ссылок на данные,
хранящиеся в исходном объекте.
• Исключитель ... Читать дальше »
Категория: информатика | Просмотров: 1310 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Определение членов классов
В данной главе мы продолжим обсуждение способов определения классов
в С#. Теперь мы переходим к рассмотрению того, что необходимо для определения
членов классов, а именно полей, свойств и методов.
Мы начнем с того, что познакомимся с кодом, требующимся для определения
каждого из этих членов, а также рассмотрим создание необходимой структуры кода
с помощью соответствующего мастера (wizard) VS. Мы также узнаем, каким об-
разом можно быстро изменять члены, редактируя их свойства.
После того как вы познакомитесь с основами определения членов, мы перей-
дем к рассмотрению более сложных способов их использования: перевода членов
базового класса в скрытое состояние, обращения к переопределенным членам
базового класса и вложенных определений типов.
В заключение мы применим эту теорию на практике и создадим библиотеку
классов, которую можно будет постепенно достраивать и и ... Читать дальше »
Категория: информатика | Просмотров: 1496 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Определение классов
В предыдущей главе вы познакомились с возможностями объектно-ориентиро-
ванного программирования (ООП). В этой главе мы перейдем от теории к практи-
ке и рассмотрим определение классов в С#.
Для начала мы не будем заходить столь далеко, чтобы определять члены клас-
сов, а сконцентрируем свое внимание на определении самих классов. Может пока-
заться, что мы чересчур ограничиваем тему, но не волнуйтесь: в этой главе
содержится достаточное количество материала, который вам необходимо усвоить.
В первую очередь мы рассмотрим основной синтаксис, применяемый при опи-
сании классов, ключевые слова, которые могут использоваться для определения
режима доступа к классу и для других целей, а также способы задания наследова-
ния. Мы также разберем определение интерфейсов, поскольку оно во многих ас-
пектах сходно с описанием классов.
Остальная часть главы будет посвящена изучению раз ... Читать дальше »
Категория: информатика | Просмотров: 1538 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Введение
в объектно-ориентированное
программирование
В предыдущих главах мы рассмотрели синтаксис языка С# и основы програм-
мирования на нем. Кроме того, мы научились собирать работоспособные консоль-
ные приложения. Однако для того, чтобы получить доступ ко всему потенциалу С#
и .NET Framework, необходимо научиться использовать методы объектно-ориен-
тированного программирования (ООП). На самом деле некоторые из этих методов
уже применялись нами, однако чтобы не усложнять жизнь, мы не акцентировали
на этом внимание.
В этой главе мы на некоторое время отвлечемся от кода и сосредоточимся на
принципах, лежащих в основе ООП. Такой подход очень скоро приведет нас об-
ратно к языку С#, поскольку последний неразрывно связан с ООП. Ко всем по-
нятиям, введенным в настоящей главе, мы будем возвращаться в дальнейшем,
иллюстрируя их с помощью примеров программ, так что не следует впадать в па-
... Читать дальше »
Категория: информатика | Просмотров: 1450 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Обработка ошибок
Первая часть данной главы была посвящена способам поиска и исправления
ошибок в процессе разработки приложения, направленным на то, чтобы исклю-
чить их появление в окончательном варианте программы. Существуют, однако, си-
туации, когда заранее известно, что ошибки могут возникать, и способа добиться
100%-ной уверенности в их отсутствии не существует. В таких случаях рекоменду-
ется заранее предусмотреть возникновение проблем и написать такой код, который
мог бы аккуратно с ними справиться без прекращения выполнения приложения.
Обработка ошибок — это общее название всех способов такого рода; в данном
разделе будту рассмотрены возникновение исключительных ситуаций (exceptions)
и методы работы с ними.
Исключительные ситуации
Исключительная ситуация — это ошибка, возникшая либо в нашем коде, либо
в вызванной нашим кодом функции, которая проявилась в период выполнения.
В дан ... Читать дальше »
Категория: информатика | Просмотров: 1101 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Отладка и обработка ошибок
Итак, к настоящему моменту вы познакомились с основами простого програм-
мирования на С#. Перед тем как переходить к рассмотрению объектно-ориентиро-
ванного программирования, которому посвящен следующий раздел книги, мы
остановимся на вопросах отладки кода на С# и обработки ошибок.
Ошибки в программе — это такая вещь, от которой никогда не удастся избавить-
ся. Независимо от того, насколько опытным является программист, у него всегда
будут проскальзывать ошибки; составной частью понятия "опытный программист"
как раз и является понимание этой неизбежности и готовности с ними бороться.
Конечно, существуют некоторые незначительные ошибки, которые не оказывают
влияния на ход выполнения приложения, такие, например, как ошибки в правопи-
сании выводимого текста и т. п. Кроме того, существуют очевидные ошибки, кото-
рые приводят к абсолютной невозможности использования при ... Читать дальше »
Категория: информатика | Просмотров: 1296 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Делегаты
Делегатом называется тип, который позволяет хранить ссылки на функции.
Несмотря на то что звучит это несколько интригующе, механизм, лежащий в основе
этой возможности, удивительно прост. Наиглавнейшее предназначение делегатов
вряд ли удастся понять до тех пор, пока вы не познакомитесь с событиями и с их
обработкой, однако рассмотрение самого понятия делегатов принесет огромную
пользу. Когда позднее наступит время их использовать, они будут вам уже знако-
мы, что сделает некоторые сложные темы гораздо более легкими для понимания.
Объявление делегатов во многом напоминает объявление функций; при этом
отсутствует само тело функции, но добавляется ключевое слово delegate. Объяв-
ление делегата определяет сигнатуру функции, состоящую из возвращаемого типа
и списка параметров. После объявления делегата мы получаем возможность объя-
вить переменную типа этого делегата. Мы можем затем инициал ... Читать дальше »
Категория: информатика | Просмотров: 1398 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Функции структур
В предшествующей главе рассматривались типы структур, предназначенных для
хранения в одном месте нескольких элементов информации. На самом деле воз-
можностей у структур гораздо больше, и одной из них является способность содер-
жать не только данные, но и функции. На первый взгляд подобное может показаться
немного странным, однако на практике это приносит много пользы.
126 Глава 6
В качестве простого примера рассмотрим следующую структуру:
struct customerName
{ .
public string firstName, lastName;
' • £ W-Ш •: ,; :шШ : • :тШ-: Ш^ШШШ Ш : '• ': 111 i i t i i i ШШтШ:^ , > .:: •••' Шт Ш Ш ШШЙШШШШМШ ШШ-;• .: -;-; ШШШШ.
Если у нас имеются переменные типа customerName и нам необходимо вывести
на консоль полное имя, мы будем вынуждены конструировать это имя из его со-
ставных частей. Например, ДЛЯ переменной типа customerName С именем customer
можно использовать сле ... Читать дальше »
Категория: информатика | Просмотров: 836 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Функция MainQ
Теперь, когда вы познакомились почти со всеми простыми способами, приме-
няемыми для создания и использования функций, давайте вернемся назад и более
подробно рассмотрим функцию Main ().
Как было сказано ранее, функция Main о является точкой входа в приложение
на С# и выполнение этой функции охватывает выполнение приложения. У этой
функции имеется параметр — string [] args, однако до сих пор мы его не описы-
вали. В данном разделе вы познакомитесь с этим параметром и узнаете, каким
образом его можно применять.
Существуют четыре различные сигнатуры,
которые можно использовать для функции Main():
• static void Main()
• static void Main(string[] args)
124 Глава 6
• static int Main()
• static int Main(string[] args)
При желании аргумент args можно опускать.
Причина, по которой мы до сих пор пользовались вариантом
с этим аргументом,— в том, что такая версия генерируе ... Читать дальше »
Категория: информатика | Просмотров: 927 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Область действия переменных
и другие программные конструкции
Перед тем как пойти дальше, следует обратить внимание на то, что важность
заявлений, сделанных в предшествующем разделе, далеко выходит за рамки опре-
деления области действия переменных в разных функциях. Утверждалось, что об-
ласть действия переменных распространяется на блок кода, в котором они описаны,
и на все блоки, непосредственно в него вложенные. Это также применимо и к дру-
гим типам блоков, например, к программным конструкциям, использующим ветв-
ление и циклы. Рассмотрим следующую программу:
i n t i ; • -': :;-•.. :v: ' .Л , :
for (i = 0; i < 10; i++)
{ : ' '
string text = *Line * + Convert.ToString(i);
Console.WriteLine{*{0}•, text);
}
Console.WriteLine(*Last text output in loop: {0}", text);
В данной программе строковая переменная text является локальной для цикла for.
ТаКОЙ КОД не пройдет КОМПИЛЯЦИЮ, ... Читать дальше »
Категория: информатика | Просмотров: 1376 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Область действия переменных
Возможно, читая предыдущий раздел, вы задавались вопросом, зачем вообще
нужно обмениваться данными с функциями. Ответ заключается в том, что в С#
доступ к переменным может осуществляться только из определенных участков
кода. Принято говорить, что переменная имеет определенную область действия,
в рамках которой она является доступной.
Область действия переменной представляет собой очень важное понятие, кото-
рое лучше всего проиллюстрировать с помощью примера.
Практикум: описание и использование основной функции
1. Внесите следующие изменения в ciassi.cs в приложении ch06Ex0i:
class Classi
static void Write()
Console.WriteLine("myString = {0}", myString);
static void Main (string [] args)
string myString = 'String defined in Main() •;
Write();
2. Откомпилируйте код и обратите внимание на сообщение об ошибке
и на предупреждение, которые появятся в списк ... Читать дальше »
Категория: информатика | Просмотров: 1199 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Параметры
Если функция должна получать параметры, то необходимо задать:
• Список принимаемых функцией параметров в ее описании,
а также типы этих параметров
• Совпадающий список параметров при каждом вызове функции
Это предполагает использование следующего кода:
s t a t i c <БозвращаемыйТип> <имяФункции>{<типПараметра> <имя11араметра>, . . . )
{ • : . :...-;• :/::7
r e t u r n <возвращаемоеЗначение>;
} .•."•. 'ШШШ
Здесь может быть произвольное число параметров, для каждого из которых указы-
ваются тип и имя. В качестве разделителя между параметрами ставятся запятые.
Каждый из параметров доступен внутри данной функции в качестве переменной.
Например, следующая простая функция принимает два параметра типа double
и возвращает их произведение:
static double product (double paraml, double param2)
• • • • • • • : • . . { • : • • • • • • •• • • • • • •• - • ' ... Читать дальше »
Категория: информатика | Просмотров: 1092 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Функции
Все программы, с которыми мы работали до сих пор, имели форму единого
блока, в ряде случаев включавшем циклы, позволяющие многократно выполнять
отдельные строки кода, и ветвление, позволяющее выполнять некоторые операто-
ры по условию. Если возникала необходимость выполнить какую-либо операцию
над данными, то нужный код должен был находиться там, где он будет работать.
Однако оказывается, что такая структура кода весьма ограниченна. Довольно
часто возникают ситуации, когда выполнение определенных задач — например, по-
иск максимального элемента массива — необходимо в различных местах програм-
мы. Конечно, можно размещать идентичные (или почти идентичные) участки кода
в разных частях приложения каждый раз, когда в этом возникает необходимость,
однако такой подход имеет свои недостатки. Изменение даже одной небольшой де-
тали, касающейся выполнения общей задачи (например, исправление нек ... Читать дальше »
Категория: информатика | Просмотров: 1586 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Действия над строками
До сих пор все наши операции над строками сводились к выводу строк на кон-
соль, чтению строк с консоли и объединению строк посредством оператора +.
В процессе программирования более сложных приложений вы очень скоро убеди-
тесь, что значительная их часть предполагает различные манипуляции со строками.
По этой причине нам представляется разумным потратить несколько страниц кни-
ги на наиболее распространенные способы работы со строками в С#.
Начнем с того, что переменная типа string — это всего лишь массив перемен-
ных типа char, доступных в режиме "только чтение". Иными словами, мы можем
получить доступ к отдельным символам строки следующим образом:
string myString = *A string*;
char myChar = myString [1] ;
Однако присваивать отдельные символы таким способом нельзя.
Для получения массива, доступного для записи, следует воспользоваться приве-
денным ниже кодом. В не ... Читать дальше »
Категория: информатика | Просмотров: 1656 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Массивы
Все типы переменных, которые мы рассматривали до сих пор, обладают одним
общим свойством: в них хранится единственное значение (или — в случае струк-
тур — единственный набор значений). Но в ситуациях, когда необходимо хранить
большое количество однородных данных, такой подход может оказаться не совсем
удобным. В таких случаях более приемлемым было бы одновременное хранение
нескольких значений одного типа без использования отдельной переменной для
каждого значения.
Предположим, к примеру, что вам необходимо выполнить вычисления, в кото-
рых задействованы имена всех ваших друзей. Для этого можно воспользоваться
обычными переменными типа string, например, так:
Дополнительные сведения о переменных 93
string friendNamel = «Robert Barwell";
string friendName2 = "Mike Parry";
string friendName3 - "Jeremy Beacock";
Однако в этом случае вам потребуется затратить много усилий, особенно ... Читать дальше »
Категория: информатика | Просмотров: 1183 | Добавил: basic | Дата: 11.02.2010 | Комментарии (1)

Структуры
Еще одним типом переменной, который мы будем рассматривать, является
struct (сокращение от слова structure — "структура"). Структуры вполне соот-
ветствуют своему названию: это структуры данных, которые составлены из инфор-
мации различного характера, возможно, из данных различных типов. Они позволяют
программистам описывать свои собственные типы переменных, для которых дан-
ная структура является базовой. В качестве примера предположим, что нам необ-
ходимо хранить информацию о маршруте из одной точки в другую, включающую
направление и расстояние в милях. Для простоты в качестве направления будет
использоваться только одна из четырех сторон света (так что для описания направ-
ления вполне подойдет перечислимый тип orientation), а длина маршрута будет
представлена типом double.
В этом случае мы могли бы использовать две разные переменные, написав уже
знакомый нам код: ,
; : • " ... Читать дальше »
Категория: информатика | Просмотров: 839 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Сложные типы переменных
Итак, к настоящему моменту мы рассмотрели все простые типы переменных,
которые используются в С#. Кроме них, в С# существует три более сложных
(но очень полезных) типа переменных:
• Перечислимый тип
• Структуры
• Массивы
Перечислимый тип
Все типы, которые рассматривались до сих пор (за исключением типа string),
имеют четко определенное множество допустимых значений. Это множество может
быть настолько большим (как, например, у типа double), что его можно рассмат-
ривать в качестве континуума, однако все равно это фиксированное множество.
В качестве простейшего примера можно привести тип bool, который может прини-
мать только одно из двух значений: true или false.
Существует большое количество ситуаций, когда требуется переменная, при-
нимающая значение из фиксированного множества. Например, может возникнуть
необходимость в использовании переменной типа orient ... Читать дальше »
Категория: информатика | Просмотров: 1084 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Дополнительные сведения
о переменных
Теперь, когда вы больше узнали о языке С#, самое время вернуться назад
и рассмотреть наиболее сложные темы, касающиеся переменных.
Первой темой, к обсуждению которой мы приступим в этой главе, является
преобразование типов, которое описывает преобразование значений одного типа
в значения другого типа. Мы уже несколько раз сталкивались с примерами таких
преобразований, однако теперь рассмотрим эту тему с формальной точки зрения.
Усвоение этой информации поможет намного лучше понять, что происходит при
использовании в одном выражении различных типов переменных (преднамеренно
или случайно), и более точно управлять манипуляциями над данными. Это позво-
лит не отвлекаться при написании кода и избежать неприятных сюрпризов.
Вы познакомитесь с новыми типами переменных:
• Перечислимый тип — тип переменных, которые принимают
дискретные значения из множества, определяемого пользова ... Читать дальше »
Категория: информатика | Просмотров: 1248 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Прекращение выполнения цикла
Иногда возникают ситуации, когда требуется более тонкий контроль за выпол-
нением кода в цикле. В С# для этих целей предусмотрено четыре команды, с тре-
мя из которых вы уже познакомились:
• break — приводит к немедленному завершению цикла.
• continue — приводит к немедленному завершению текущего
прохода цикла (вычисления продолжаются со следующего прохода).
• goto — позволяет выйти из цикла в помеченную точку кода
(этот метод не рекомендуется использовать, если вы хотите получить
легко читаемый и понимаемый код).
• return — выводит из цикла и из функции, в которой он находится
- (см. главу 6).
Команда break позволяет просто выйти из цикла, при этом управление переда-
ется на первую строку кода после цикла. Например:
int i = 1;
while (i <= 10)
{
i f (i == 6 V • . .\ .:, :v ' : . л
:,;;.:;:;
break; • ' • "••
Console.WriteLine("{0}*, i++) ;
••«-•::^ :: • ... Читать дальше »
Категория: информатика | Просмотров: 1177 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Цикл while
Цикл while очень похож на цикл do, однако у него имеется одно важное отли-
чие: вычисление логического условия в цикле while происходит в начале цикла,
а не в конце. Если в результате проверки условия будет получено значение false,
то цикл while вообще не будет выполняться и управление передается коду,
расположенному после этого цикла.
68 Глава 4
Цикл while оформляется следующим образом:
while {<условие>)
Он может использоваться практически так же, как и цикл do. Например:
int i = 1;
while (i <= 10)
Console.WriteLine('{0}", i
Выполнение этого кода приведет к тому же результату: числа от 1 до 10 будут вы-
ведены в столбец.
Давайте изменим программу так, чтобы в ней использовался цикл while.
Практикум: использование цикла while
1. Откройте консольное приложение с именем chO4ExO5
В директории C:\BegCSharp\Chapter4.
2. Модифицируйте код следующим образом (в качестве отп ... Читать дальше »
Категория: информатика | Просмотров: 1484 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Организация циклов
Цикл — это участок кода, в котором операторы выполняются по несколько раз.
Такой способ в ряде случаев бывает чрезвычайно удобным, поскольку позволяет
повторять необходимые действия столько раз, сколько требуется (тысячи и даже
миллионы), без необходимости выписывать соответствующий код такое же количе-
ство раз.
Управление ппрядком выппя„о„, „
65
. ^ ^ ^ r ^ r s ^ грамму- выч~ю
Дя из предположения, что проТенты 1 И С Л " Д е с я т И л е™е™ № исхо-
снимаются и не добавляются насчет: Н а Ч И С Л Я Ю Т С Я е Ж е Г О Д Н 0 и ™™™ суммы не
double balance = Ю00;
balance *. interestRate;
balance *- interestRate;
balance *= interestRate;
balance *= interestRate;
balance *= interestRate;
balance *= interestRate;
balance *= interestRate;
к о д о „
ме»ее П М е з н ы ) ,
Цикл do
Д о с т а т о ч н о
если
и ^
имеет следующую структуру:
Л р 0 М [ 1 я е т с я »«О Т°Р~ ™ ... Читать дальше »
Категория: информатика | Просмотров: 1389 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Оператор switch
Оператор switch очень похож на оператор if в том смысле, что он также обес-
печивает условное выполнение кода в зависимости от результата выполненной
проверки. Однако оператор switch позволяет производить проверку для многих
значений переменной за один проход вместо того, чтобы проверять всего лишь
одно условие. Эти проверки ограничены отдельными значениями и не допускают
конструкций типа "больше, чем X", поэтому их использование имеет некоторые
отличия; однако такой способ является очень эффективным.
Принципиальная структура оператора switch имеет следующий вид:
switch {<контрольнаяПеременная>)
(
case <значение1>:
<код, который должен выполняться в том случае,
если <контрольнаяПеременная> == <значение1> >
\ break; \ ' * ; • • • • ••• • •
case <значение2>:
<код, который должен выполняться в том случае,
если <контрольнаяПеременная> ... Читать дальше »
Категория: информатика | Просмотров: 1053 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Оператор goto
С# позволяет помечать строки кода, а затем непосредственно переходить к их
выполнению с помощью оператора goto. У этого оператора имеются свои преиму-
щества и недостатки. Основное преимущество заключается в том, что это очень
простой способ управлять очередностью выполнения кодов. Однако чрезмерное
его использование может привести к трудному для понимания "лоскутному" коду,
что является его главным недостатком.
Для лучшего понимания давайте рассмотрим, каким образом может использо-
ваться этот оператор.
Оператор goto имеет вид:
goto <имяМетки>;
Метки задаются таким образом:
<имяМетки>:
В качестве примера разберем следующий код:
int my Integer = 5;
goto myLabel;
myInteger +=10;
myLabel:
Console.WriteLine("mylnteger = {0}•, myinteger);
Его выполнение осуществляется следующим образом:
• Переменная myinteger объявляется как имеющая тип int
и ей присваивается значен ... Читать дальше »
Категория: информатика | Просмотров: 1795 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Логические операторы присваивания
Последние операторы, которые нам осталось обсудить в этом разделе,— это
комбинация рассмотренных выше операторов с оператором присваивания. Они во
многом сходны с математическими операторами присваивания, рассматривавши-
мися в предыдущей главе ( + = , *= и т.д.). Логические операторы приведены
в следующей таблице:
Оператор Тип Пример выражения Результат
Бинарный
Бинарный
Бинарный
varl &= var2;
varl 1= var2;
varl A= var2;
Переменной varl присваивается значение,
являющееся результатом выполнения
операции varl & var2
Переменной varl присваивается значение,
являющееся результатом выполнения
операции varl I var2
Переменной varl присваивается значение,
являющееся результатом выполнения
операции varl л var2
Эти операторы используются как с логическими, так и с численными значениями,
точно так же, как и операторы &, | и ".
Обратите внимание ... Читать дальше »
Категория: информатика | Просмотров: 1188 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Операторы работы с битами
По прочтении предыдущего раздела может возникнуть вопрос, для чего вообще
существуют операторы & и |. Ответ заключается в том, что эти операторы могут
использоваться для выполнения операций над численными значениями. Фактиче-
ски они имеют дело с хранящейся в переменной последовательностью битов, а не со
значением переменной как таковым.
Давайте шаг за шагом рассмотрим работу этих
операторов, начав с оператора &. Он действует сле-
дующим образом: каждый бит первого операнда
сравнивается с находящимся в такой же позиции
битом второго операнда, а бит, записывающийся
в аналогичной позиции результата, определяется
следующим образом (см. табл. слева).
Аналогичные действия выпол-
няются и в случае применения
оператора |, только результат
вычисляется несколько иначе
(см. табл. справа).
В качестве примера рассмот-
рим операцию, выполняемую
следующим кодом:
int r ... Читать дальше »
Категория: информатика | Просмотров: 1048 | Добавил: basic | Дата: 11.02.2010 | Комментарии (0)

Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz