Программирование на C#: быстрый старт.
Т.В. Гурьянова, Р.О. Свистунов

Конспект занятий по C# для школьников, знакомых с основами какой-либо языка программирования высокого уровня

Смотри также

Уроки по C#. Роман Свистунов

Первая программа

Если у вас на компьютере установлеан ОС Windows, начиная, с версии 7 или достаточно новый вариант   Windows XP, для того, чтобы начать писать программы на C#, не нужно устанавливать никакого дополнительного программного обеспечения.

Текст  программы можно писать в обычном текстовом редакторе Notepad (Блокнот).

Вот пример простейшей программы:

using System;
class FirstProgram{
    public static void Main(){
    Console.WriteLine("Первая программа на С#");
    }
}

Для того, чтобы откомпилировать набранную программу, сохраните её в отдельном файле и запустите в командной строке

csc имя вашей программы

Ничего не вышло?

Дело в том, что программа csc (csc.exe) находится на вашем компьютере в папке

C:\Windows\Microsoft.NET\Framework\v3.5

 

screan_C_sharp

Поэтому, чтобы её запустить вместе с только что набранной вами программой, необходимо либо сохранить программу в той же директории, либо путь C:\Windows\Microsoft.NET\Framework\v3.5 прописать в реестр (см. аналогичное видео по настройке для   Java: https://youtu.be/vlYdleLQjek ).

Можно также при первом запуске командной строки в окне команд набрать

 path C:\Windows\Microsoft.NET\Framework\v3.5.

screen_1C#В имени программы нельзя использовать специальные символы и пробелы, не каждый компилятор поймёт русский шрифт! Если в имени программы присутствуют только латинские буквы и цифры, то проблем точно не будет!

screen_4C#

Программа откомпилируется правильно и создастся одноименный *.exe – файл, который можно выполнить

screen_5C#

Сейчас можно запустить созданный компилятором *.exe-файл. Как результат выполнения, мелькнёт чёрный экран. Чтобы рассмотреть надпись   “Первая программа на С#” которую мы повелели компилятору вывести в консоль (команда Console.WriteLine()), нужно в коде дописать еще одну строчку Console.ReadKey();  — эта команда позволит задержать окно консоли (не позволить ему сразу закрыться): окно будет открыто до того момента, пока мы не нажмём какую-либо клавишу на клавиатуре.

Вот окончательный код программы:

using System;
class FirstProgram{
   public static void Main(){
   Console.WriteLine("Первая программа на С#");
   Console.ReadKey();
   }
}

Примеры и упражнения

Данная программа считывает два целых числа из консоли, складывает их и выводит в консоль результат:

 using System;
class Program_sum{
      public static void Main(){
         int a=int.Parse(Console.ReadLine());
         int b=int.Parse(Console.ReadLine());
         int c=a+b;
         Console.WriteLine(c);
         Console.ReadKey(); 
       }                             
}

 Так выглядят операторы выбора в С#

      if(ch=='a')...
 else if(ch=='b')

 switch(ch){
         case 'a': ...
                   break;
         case 'b': ...
                   break; 
         default:   ...
                   break;
                               
}

Вывести в консоль все заглавные английские буквы.

//Выполнил Матвей Малиновский в 8 классе.
using System;
class A_Z_print{
   public static void Main(){
        string str = "";
        char ch = 'A';
        while (ch<='Z') {
           str = (str+" "+ch);
           ch = (char)(ch+1);
        }
        Console.WriteLine(str);
        Console.ReadKey();
   }
}

Упражнение по-сложнее. В консоль вводится очень длинная строка из цифр и знаков + и -. Подсчитать значение выражения. Затем можно ещё больше усложнить задачу, например, расставив в водимом выражении знаки умножить, разделить и скобочки (чтобы отслеживать приоритет операций).

Если вам совсем непонятно, как выполнять самый простой вариант этого  упражнения,  попробуйте исправить приведенный ниже код:

using System;
class Program{
    public static void Main()  {
    
    string str = Console.ReadLine();
        

        char ch = '+';
        int a = str.Length;
        int b = 0;
        int i = 0;
        int x = 0;
        int chislo = 0;
        int dop = 0;
        int dop1 = 0;
        int dop2 = 0;
        while (b<a)
        {
            b=b+1;
            int z=1;
            switch (str[i])
            {
                case '1':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '2':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '3':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '4':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '5':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '6':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '7':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '8':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '9':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

                case '0':
                    
                    while(x==0)
                    {

                        if (char.IsDigit(str[z+1]))
                        {dop1 = str[z];
                        dop2 = str[z+1];
                        dop = dop1*10+dop2;
                        z++;}
                        else 
                        {x=0; dop=str[z];}
                    }
                    if (ch=='+')
                        chislo = chislo + dop;
                    if (ch=='-')
                        chislo = chislo - dop;
                    break;

            
                case '+':
                    ch = '+';
                    break;
                case '-':
                    ch = '-';
                    break;
                case ' ':
                    break;
                default:chislo=str[i];
                    break;
            }
            
            i++;
        }    
            Console.WriteLine(chislo);
                
            Console.ReadKey();

    }    
}


    

Пример

Программа написана на С# для построения путей в лабиринте (трёх уровней сложности) для робота  в обучающей игре и встроена в виде *dll в код Паскаля.

using System;
using System.Collections.Generic;
class LabGen
{
 public static int[,] Gen(int sizex, int sizey, string diff, int entrypointx, int entrypointy, int exitpointx, int exitpointy,int seed)
 {
  switch(diff)
  {
   case "Noob": return GenNoob(sizex,sizey,entrypointx,entrypointy,exitpointx,exitpointy,seed);
   case "Easy": return GenEasy(sizex,sizey,entrypointx,entrypointy,exitpointx,exitpointy,seed);
   case "Hard": return GenHard(sizex,sizey,entrypointx,entrypointy,exitpointx,exitpointy,seed);
   default: throw new Exception("Такой сложности нету. Пиши нормально, Андрей");
  }
 }
 private static int[,] GenNoob(int sizex, int sizey, int entrypointx, int entrypointy, int exitpointx, int exitpointy, int seed)
 {
  Random r = new Random(seed);
  int[,] arr = new int[sizex,sizey];
  for(int i = 0; i<sizex;i++)
   for(int j=0; j<sizey;j++)
    arr[i,j]=8;
  arr[entrypointx,entrypointy]=0;
  int robotx=entrypointx, roboty=entrypointy;
  while(robotx!=exitpointx||roboty!=exitpointy)
  {
   if(r.Next(0,2)==0&&robotx!=exitpointx) { robotx=robotx<exitpointx?robotx+1:robotx-1; arr[robotx,roboty]=0; }
   else if(roboty!=exitpointy) { roboty=roboty<exitpointy?roboty+1:roboty-1; arr[robotx,roboty]=0; }
   else { robotx=robotx<exitpointx?robotx+1:robotx-1; arr[robotx,roboty]=0; }
  }
  return arr;
 }
 private static int[,] GenEasy(int sizex, int sizey, int entrypointx, int entrypointy, int exitpointx, int exitpointy, int seed)
 {
  Random r = new Random(seed);
  int[,] arr = GenNoob(sizex,sizey,entrypointx,entrypointy,exitpointx,exitpointy,seed);
  int wavescount = sizex*sizey*sizex*sizey*4;
  for(int i = 0; i<wavescount; i++)
  {
   try{
   int rx=r.Next(1,sizex), ry=r.Next(1,sizey);
   while(arr[rx,ry]!=0) {rx=r.Next(1,sizex); ry=r.Next(1,sizey); }
   switch(r.Next(0,4))
   {
    case 0: if(arr[rx+2,ry]!=0&&arr[rx+1,ry+1]!=0&&arr[rx+1,ry-1]!=0) arr[rx+1,ry]=0; break;
    case 1: if(arr[rx-2,ry]!=0&&arr[rx-1,ry+1]!=0&&arr[rx-1,ry-1]!=0) arr[rx-1,ry]=0; break;
    case 2: if(arr[rx,ry+2]!=0&&arr[rx+1,ry+1]!=0&&arr[rx-1,ry+1]!=0) arr[rx,ry+1]=0; break;
    case 3: if(arr[rx,ry-2]!=0&&arr[rx+1,ry-1]!=0&&arr[rx-1,ry-1]!=0) arr[rx,ry-1]=0; break;
   }
   }catch{}
  }
  return arr;
 }
 private static int[,] GenHard(int sizex, int sizey, int entrypointx, int entrypointy, int exitpointx, int exitpointy, int seed)
 {
  Random r = new Random(seed);
  int[,] arr = GenNoob(sizex,sizey,entrypointx,entrypointy,exitpointx,exitpointy,seed);
  int wavescount = (int)((sizex*sizey*(r.Next(50,100)/100.0)+1));
  for(int i = 0; i<wavescount; i++)
  {
   try{
   int rx=r.Next(1,sizex), ry=r.Next(1,sizey);
   while(arr[rx,ry]!=0) {rx=r.Next(1,sizex); ry=r.Next(1,sizey); }
   switch(r.Next(0,4))
   {
    case 0: if(arr[rx+2,ry]!=0) arr[rx+1,ry]=0; break;
    case 1: if(arr[rx-2,ry]!=0) arr[rx-1,ry]=0; break;
    case 2: if(arr[rx,ry+2]!=0) arr[rx,ry+1]=0; break;
    case 3: if(arr[rx,ry-2]!=0) arr[rx,ry-1]=0; break;
   }
   }catch{}
  }
  return arr;
 }
}

 

Рекомендуем прочесть книгу Герберта Шилдта «C# 4.0 полное руководство» и пользоваться сайтом msdn.microsoft.com, когда надо будет найти конкретные реализации, не рассмотренные в книге.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>