Файл: Практикум по информатике рекомендовано в качестве учебного пособия.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 725
Скачиваний: 14
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
17 18. Разместите на форме поле ввода (
TextBox
) и две кнопки
(
Button
) с надписями: «блокировать», «разблокировать». Создайте об- работчики события нажатия на кнопки, которые будут делать активным или неактивным поле ввода. Создайте обработчик события нажатия кнопки мышки на форме (
Click
), который будет устанавливать цвет формы и делать невидимыми все элементы.
19. Реализуйте игру минер на поле 3×3 из кнопок (
Button
). Перво- начально все кнопки не содержат надписей. При попытке нажатия на кнопку на ней либо показывается количество мин, либо надпись «ми- на!» и меняется цвет окна.
20. Разместите на форме четыре кнопки (
Button
). Напишите для каждой обработчик события, который будет менять размеры и местопо- ложение на окне других кнопок.
18
ЛАБОРАТОРНАЯ РАБОТА № 2.
ЛИНЕЙНЫЕ АЛГОРИТМЫ
Цель лабораторной работы: научиться составлять каркас про- стейшей программы в среде Visual Studio. Написать и отладить про- грамму линейного алгоритма.
2.1. Структура приложения
Перед началом программирования необходимо создать проект.
Проект содержит все исходные материалы для приложения, такие как файлы исходного кода, ресурсов, значки, ссылки на внешние файлы, на которые опирается программа, и данные конфигурации, такие как параметры компилятора.
Кроме понятия проект часто используется более глобальное поня- тие – решение (solution). Решение содержит один или несколько проек- тов, один из которых может быть указан как стартовый проект. Выпол- нение решения начинается со стартового проекта.
Таким образом, при создании простейшей C# программы в Visual
Studio создается папка решения, в которой для каждого проекта созда- ется подпапка проекта, а уже в ней – другие подпапки с результатами компиляции приложения.
Проект – это основная единица, с которой работает программист.
При создании проекта можно выбрать его тип, а Visual Studio создаст каркас проекта в соответствии с выбранным типом.
В предыдущей лабораторной работе мы попробовали создавать оконные приложения, или иначе Приложения Windows Forms. Примером другого типа проекта является привести проект консольного приложения.
По своим «внешним» проявлениям консольные напоминают при- ложения DOS, запущенные в Windows. Тем не менее, это настоящие
Win32-приложения, которые под DOS работать не будут. Для консоль- ных приложений доступен Win32 API, а кроме того, они могут исполь- зовать консоль – окно, предоставляемое системой, которое работает в текстовом режиме и в которое можно вводить данные с клавиатуры.
Особенность консольных приложений в том, что они работают не в графическом, а в текстовом режиме.
Проект в Visual Studio состоит из файла проекта (файл с расшире- нием
.csproj
), одного или нескольких файлов исходного текста (с рас- ширением
.cs
), файлов с описанием окон формы (с расширением
19
.designer.cs
), файлов ресурсов (с расширением
.resx
), а также ряда служебных файлах.
В файле проекта находится информация о модулях, составляющих данный проект, входящих в него ресурсах, а также параметров построе- ния программы. Файл проекта автоматически создается и изменяется средой Visual Studio и не предназначен для ручного редактирования.
Файл исходного текста – программный модуль, предназначен для размещения текстов программ. В этом файле программист размеща- ет текст программы, написанный на языке C#.Модуль имеет следую- щую структуру:
// Раздел подключенных пространств имен using
System;
// Пространство имен нашего проекта namespace
MyFirstApp
{
// Класс окна public partial class
Form1
:
Form
{
// Методы окна public
Form1()
{
InitializeComponent();
}
}
}
В разделе подключения пространств имен (каждая строка которого располагается в начале файла и начинается ключевым словом using
) описываются используемые пространства имен. Каждое пространство имен включает в себя классы, выполняющие определенную работу, на- пример, классы для работы с сетью располагаются в пространстве
System.Net
, а для работы с файлами – в
System.IO
. Большая часть про- странств, которые используются в обычных проектах, уже подключена при создании нового проекта, но при необходимости можно дописать дополнительные пространства имен.
Для того чтобы не происходило конфликтов имен классов и пере- менных, классы нашего проекта также помещаются в отдельное про- странство имен. Определяется оно ключевым словом namespace
, после которого следует имя пространства (обычно оно совпадает с именем проекта).
20
Внутри пространства имен помещаются наши классы – в новом проекте это класс окна, который содержит все методы для управления поведением окна. Обратите внимание, что в определении класса при- сутствует ключевое слово partial
, это говорит о том, что в исходном тексте представлена только часть класса, с которой мы работаем непо- средственно, а служебные методы для обслуживания окна скрыты в другом модуле (при желании их тоже можно посмотреть, но редакти- ровать вручную не рекомендуется).
Наконец, внутри класса располагаются переменные, методы и дру- гие элементы программы. Фактически, основная часть программы раз- мещается внутри класса при создании обработчиков событий.
При компиляции программы Visual Studio создает исполняемые
.exe-файлы в каталоге bin
1 2 3 4 5 6 7 8 9 ... 12
2.2. Работа с проектом
Проект в Visual Studio состоит из многих файлов, и создание сложной программы требует хранения каждого проекта в отдельной папке. При создании нового проекта Visual Studio по умолчанию сохраняет его в от- дельной папке. Рекомендуется создать для себя свою папку со своей фа- милией внутри папки своей группы, чтобы все проекты хранились в одном месте. После этого можно запускать Visual Studio и создавать новый про- ект (как это сделать, показано в предыдущей лабораторной работе).
Сразу после создания проекта рекомендуется сохранить его в под- готовленной папке: Файл → Сохранить все. При внесении значитель- ных изменений в проект следует еще раз сохранить проект той же ко- мандой, а перед запуском программы на выполнение среда обычно сама сохраняет проект на случай какого-либо сбоя. Для открытия сущест- вующего проекта используется команда Файл → Открыть проект, ли- бо можно найти в папке файл проекта с расширением
.sln и сделать на нем двойной щелчок.
2.3. Описание данных
Типы данных имеют особенное значение в С#, поскольку это
строго типизированный язык. Это означает, что все операции под- вергаются строгому контролю со стороны компилятора на соответст- вие типов, причем недопустимые операции не компилируются. Такая строгая проверка типов позволяет предотвратить ошибки и повысить надежность программ. Для обеспечения контроля типов все перемен- ные, выражения и значения должны принадлежать к определенному типу. Такого понятия, как бестиповая переменная, допустимая в ряде скриптовых языков, в C# вообще не существует. Более того, тип зна-
21 чения определяет те операции, которые разрешается выполнять над ним. Операция, разрешенная для одного типа данных, может оказать- ся недопустимой для другого.
Рис. 2.1. Структура типов данных
Целочисленные типы
В С# определены девять целочисленных типов: char
, byte
, sbyte
, short
, ushort
, int
, uint
, long и ulong
. Тип char может хранить числа, но чаще используется для представления символов. Остальные восемь целочисленных типов предназначены для числовых расчетов.
Некоторые целочисленные типы могут хранить как положительные, так и отрицательные значения (
sbyte
, short
, int и long
), другие же – только положительные (
char
, byte
, ushort
, uint и ulong
).
Типы с плавающей точкой
Такие типы позволяют представлять числа с дробной частью. В С# имеются три разновидности типов данных с плавающей точкой: float
, double и decimal
. Первые два типа представляют числовые значения с одинарной и двойной точностью, вычисления над ними выполняются аппаратно и поэтому быстро. Тип decimal служит для представления чисел с плавающей точкой высокой точности без округления, характер-
Типы данных
Числовые
Целочисленные byte, sbyte ushort, short uint, int ulong, long
С плавающей точкой float double decimal
Символьные char string
Логические bool
Прочие object
22 ного для типов float и double
. Вычисления с использованием этого ти- па выполняются программно и поэтому более медленны.
Числа, входящие в выражения, C# по умолчанию считает целочис- ленными. Поэтому следующее выражение будет иметь значение 0, ведь если 1 нацело разделить на 2, то получится как раз 0: double x = 1 / 2;
Чтобы этого не происходило, в подобных случаях нужно явно ука- зывать тип чисел с помощью символов-модификаторов: f
для float и d
для double
. Приведенный выше пример правильно будет выглядеть так: double x = 1d / 2d;
Иногда в программе возникает необходимость записать числа в экспоненциальной форме. Для этого после мантиссы числа записыва- ется символ «e» и сразу после него – порядок. Например, число 2,5·10
–2
будет записано в программе следующим образом:
2.5e‐2
Символьные типы
В С# символы представлены не 8-разрядным кодом, как во многих других языках программирования, а 16-разрядным кодом, который на- зывается юникодом (
Unicode
). В юникоде набор символов представлен настолько широко, что он охватывает символы практически из всех ес- тественных языков на свете.
Основным типом при работе со строками является тип string
, за- дающий строки переменной длины. Тип string представляет последо- вательность из нуля или более символов в кодировке Юникод. По сути, текст хранится в виде последовательной доступной только для чтения коллекции объектов char
Логический тип данных
Тип bool представляет два логических значения: «истина» и «ложь».
Эти логические значения обозначаются в С# зарезервированными словами true и false соответственно. Следовательно, переменная или выражение типа bool будет принимать одно из этих логических значений.
Рассмотрим самые популярные данные – переменные и константы.
Переменная – это ячейка памяти, которой присвоено некоторое имя, и это имя используется для доступа к данным, расположенным в данной ячейке.
23
Для каждой переменной задается тип данных – диапазон всех возможных значений для данной переменной. Объявляются переменные непосредст- венно в тексте программы. Лучше всего сразу присвоить им начальное значение с помощью знака присвоения «=» (переменная = значение): int a;
// Только объявление int b = 7;
// Объявление и инициализация
Для того чтобы присвоить значение символьной переменной, дос- таточно заключить это значение (т. е. символ) в одинарные кавычки: char ch;
// Только объявление char symbol =
'Z'
;
// Объявление и инициализация
Частным случаем переменных являются константы. Константы – это переменные, значения которых не меняются в процессе выполнения программы. Константы описываются как обычная переменная, только с ключевым словом const впереди: const int c = 5;
2.4. Ввод/вывод данных в программу
Рассмотрим один из способов ввода данных через элементы, раз- мещенные на форме. Для ввода данных чаще всего используют элемент управления
TextBox
, через обращение к его свойству
Text
. Свойство
Text хранит в себе строку введенных символов. Поэтому данные можно считать таким образом: private void button1_Click(
object sender,
EventArgs e)
{ string s = textBox1.Text;
}
Однако со строкой символов трудно производить арифметиче- ские операции, поэтому лучше всего при вводе числовых данных пе- ревести строку в целое или вещественное число. Для этого у типов int и double существуют методы
Parse для преобразования строк в числа. С этими числами можно производить различные арифмети- ческие действия. Таким образом, предыдущий пример можно переде- лать следующим образом: private void button1_Click(
object sender,
EventArgs e)
{ string s = textBox1.Text;
24 int a = int
.Parse(s); int b = a * a;
}
В языках программирования в дробных числах чаще всего исполь- зуется точка, например: «15.7». Однако в C# методы преобразова- ния строк в числа (вроде double.Parse()
или
Convert.ToFloat()
) учитывают региональные настройки Windows, в которых в качест- ве десятичной точки используется символ запятой (например,
«15,7»). Поэтому в полях
TextBox в формах следует вводить дроб- ные числа с запятой, а не с точкой. В противном случае преобразо- вание не выполнится, а программа остановится с ошибкой.
Перед выводом числовые данные следует преобразовать назад в строку. Для этого у каждой переменной существует метод
ToString()
, который возвращает в результате строку с символьным представлением значения. Вывод данных можно осуществлять в элементы
TextBox или
Label
, используя свойство
Text
. Например: private void button1_Click(
object sender,
EventArgs e)
{ string s = textBox1.Text; int a = int
.Parse(s); int b = a * a; label1.Text = b.ToString();
}
2.5. Арифметические действия и стандартные функции
При вычислении выражения, стоящего в правой части оператора присвоения, могут использоваться арифметические операции:
умножение (×);
сложение (+);
вычитание (–);
деление (/);
остаток от деления (
%
).
Для задания приоритетов операций могут использоваться круглые скобки
( )
. Также могут использоваться стандартные математические функции, представленные методами класса
Math
:
Math
.Sin(a)
– синус;
Math
.Sinh(a)
– гиперболический синус;
25
Math
.Cos(a)
– косинус (аргумент задается в радианах);
Math
.Atan(a)
– арктангенс (аргумент задается в радианах);
Math
.Log(a)
– натуральный логарифм;
Math
.Exp(a)
– экспонента;
Math
.Pow(x, y)
– возводит переменную x
в степень y
;
Math
.Sqrt(a)
– квадратный корень;
Math
.Abs(a)
– модуль числа;
Math
.Truncate(a)
– целая часть числа;
Math
.Round(a)
– округление числа.
В тригонометрических функциях все аргументы задаются в радианах.
2.6. Пример написания программы
З а д а н и е : составить программу вычисления для заданных зна- чений x, y, z арифметического выражения:
2 2
2
tg (
) e cos sin
y z
u
x y
x
z
Панель диалога программы организовать в виде, представленном на рис. 2.2.
Для вывода результатов работы программы в программе использу- ется текстовое окно, которое представлено обычным элементом управ- ления. После установки свойства
Multiline в
True появляется возмож- ность растягивать элемент управления не только по горизонтали, но и по вертикали. А после установки свойства
ScrollBars в значение
Both в окне появится вертикальная, а при необходимости и горизон- тальная полосы прокрутки.
Рис. 2.2. Внешний вид программы