Преподавание в школе Visual C# Express Edition

Пояснительная записка

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

Цель: усвоение новых знаний по изучению основ языка С#, включающее: знакомство с программным обеспечением MS C# Express Edition, создание консольных приложений с вводом-выводом данных на дисплей и в файл, реализацию проектов прикладного назначения со сложной структурой в Windows - формах.

По этапам учебного процесса 10 уроков по данной теме представляются в виде блока уроков: первичное ознакомление с материалом, применения полученных знаний и умений на практике, повторения и обобщения. Рекомендуется изучать в 9-11 классах.

Задачи:

Образовательные:
  • познакомить учащихся со средой программирования,
  • познакомить учащихся с основными типами данных,
  • познакомить учащихся со строковыми и арифметическими выражениями,
  • познакомить учащихся с различными категориями стандартных функций,
  • изучить методы нахождения ошибок в программе,
  • изучить методы создания собственных функций и подпрограмм,
  • закрепление знаний и умений на основе практической деятельности по реализации программных продуктов.
Воспитательные: рациональный подход; объективное отношение к себе; формирование стремления к самообразованию повышение интереса к предмету; воспитание чувства коллективизма, взаимопомощи, ответственности; бережное отношение к технике; развивать уважение к собеседнику; доверие.

Развивающие: развивать логическое мышление, умение алгоритмизировать, анализировать, систематизировать полученные знания, формировать чувство ответственности за собственные результаты в учебе.

Тип уроков в блоке:

Все уроки - комбинированные: изложение нового материала, усвоение новых знаний путем практической самостоятельной работы по созданию программы в среде MS C# Express Edition.

Содержание
  1. Консольные приложения. Типы данных. Арифметические выражения.  
  2. Операции C#.
  3. Тернарный оператор.
  4. Условные операторы. Оператор if.
  5. Условные операторы. Оператор switch.
  6. Объектно-ориентированное программирование. Понятие объекта. Свойства. Методы. События.
  7. Интегрированная среда разработки Visual C#. Графический интерфейс. Форма и управляющие элементы формы.
  8. Графика в C#.
Пояснительная записка по языку Visual C#

Автором языка C# является Андерс Хейлсберг. C 2000 года он возглавлял группу в компании Microsoft по созданию и проектированию языка C#. Это объектно-ориентированный язык программирования, используемый для разработки прикладных приложений на платформе .NET Framework. C# относится к семье языков с C-подобным синтаксисом, и его синтаксис наиболее близок к C++ и Java. На протяжении 5 лет, начиная с 2011 года автором данной методической разработки проводится обучение школьников 8 - 11 классов языку С#. Ниже приводится 10 ознакомительных уроков по консольным и Windows - приложениям. Фирма Microsoft в процессе своего эволюционирования развивала и языки программирования такие, как Visual Basic (VB) и С++. Язык VB последовательно расширялся до тех пор, пока не стал полноценным языком разработки. Тем не менее крупные проекты в этом языке становятся неорганизованными и плохо управляемыми. Из-за того, что синтаксис VB унаследован от ранних версий языка Basic, предназначенных для новичков в программировании, он не позволяет писать хорошо структурированные или объектно - ориентированные программы. Напротив, развитие С++ привело к значительному усложнении языка. Наступает момент, когда необходимо создать простой, но имеющий сложную структуру набор языков, сред и средств разработки на основе принципов объектно-ориентированного программирования (ООП). С# и является той отправной точкой - альтернативой для разработчиков и представляет собой простой, современный, ООП язык с безопасными типами, производный от С и С++.

Урок 1. Консольные приложения. Типы данных. Арифметические выражения.

Общие правила языка:

  • Каждый оператор должен заканчиваться точкой с запятой.
  • Операторы объединяются в блоки с помощью фигурных скобок.
  • Комментарии начинаются с //
  • Многострочные комментарии начинаются с /* Заканчиваются - */
  • Директива using сообщает компилятору, где искать те типы, которые не определены в текущем пространстве имен.
  • Типы данных. С# поддерживает общую систему типов (CTS)включающую: int, char, float, string, decimal и т. д.
  • С# является строго типизированным языком – нет автоматического преобразования типов.
  • Данные в программе хранятся в одном из двух мест в зависимости от типа: стек используется для хранения данных фиксированной длины – переменные типов по значению, (int – четыре байта), переменные типов по ссылке хранятся в куче.
  • С# имеет пятнадцать предопределенных типов: тринадцать типов по значению и два типа по ссылке: (string и object).
