Advertisement
Panglot

Lesson 2 - Data types and variables

Mar 15th, 2014
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.61 KB | None | 0 0
  1. using System;
  2. class DataAndVariable
  3. {
  4.     static void Main()
  5.     {
  6.         //Типовете данни са стандартните в C++, но с разширение за улеснение
  7.  
  8.         // Integer типовете са:
  9.         //byte (0 to 255): unsigned, 8-bit
  10.         //short (-32 768 to 32 767): signed, 16-bit
  11.         //int (-2 147 483 648 to 2 147 483 647): signed 32-bit
  12.         //long (-9 223 372 036 854 775 808 to 9 223 372 036 854 775 807): signed 64-bit
  13.         //byte по подразбиране е unsigned. Добавянето на s пред декларацията (sbyte) го прави signed.
  14.         //Останалите са signed по подразбиране и добавянето на u пред декларацията (ushort, uint, ulong) ги прави unsigned.
  15.  
  16.         //Типовете за реалните числа са отново float и double.
  17.         //float (+-1.5*10^-45 to +-3.4*10^38): прецизност от 7 знака след дробната запетая, 32-bit.
  18.         //double(+-5.0*10^-324 to +-1.7*10^308): прецизност от 15-16 знака след дробната запетая 64-bit.
  19.         //Реалните числа тук се приемат като double по подразбиране. Дори когато правим промеливата
  20.         //от тип float трябва да накараме програмата да третира числото което й подаваме като float
  21.         //като добавим f след него.
  22.         // float a=3.123; ще отчете грешка тъй като то третира 3.123 като double. Добавянето на f
  23.         //накрая е вид кастване за да може компилатора да го разпознае като float.
  24.         float flexample = 3.123f;
  25.         Console.WriteLine("Example that float works: {0}", flexample);
  26.         //При някои сметки с този тип променливи обаче, се появяват абнормалности. Сметките не винаги са вярни.
  27.         double a = 1f;
  28.         double b = 0.33f;
  29.         double sum = 1.33f;
  30.         bool equal = (a + b == sum);// Резултата е false. Сметката не е вярна.
  31.         Console.WriteLine("Example: a={0}, b={1}, a+b={2}, the real sum={3}, the result is {4}", a, b, a + b, sum, equal);
  32.         //Това е причина за добавяне на нов тип за реалните числа, който да прави коректни сметки.
  33.         //decimal(+-1.0*10^-28 to +-7.9*10^28): прецизност от 28-29  знака след дробната запетая, 128-bit.
  34.  
  35.         //Отново имаме bool сърдържащ true или false. Стандартно.
  36.  
  37.         //Отново имаме char но този път той е 2-bit с цел за може да съдържа не само символ от Ascii но и от Unicode таблицата
  38.         //което на практика означава, че може да съдържа всеки символ познат на компютъра.
  39.         char letter = 'Я';
  40.         Console.WriteLine("The code of {0} is {1}", letter, (int)letter);
  41.  
  42.         //Тип string тук е доста широко използван. Събирането на string-ове е стандартно с +, но командата която чете от
  43.         //конзолата изглежда, чете само тип string, който трябва да бъде cast-ван с keyword-а Parse.
  44.         Console.Write("Input number:");
  45.         int number = int.Parse(Console.ReadLine());
  46.         Console.WriteLine("Here is your number:{0}.", number);
  47.         //Като за начало изглежда разочароващо за език по-високо ниво, но може би има конкретна цел.
  48.  
  49.         //Изцяло нов тип е представен в C# - object. Този тип може да съдържа всеки един от останалите
  50.         //с минуса, че не могат да се прилагат математически операции върху него.
  51.         object dataContainer = 5;
  52.         Console.WriteLine("The value of dataContainer is: {0}.", dataContainer);
  53.         dataContainer = "Five";
  54.         Console.WriteLine("The new value of dataContainer is: {0}.", dataContainer);
  55.         dataContainer += " Six";
  56.         Console.WriteLine("The new value of dataContainer is: {0}.", dataContainer);
  57.  
  58.         //Както при C++ и тук се явява проблем, използването на променлива без да е инициализирана предварително.
  59.         //Тук обаче променливите имат стойност по подразбиране. За ги използваме обаче, използваме ключовата дума new.
  60.         int example = new int();
  61.         Console.WriteLine("Here is example with its default value: {0}", example);
  62.         //Ключовата дума new се използва за динамични данни в C++, но тук не изглежда да е така или все още не разбирам
  63.         //в дълбочина реалното използване на new.
  64.  
  65.         //Използвайки 0x пред число (не пред знака му), показва че числото е в 16-ична бройна система.
  66.         //int обаче ще го запише като десетично.
  67.         int numberInHex = -0x10;
  68.         int numberInDec = -16;
  69.         Console.WriteLine("This is the number in hexadecimal: {0}. And this is the number in decimal: {1}", numberInHex, numberInDec);
  70.  
  71.         // \ се явява Escape символ. Ако искам да напиша ' без компилатора да отчете че отварям кавички за тип char
  72.         // трябва да използвам backslash. \' за кавичка, \" за нормални кавички, \n за нов ред, \t за табулация, \\ за backslash в текст.
  73.         Console.WriteLine("\"This text is quotation marks thanks to the escape symbol \\.\"");
  74.  
  75.         //Ключовата дума (или по-скоро символ) @ се явява много полезен инструмент
  76.         //за форматиране на текст. Използва се по следният начин:
  77.         string format = @"
  78.    This is nicely
  79.    formatted text.
  80.    Every tabulation, space,
  81.    or new line is taken in account
  82.    when using the @ command.
  83.    Also there is no need
  84.    for using escape symbols.";
  85.         Console.WriteLine(format);
  86.  
  87.         //Нито един от стандартните типове не може да бъде null. Добавянето на въпросителна след
  88.         //типа на данната, при инициализацията прави инстанция която позволява променливата да
  89.         //бъде и null: int? a; double? b;
  90.         int? someInt = null;
  91.         Console.WriteLine("This is integer with NUll value --> " + someInt + " (in other words has no value).");
  92.  
  93.         //Cast-ването е като в C++: int a=(int)'a'. Добавяме типа към който искаме да cast-ваме
  94.         // в скоби, преди стойността.
  95.         int castedA = (int)'A';
  96.         Console.WriteLine("This is the code of \"A\": {0}, casted from char.", castedA);
  97.  
  98.         //И като последно различно нещо Placeholder-ите.
  99.         //Console.WriteLine("{0} {1} {2}"); Цифрите заградени в къдрави скоби се наричат
  100.         //placehold-ери. Те няма да бъдат отпечатани като текст в изходния поток. Те са
  101.         //запазени места за друго съдържание.
  102.         //Console.WriteLine("{0} {1} {2}", placehodler 0, placeholder 1, placeholder 3).
  103.         //Placehold-ерите ще бъдат заместени с нещата изброени със запетаи след текста.
  104.         //Съответно в примера {0} се замества с placeholder 0 и така нататък.
  105.         string pc0 = "Placeholder 0", pc1 = "placeholder 1", pc2 = "placeholder 2";
  106.         Console.WriteLine("{0}, {1}, {2}.", pc0, pc1, pc2);
  107.  
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement