Pull to refresh

Visual C# for beginners. Лекция 5. Преобразование типов. Перечисления, структуры, массивы

Reading time6 min
Views2.7K

Всем привет!


Наконец-таки, записал пятую лекцию Visual C# for beginners. В этой лекции я вам расскажу о преобразовании типов переменных. Затем вы узнаете про перечисления, структуры и массивы. Конечно, еще хотесь бы извиниться за столько долгое отсутствие лекций. Связано это с тем, что я организовывал и проводил дни технологий Microsoft TechDays у себя в ВУЗе, и совсем не было времени на работу в этом направлении. Также, эта лекция, скорее всего, последняя в этом году! Я получил много решенных работ, за что очень благодарен всем, кто присылал и пытался решить. Правильные ответы, кто не смог прислать мне на почту, находятся в посте ниже. Так же исходный код, который использовался при записи лекции можно найти под видео.

Ссылки на предыдущие лекции

Лекция 1. Введение
Лекция 2. Hello, World! и знакомство с Visual C# Express 2010
Лекция 3. Переменные и выражения
Лекция 4. Условия и циклы

Ответы на предыдущее домашнее задание:

1. При наличии двух целых чисел, хранящихся в переменных var1 и var2, какую булевскую проверку нужно выполнить для выяснения того, является ли то или другое (но не оба вместе) больше 10?

(var1 > 10) ^ (var2 > 10)

2. Напишите приложение, которое получает два числа от пользователя и отображает их на экране, но отклоняет варианты, когда оба числа больше 10, и предлагает в таком случае ввести два других числа.

    static void Main(string[] args)
    {
      double var1, var2;
      Console.Write("First: "); Double.TryParse(Console.ReadLine(), out var1);
      Console.Write("Second: "); Double.TryParse(Console.ReadLine(), out var2);

      while (var1 > 10 && var2 > 10)
      {
        Console.WriteLine("More than 10. Again.");
        Console.Write("First: "); Double.TryParse(Console.ReadLine(), out var1);
        Console.Write("Second: "); Double.TryParse(Console.ReadLine(), out var2);
      }

      Console.WriteLine("First: {0}, second: {1}. Congrats!", var1, var2);

      Console.ReadKey();
    }


* This source code was highlighted with Source Code Highlighter.


3. Что неверно в следующем коде (постарайтесь решить это задание, не используя Visual Studio)?
Вместо «if ((i % 2) = 0)» должно быть «if ((i % 2) == 0)»

Приятного просмотра!



Исходники из лекций

Лабораторная работа №1. Преобразование типов.
    static void Main(string[] args)
    {
      short shortResult, shortVal = 4;
      int integerVal = 67;
      long longResult;
      float floatVal = 10.5f;
      double doubleResult, doubleVal = 99.999;
      string stringResult, stringVal = "17";
      bool boolVal = true;

      Console.WriteLine("Variable Conversion Examples\n");

      doubleResult = floatVal*shortVal;
      Console.WriteLine("Implicit, -> double: {0} * {1} -> {2}", floatVal, shortVal, doubleResult);

      shortResult = (short) floatVal;
      Console.WriteLine("Explicit, -> short: {0} -> {1}", floatVal, shortResult);

      stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);
      Console.WriteLine("Explicit, -> string: \"{0}\" + \"{1}\" -> {2}", boolVal, doubleVal, stringResult);

      longResult = integerVal + Convert.ToInt64(stringVal);
      Console.WriteLine("Mixed, -> long: {0} + {1} -> {2}", integerVal, stringVal, longResult);

      Console.ReadKey();
    }


* This source code was highlighted with Source Code Highlighter.


Лабораторная работа №2. Перечисления.
    enum orientation : byte
    {
      north = 1,
      south = 2,
      east = 3,
      west = 4
    }

    static void Main(string[] args)
    {
      byte directionByte;
      string directionString;
      orientation myDirection = orientation.north;
      Console.WriteLine("myDirection = {0}", myDirection);
      directionByte = (byte) myDirection;
      directionString = Convert.ToString(myDirection);
      Console.WriteLine("byte equivalent = {0}", directionByte);
      Console.WriteLine("string equivalent = {0}", directionString);

      Console.ReadKey();
    }


* This source code was highlighted with Source Code Highlighter.


Лабораторная работа №3. Структуры.
    enum orientation : byte
    {
      north = 1,
      south = 2,
      east = 3,
      west = 4
    }

    struct route
    {
      public orientation direction;
      public double distance;
    }

    static void Main(string[] args)
    {
      route myRoute;
      int myDirection = -1;
      double myDistance;
      Console.WriteLine("1) North\n2) South\n3) East\n4) West");
      do
      {
        Console.WriteLine("Select a direction:");
        myDirection = Convert.ToInt32(Console.ReadLine());
      } while ((myDirection < 1) || (myDirection > 4));
      Console.WriteLine("Input a distance:");
      myDistance = Convert.ToDouble(Console.ReadLine());
      myRoute.direction = (orientation) myDirection;
      myRoute.distance = myDistance;
      Console.WriteLine("myRoute specifies a direction of {0} and a distance of {1}",
        myRoute.direction, myRoute.distance);

      Console.ReadKey();
    }


* This source code was highlighted with Source Code Highlighter.


Лабораторная №4. Массивы.
    static void Main(string[] args)
    {
      string[] friendNames = {"Robert", "Mike", "Jeremy"};
      Console.WriteLine("Here are {0} of my friends:", friendNames.Length);

      foreach (string friendName in friendNames)
      {
        Console.WriteLine(friendName);
      }

      Console.ReadKey();
    }


* This source code was highlighted with Source Code Highlighter.


Новое домашнее задание

1. Какая из операций не может выполняться неявно:
а) int в short
б) short в int
в) bool в string
г) byte в float

2. Создайте на базе типа short код для перечисления color, содержащего 4 разных цвета. Может ли такое перечисление основываться на byte?

3. Будет ли компилироваться следующий код и почему?
string[] blab = new string[5]
string[5] = 5th string;

* This source code was highlighted with Source Code Highlighter.


P.S. С наступающим Новым Годом, друзья!
Также можно подписаться на мой канал Vimeo, чтобы первыми узнать о выходе нового видео.
Tags:
Hubs:
Total votes 50: ↑31 and ↓19+12
Comments16

Articles