Информатика, как точная наука, работает с формальными структурами данных. Примерами структур данных являются числа, логические значения, последовательности, таблицы, строки, списки, деревья, графы и т.п. Структуры данных существуют независимо от их реализации в программировании. Уже в XVIII - XIX веках ученые использовали эти понятия. Это основные кирпичики информации, из которых формируется сложная структура объектов. Удачный выбор структуры данных для представления информации может существенно повысить эффективность решения задачи. Реализация структур объектов в языке программирования производится через соответствующие типы данных. Важным компонентом платформы .Net является иерархически организованная библиотека классов - пространство имен .Net. Корневым элементом в этой сложной структуре является имя SystemSystem содержит фундаментальные типы данных платформы .Net, используемые в приложениях: Object, Byte, Char, Array, Int32, String, и др. Кроме того System содержит элементы пространства имен второго уровня и более 100 системных классов, обеспечивающих преобразование типов данных, интерфейсы и аттрибуты классов, обработку исключений, управления процессами выполнения приложений.

Таблица типов данных платформы .Net

КатегорияИмя классаОписаниеТип данных в VBC#C++
Integer ЦелоеByte8-битовое целое без знакаBytebytechar
SByte8-битовое целое со знакомSBytecbytesigned char
Int1616-битовое целое со знакомShortshortshort
Int3232-битовое целое со знакомIntegerintint
Int6464-битовое целое со знакомLonglong__int64
UInt1616-битовое целое без знакаUShortushortunsigned short
UInt3232-битовое целое без знакаUIntegeruintunsigned int
UInt6464-битовое целое без знакаULongulongunsigned __int64
Floating point числа с плавающей точкойSingle32-битовое число с плавающей точкойSinglefloatfloat
Double64-битовое число с плавающей точкойDoubledoubledouble
Logical ЛогическийBooleanЛогический тип (true, false)Booleanboolbool
Other ДругиеChar16-битовый Unicode символCharcharwchar_t
Decimal128-битовое число с фиксированной точкойDecimaldecimalDecimal
IntPtrЦелое со знаком размером 32-бит или 64-бит в зависимости от платформыIntPtrIntPtrIntPtr
UIntPtrЦелое без знака размером 32-бит или 64-бит в зависимости от платформыUIntPtrUIntPtrUIntPtr
Class objects класс объектовObjectКорень в иерархии объектаObjectobjectObject*
StringСтрока символов Unicode неизменной длиныStringstringString*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Типы данных в С#

  
Типы данных в С#Названия типов данных
boolЛогическое
byte8-битовое целое без знака 0-255
sbyte8-битовое целое со знаком -127 … 127
charЛитера
char char1 = 'Z'; // Character literal

char char2 = '\x0058'; // Hexadecimal

char char4 = '\u0058'; // Unicode
decimal128 – битовое с фиксированной точкой
double64-битовое число с плавающей точкой
float32-битовое число с плавающей точкой
int32-битовое целое со знаком
uint32-битовое целое без знака
ulong64-битовое целое со знаком
long64-битовое целое без знака
short16-битовое целое со знаком
ushort16-битовое целое без знака
stringСтрока символов в Unicode
objectАлиасное имя



























При определении типов следует указать тип объекта , следом имя объекта. Например:
int i;
x=100;
ИЛИ
int i=100;
Компилятор С# требует, чтобы каждая переменная по значению была явно инициализирована начальным значение до того, как её можно будет использовать в операциях.
Арифметические операции: + (сложение), - (вычитание), * (умножение), / (деление), % (остаток при делении).
Идентификаторы переменных - это имена, которые даются переменным. Они должны начинаться с буквы или знака подчеркивания, содержат буквы и цифры. В качестве идентификатора нельзя использовать ключевые слова C#.
Пример программы:

using System;
using System.Collections.Generic;
using System.Text;
namespace Проект1
{
class Program
{
static void Main(string[] args)
{ String name;     //Строковая переменная Имя
String fam;     //Строковая переменная Фамилия
String otvet1,otvet2;     //Строковая переменная Отчество
Console.WriteLine("Введите ваше имя");     // Вывод текста на консоль
name=Console.ReadLine();     // Чтение введенного имени на консоль
Console.WriteLine("Введите вашe фамилию");
fam=Console.ReadLine();
otvet1="Добрый день, "+name+" " +fam;
Console.WriteLine(otvet1);
Console.WriteLine("Успехов " + name + " " + fam);
Console.ReadLine();     // Оператор вводится, чтобы консоль не закрылась
return;
}
}
}

Задание 1
Добавить отчество и вывод, используя отчество.

Задание 2
Ввести первое число Х, ввести второе число У. Вывести результат суммы, разности, произведения, деления двух чисел Х и У.

static void Main(string[] args)
{
int x,y;
int z;
float r;
Console.WriteLine("Введите X");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите Y");
y = Convert.ToInt32(Console.ReadLine());
// Сложение
z = x + y;
Console.WriteLine("z=x+y " + Convert.ToString(z));
// Вычитание
...
// Умножение
...
// Деление
...
Console.WriteLine("Успехов ");
Console.ReadLine();
return;
}
}

Задания по работе с арифметическими выражениями

Урок 2. Операции C#.



Вопросы
  1. Перечислите арифметические операции, используемые в C#.
  2. Какой тип данных используется для логической переменной?
  3. Какой тип переменных используется с помощью объявления переменных int, uint, long, ulong?.

Большинство операций языка C# аналогично операциям языков С и С++. С# поддерживает следующие операции.

КатегорияОперация
Арифметические+ - * . %
Логические& | ^ ~ && || !
Конкатенация строк+
Инкремент и декремент++ --
Побитовый сдвиг<< >>
Сравнение== != < > <= >=
присваивание= += -= *= .= %= |= &= ^= <<= >>=
Индексирование для массивов[]
Создание объектовnew
ulong64-битовое целое со знаком
















Сокращенная запись операций. Рассмотрим операции инкремента и декремента. выражения х++ и ++х эквивалентны выражению х=х+1. Необходимо иметь ввиду, что если они используются в других выражениях, то ведут себя по-разному. Префиксный оператор (++х) будет вычислен до того, как будет вычислено выражение. Постфиксный оператор увеличивает значение х после вычисления выражения. Приведем полный список сокращенных операторов С#:

СокращенияПолное представление операторов
х++, ++хх = х + 1
х--, --хх = х - 1
Конкатенация строк+
x +=yx = x + y
x -=yx = x - y
x *=yx = x * y
x /=yx = x / y
x %=yx = x % y
x >>=yx = x >> y
x <<=yx = x << y
x ^=yx = x ^ y
x &=yx = x & y
x |=yx = x | y




















Приоритет операций

ГруппаОперация
Унарные+ - ! ~ ++Х --Х
Умножение/Деление* / %
Сложение/Вычитание+ -
Операции побитового сдвига<< >>
Отношения< > <= >= is
Сравнения== !=











Оператор is. Оператор is позволяет проверить, совместим ли объект с определенным типом. Рассмотрим пример, где переменная а имеет тип float. И она совместима с типом Object и float. И несовместима с типом double и int.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _Совместимость
{
class Program
{
static void Main(string[] args)
{ float a=10.3F;
if (a is Object){
Console.WriteLine(" Переменная а типа Object");
}
if(a is float){
Console.WriteLine(" Переменная а типа Float");
}
if (a is double)
{
Console.WriteLine(" Переменная а типа Double");
}
if (a is int)
{
Console.WriteLine(" Переменная а типа Double"); }
Console.ReadLine();
}
}
}

В результате работы программы на экране будут выведены следующие сообщения:
Переменная а типа Object
Переменная а типа float

Задания


Урок 3. Тернарный оператор.



Вопросы
  1. Что такое унарная операция? Перечислите унарные операции, используемые в C#.
  2. Перечислите логические операции в С#?
  3. Перечислите операции сравнения в C#. int, uint, long, ulong?.

Тернарный оператор является частным случаем конструкции if ... then ... else, обозначается - ?:. Название тернарный соответствует тому, что он состоит из трех операторов:

УСЛОВИЕ ? ЗНАЧЕНИЕ_ЕСЛИ_ИСТИНА : ЗНАЧЕНИЕ_ЕСЛИ_ЛОЖЬ

Проверяется логическое УСЛОВИЕ, если УСЛОВИЕ истинно, возвращается ЗНАЧЕНИЕ_ЕСЛИ_ИСТИНА, в противном случае возвращается ЗНАЧЕНИЕ_ЕСЛИ_ЛОЖЬ.

Примеры использования:

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _День_недели
{
class Program
{
static void Main(string[] args)
{
String д_н;
String результат;
Console.WriteLine("Введите день недели");
д_н=Console.ReadLine();
результат=(д_н == "понедельник" | д_н=="вторник" | д_н=="среда" | д_н=="четверг" | д_н=="пятница" ? "учебный день" : "выходной");
Console.WriteLine(результат);
Console.ReadLine();
}
}
}


Задания


Урок 4. Условные операторы. Оператор if.



Вопросы
  1. Что такое тернарнай оператор?
  2. Приведите примеры использования тернарного оператора.

На уроке рассматриваются основные операторы языка, которые позволяют управляют логикой программы, а не просто последовательно исполнять программу. К таким операторам относится оператор if. Суть условного оператора заключается в том, что в зависимости от выполнения определенных условий или от значений определенной величины, он позволяет разветвлять процесс выполнения программы. Условное ветвление в языке С# наследует конструкцию if ... then ... else ... из процедурных языков С и С++:

if (условие)
{
последовательность операторов
}
else
{
последовательность операторов
}

Если используется один оператор, то фигурные скобки можно не писать. В блок else можно включать оператор if для использования нескольких условий. Глубина вложенности (вложенные блоки else if) произвольна.
Примеры использования оператора if

Вводится число х. Требуется вычислить y:
При x>-1 y=5x2-3
При x<=-1 y=-x+3
Результат вывести на консоль.

using System;
using System.Collections.Generic;
using System.Text;

namespace урок3_проект2
{
class Program
{
static void Main(string[] args)
{
double x,y;
Console.WriteLine("Введите x");
x = Convert.ToDouble(Console.ReadLine());
if (x > -1) y = 5 * Math.Pow(x, 2) - 3; else y = -x + 3;
Console.WriteLine("y= " + Convert.ToString(y));
Console.ReadLine();
}
}
}
Задания по теме Условный оператор if


Урок 5. Условный оператор Switch.


Вопросы
  1. Приведите примеры алгоритмов ветвления с использованием кострукции if ... the ... else ... .
  2. Приведите примеры алгоритмов ветвления с использованием кострукции if ... the ... else if ... then ... else ....

Управляющий оператор switch ... case соответствует алгоритмической структуре Выбор. Применяется для реализации ветвления путем передачи управления одному из нескольких взаимомоисключающих операторов case. Управление передается оператору case, совпадающему со значением оператора switch. Оператор switch может включать любое количество экземпляров case, но два оператора case не могут иметь одинаковых значений. Выполнение в каждом блоке case продолжается до оператора break. Оператор перехода break требуется после каждого блока case, включая последний блок default. Если ни одно выражение case не совпадает со значением оператора switch, управление передается операторам, следующим за необязательным оператором default. Если оператор default отсутствует, то управление передается следующему за switch оператору.

Рассмотрим два примера, в которых используется множественный выбор.
В первом примере переменной caseSwitch присвоено значение 1. Соответственно при выполнении фрагмента программы будет выбран вариант case 1 и на консоли появится сообщение Case 1:

int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Вариант 1");
break;
case 2:
Console.WriteLine("Вариант 2");
break;
default:
Console.WriteLine("Вариант по умолчанию");
break;
}

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

using System;
class SwitchTest
{
static void Main()
{
int n = 2;
switch(n)
{
case 1:
case 2:
case 3:
Console.WriteLine("Выполнены одинаковые условия");
break;
default:
Console.WriteLine("Значения не определены");
break;
}
}
}

Задания по теме управляющий оператор выбора switch

Урок 6. Объектно-ориентированное программирование. Понятие объекта. Свойства. Методы. События.

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

  • свойства
  • функциональные характеристики
  • события над объектами.

К объектам можно добавлять дополнительную функциональность.
Классы объектов являются шаблонами, определяющими наборы свойств, методов и событий. Объекты создаются на основе шаблонов. Например в природе, классом может быть "дерево" -абстрактное понятие дерева. Дерево береза у вашего дома - это объект, сосна у входа в сквер - это другой объект, и оба они принадлежат классу "дерево".
Ключевым фактором ООП является наследование. Оно позволяет повторно использовать объекты, не прибегая к копированию фрагмента кода и вставке в другую программу.
Вторым ключевым фактором ООП является инкапсуляция. Одни объекты не могут управлять свойствами других объектов.
Третьим ключевым фактором ООП является полиморфизм. Различные объекты воспринимают одинаковые сообщения и реагируют на них по-своему.

Примеры классов
Особенности алгоритмизации в объектно - ориентированном программировании

Упражнения
  1. Какие классы объектов существуют в приложении Excel?
  2. Какие классы объектов существуют в приложении Word?
  3. Создайте класс Калькулятор и экземпляр класса.

Урок 7. Интегрированная среда разработки Visual С#. Графический интерфейс. Форма и управляющие элементы формы.
Интегрированная среда разработки

ПО включает систему программных средств, используемую при разработке программного обеспечения:
  • текстовый редактор;
  • средства поддержки интерфейса;
  • компилятор и/или интерпретатор - программы перевода в машинный код или байт-код (Java), понятный компьютеру;
  • отладчик - программу для трассировки и анализа пошагового выполнения программ;
  • справочную систему.

    Современные среды разработки также содержат разнообразные инструменты:
  • браузеры классов для просмотра и редактирования классов;
  • макрокоманды (макросы);
  • конструкторы экранных форм и отчетов;
  • языки SQL запросов;
  • графический интерфейс пользователя;
  • средства управления версиями.
    Программный проект интегрированной среды разработки включает различные программные модули. Основой для создания графического интерфейса при разработке ПО являются форма.
    Форма - это окно приложения, в котором размещаются управляющие элементы. Классы управляющих элементов (Controls) предназначены для выполнения различных функций:
Управляющий элементНазначение
ButtonКнопка управления
CheckBoxФлажок
GroupBoxИнструмент для группировки данных
LabelТекстовое поле для обозначений
ListBoxСписки
ComboBoxСписок с комбинированным окном
PanelПанель
PictureBoxОкно для работы с графикой
RadioButtonПереключатель
TextBoxОкна ввода - вывода текстовых и числовых данных
 














Управляющие элементы

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

Общие свойства графических объектов


Урок 8. Графика в C#.



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

  1. Размер изображения в пикселях — может выражаться в виде количества пикселей по ширине и по высоте (800×600px, 1024×768px).
  2. Количество цветов в палитре (N) или глубина цвета (i: N=2i).
  3. Цветовое пространство (цветовая модель) — RGB, CMYK, XYZ, и др.
  4. Разрешение изображения — величина, определяющая количество точек (элементов растрового изображения) на единицу площади (или единицу длины).
Файлы для хранения точечных изображений включают информационные блоки, содержащие такие данные, как глубина цвета, количество точек в строке и количество строк в массиве. Такой файл может также содержать таблицу цветов (цветовую палитру). Таблица цветов ставит в соответствие числам из растрового образа определенные цвета. На приведенном ниже рисунке изображен точечный рисунок цветовой модели RGB, его представление в виде растрового образа и соответствующая таблица цветов. Каждая точка описывается 4-битным числом, поэтому палитра содержит 2^4 = 16 цветов. Каждый цвет в таблице представляется 24-битным числом: 8 бит для интенсивности красного, 8 бит для интенсивности зеленого и 8 бит для интенсивности синего. Числа отображаются в шестнадцатеричной системе счисления.
Стандартные растровые форматы графических файлов для хранения растровых изображений, поддерживаемые интерфейсом GDI+: BMP, TIFF, GIF, JPEG, PNG, EXIF.
В следующем примере кода демонстрируется создание нового экземпляра класса Bitmap из файла с помощью методов GetPixel и SetPixel для перекрашивания изображения. Формулировка задания: Изменить цвет приграничных полос графического изображения на зеленый. В примере используются свойства изображения, такие как PixelFormat, Width и Height. Пример представлен в виде приложения Windows Forms. На форме расположены управляющие элементы Label1, PictureBox1, PictureBox2 и Button1, TextBox1.
private void button1_Click(object sender, EventArgs e)
{
try
{
// Считывание изображения из файла.
Bitmap image1 = new Bitmap(@"I:\Rastr.jpg", true);
Bitmap image2 = new Bitmap(@"I:\Rastr.jpg", true);
int x, y;
pictureBox2.Image = image2;
// Двойной цикл по прямоугольной области изображения для изменения цвета
// граничных полос в зеленые
for (x = 0; x < image1.Width; x++)
{
for (y = 0; y < image1.Height; y++)
{
Color pixelColor = image1.GetPixel(x, y);
if ((x >= 0 && x <= 20) || (y >= 0 && y <= 22) || (x >= image1.Width - 28 && x <= image1.Width - 1))
{
Color newColor = Color.FromArgb(255, 0, 255, 0);
image1.SetPixel(x, y, newColor);
}
}
}
pictureBox1.Image = image1;
Label2.Text = "Размер изображения: " + image1.Width.ToString() + " X " + image1.Height.ToString() + " " + image1.PixelFormat.ToString();
}
catch (ArgumentException)
{
MessageBox.Show("Ошибка при чтении файла." +
"Проверьте правильность пути.");
}
}

Скачать программу

ЛИТЕРАТУРА

  1. Н. Д. Угринович. Информатика. 10-11 класс.
  2. Документация по С# Microsoft (MSDN)
  3. С# для профессионалов. том 1. Симон Робинсон и др.