Слайд 2Элементы
Естественный язык: 
символы, 
слова, 
словосочетания, 
предложения.
Язык программирования: 
символы, 
лексемы, 
выражения,
                                                            
                                    
операторы.
                                                                    
                            							
														
						 
											
                            Слайд 31. Алфавит языка (символы)
прописные и строчные латинские буквы и знак
                                                            
                                    
подчеркивания;
арабские цифры от 0 до 9;
специальные знаки “{},| []()+-/ %
                                    * . \ ’ : ; & ? < > = ! # ^
пробельные символы (пробел, символ табуляции)
символы перехода на новую строку.
                                
                            							
														
						 
											
                            Слайд 42. Лексемы языка
Идентификаторы – имена объектов C# программ. 
Могут быть
                                                            
                                    
использованы латинские буквы, цифры и знак подчеркивания. 
Прописные и строчные
                                    буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. 
Первым символом должна быть буква или знак подчеркивания (но не цифра). 
Пробелы в идентификаторах не допускаются. 
Разрешается использовать буквы национальных алфавитов.
 
                                
                            							
														
						 
											
                            Слайд 5Нотации
Нотация — соглашение о правилах создания имен.
Нотация Паскаля: каждое слово,
                                                            
                                    
составляющее идентификатор, начинается с прописной буквы: MaxLength, TekSum.
Венгерская нотация: наличие
                                    префикса, соответствующего типу величины, например, iMaxLength, fTekSum.
Нотация Camel: с прописной буквы начинается каждое слово, составляющее идентификатор, кроме первого, например, maxLength, tekSum.
Можно разделять слова, составляющие имя, знаками подчеркивания: max_length, tek_sum, при этом все составные части начинаются со строчной буквы.
                                
                            							
														
						 
											
                            Слайд 6Лексемы языка
Ключевые (зарезервированные) слова – это слова, которые имеют специальное
                                                            
                                    
значение для компилятора. Их нельзя использовать в качестве идентификаторов. Можно
                                    использовать ключевые слова в качестве идентификаторов, если поставить перед ними @ (@if – разрешенный идентификатор). 
Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов. Символы, составляющие знак операций, могут быть как специальными(&&, | , <) так и буквенными (as , new).
                                
                            							
														
						 
											
                            Слайд 7Лексемы языка
Константы – это неизменяемые величины. Существуют логические, целые, вещественные,
                                                            
                                    
символьные и строковые константы, а также константа null. Компилятор выделяет
                                    константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.
Разделители – скобки, точка, запятая пробельные символы.
                                
                            							
														
						 
											
											
											
											
                            Слайд 11Комментарии
Предназначены для записи пояснений к программе и формирования документации.
Однострочный комментарий
//
                                                            
                                    
пример комментария
Многострочный комментарий
/* пример многострочного
комментария*/
                                                                    
                            							
														
						 
											
                            Слайд 12Типы данных в C#
Тип данных однозначно определяет:
внутреннее представление данных, а
                                                            
                                    
следовательно, и множество их возможных значений;
допустимые действия над данными (операции
                                    и функции).
                                
                            							
														
						 
											
											
											
											
											
											
                            Слайд 18Типы-значения и типы-ссылки
Стек (статическая память)
Куча (динамическая память, heap)
Значение
Значение
Значение
Значение
Ссылка (адрес)
Ссылка (адрес)
                            							
														
						 
											
                            Слайд 19Переменные
Переменная – именованная область памяти, в которой хранятся данные определенного
                                                            
                                    типа. 
Имя переменной должно соответствовать правилам, по которым формируются идентификаторы
                                    C#, отражать смысл хранимой величины и быть легко распознаваемым.
Тип переменной выбирается исходя из диапазона и требуемой точности представления данных.
10
int number=10;
Тип     Имя        Значение
                                
 
                            							
														
						 
											
                            Слайд 20Переменные
С# программа состоит из классов. 
Класс содержит поля (данные) и
                                                            
                                    
методы (функции).
Переменная, описанная в методе класса, называется локальной.
class Program
 
                                    {
    static void Main()
    {
	int x=5;
	. . .
     }
    static void Func()
     {
       int x=10;
       . . . 
     }
}
                                
                            							
														
						 
											
                            Слайд 21Переменные
Блок — это код, заключенный в фигурные скобки. Основное назначение
                                                            
                                    блока — группировка операторов.
Область действия переменной, то есть область программы,
                                    где ее можно использовать, начинается в точке описания и длится до конца блока, внутри которого она описана. 
Область действия распространяется на вложенные блоки.
Имя переменной должно быть уникальным в области ее действия.
int number;
bool ok;
do 
{
	string buf= Console.ReadLine();
	ok= Int32.TryParse (buf, out number);
}
while(!ok);
                                
 
                            							
														
						 
											
                            Слайд 22Пример 1
namespace t2_pr1
{
  class Program
  {
//с ошибками!!!
 
                                                            
                                    
  static void Main(string[] args)
    {
                                         int x, y, z;
      z = x + y;
    }
  }
}
                                
                            							
														
						 
											
                            Слайд 23Пример 2
namespace t2_pr2
{
  class Program
  {
//с ошибками!!!
 
                                                            
                                      static void Main(string[] args)
    {
int
                                    x, y, z;
Console.WriteLine("Введите число");
x = Convert.ToInt32 (Console.ReadLine());
Console.WriteLine("Введите число");
 y = Convert.ToInt32 (Console.ReadLine());      
z = x + y;      Console.WriteLine("{0}+{1}={2}",x,y,z);
for ( int x = 0; x < 10; x++)
      {
   Console.WriteLine("Введите число");
 y = Convert.ToInt32(Console.ReadLine());
        z = x + y;        Console.WriteLine("{0}+{1}={2}",x,y,z);
      }      Console.WriteLine("{0}+{1}={2}",x,y,z);
    }
  }
}
                                
 
                            							
														
						 
											
                            Слайд 24Пример 3 
namespace t2_pr3
{
  class Program
  {
//с ошибками!!!
                                                            
                                       static void Main(string[] args)
   
                                    {
      int x, y, z;
 Console.WriteLine("Введите число");
 x = Convert.ToInt32 (Console.ReadLine());
 Console.WriteLine("Введите число");
  y = Convert.ToInt32 (Console.ReadLine());      
 z = x + y;
 Console.WriteLine("{0}+{1}={2}",x,y,z);
for (x = 0; x < 5; x++)
      {
    Console.WriteLine("Введите число");
    int w = Convert.ToInt32   
    (Console.ReadLine());
    z = x + w;
 Console.WriteLine("{0}+{1}={2}", x, w, z);
      }
 Console.WriteLine("{0}+{1}={2}", x, w, z);
    }
  }
}
                                
 
                            							
														
						 
											
                            Слайд 25Пример 4
namespace t2_pr4
{
  class Program
  {
static void Main(string[]
                                                            
                                    args)
    {
     
                                    int x, y, z;
 Console.WriteLine("Введите число");
 x = Convert.ToInt32 (Console.ReadLine());
 Console.WriteLine("Введите число");
 y = Convert.ToInt32 (Console.ReadLine());      
 z = x + y;    Console.WriteLine("{0}+{1}={2}",x,y,z);
for (x = 0; x < 5; x++)
      {
   Console.WriteLine("Введите число");
   int w =Convert.ToInt32
  (Console.ReadLine());
    z = x + w;
  Console.WriteLine("{0}+{1}={2}", x, w, z);
      }
     }
  }
}
                                
 
                            							
														
						 
											
											
                            Слайд 27Именованные константы
Можно запретить изменять значение переменной, задав при ее описании
                                                            
                                    
ключевое слово const.
Именованные константы должны обязательно инициализироваться при описании. 
При
                                    инициализации можно использовать не только константу, но и выражение
const int b = 1;
// const распространяется на обе переменные
const float a = 0.1f, у = 0.1f; 
const int b = 1, а = 100;
const int х = b * а + 25;
                                
                            							
														
						 
											
                            Слайд 28Выражения
Из констант, переменных, разделителей и знаков операций можно конструировать выражения.
                                                            
                                    
Каждое выражение представляет собой правило вычисления нового значения. 
Каждое выражение
                                    состоит из одного или нескольких операндов, символов операций и ограничителей. 
Если выражение формирует целое или вещественное число, то оно называется арифметическим. 
Пара арифметических выражений, объединенная операцией сравнения, называется отношением. 
                                
                            							
														
						 
											
											
											
											
											
											
											
											
                            Слайд 36Примеры операций: инкремент и декремент
     
                                                            
                                    
int m;
      int n;
 
                                        Console.WriteLine("Введите целое число");
      string buf = Console.ReadLine();
      m = Convert.ToInt32(buf);
      Console.WriteLine("Введите целое число");
      buf = Console.ReadLine();
      n = Convert.ToInt32(buf);
      int k = m++ +n;
      Console.WriteLine("m++ +n={0}, m={1},n={2}", k, m, n);
      bool t = m-- < n;
      Console.WriteLine("m-- < n={0}, m={1},n={2}", t, m, n);
      t = m < --n;
      Console.WriteLine("m < --n={0}, m={1},n={2}", t, m, n);
                                
                            							
														
						 
											
                            Слайд 37Примеры операций: операция new
Операция new – создает новый объект. Используется
                                                            
                                    
для создания объектов ссылочного типа: 
new тип([аргументы])
object obj=new object();
int x=new
                                    int(); 
                                
                            							
														
						 
											
                            Слайд 38Операция явного преобразования типа
Явное преобразование типа:
(тип) выражение
long b=300; 
int a=(int)b;
                                                            
                                    
byte c=(byte)a;
                                                                    
                            							
														
						 
											
                            Слайд 39Неявное преобразование типов
Неявное преобразование типов возможно только, если не происходит
                                                            
                                    
потеря значимости
                                                                    
                            							
														
						 
											
                            Слайд 40Консольный ввод и вывод
Программа
Результат
Исходные данные
Устройство ввода данных
Устройство вывода данных
Консоль
                            							
														
						 
											
                            Слайд 41Вывод
Console.Write(string s)
Console.WriteLine(string s)
Console.WriteLine(x);
Console.WriteLine(x.ToString());
Console.WriteLine(“x=“+x);
Console.WriteLine(“x={0}, y={1}”, x,y);
Console.WriteLine($”x={x}, y={y});
                            							
														
						 
											
                            Слайд 42Пример
int x = 5;
Console.WriteLine(x);
Console.Write("x=" + x + "\n");
int y =
                                                            
                                    
10, z = 15;
Console.WriteLine("x={0}, y={1}, z={2}\n", x, y, z);
Console.WriteLine($"x={x}, y={y},
                                    z={z}\n");
                                
                            							
														
						 
											
                            Слайд 43Ввод
В классе Console определены методы ввода строки и отдельного символа,
                                                            
                                    
но нет методов, которые позволяют непосредственно считывать с клавиатуры числа.
                                    
Ввод числовых данных выполняется в два этапа:
Символы, представляющие собой число, вводятся с клавиатуры в строковую переменную.
Выполняется преобразование из строки в переменную соответствующего типа.
Преобразование можно выполнить:
с помощью класса Convert, определенного в пространстве имен System, 
с помощью метода Parse, имеющегося в каждом стандартном арифметическом классе.
с помощью метода TryParse, имеющегося в каждом стандартном арифметическом классе.
                                
                            							
														
						 
											
                            Слайд 44Пример
Console.WriteLine("Введите строку");
 string s = Console.ReadLine();
 Console.WriteLine("s = " +
                                                            
                                    s );
      
Console.WriteLine("Введите символ");
 char
                                    с = (char)Console.Read(); 
 Console.ReadLine(); 
 Console.WriteLine("c = " + с );            
 string buf; // строка - буфер
 Console.WriteLine("Введите целое число" );
 buf = Console.ReadLine();
 int i = Convert.ToInt32( buf ); 
                                
 
                            							
														
						 
											
                            Слайд 45Пример
Console.WriteLine("Введите вещественное число" );
 buf = Console.ReadLine();
 double x =
                                                            
                                    
Convert.ToDouble(buf); 
      
Console.WriteLine("Введите вещественное число"
                                    );
 buf = Console.ReadLine();
 double у = double.Parse( buf ); 
 
double z;
bool ok=double.TryParse(
Console.ReadLine(), out z));
                                
                            							
														
						 
											
                            Слайд 46Управление консолью
class Program
  {
    static void
                                                            
                                    
Main(string[] args)
    {
    
                                     Console.WriteLine("Нажмите любую клавишу. Для выхода из программы нажмите Escape");
      ConsoleKeyInfo key;
      do
      {
        key = Console.ReadKey(true); 
        Console.WriteLine($"Нажата клавиша {key.Key.ToString()}");
      } while (key.Key != ConsoleKey.Escape);
    }
  }
                                
                            							
														
						 
											
                            Слайд 47Управление консолью
static void Main(string[] args)
    {
 
                                                            
                                    
   Console.BufferHeight = 400;// 300 строк по умолчанию
                                         ConsoleColor old = Console.ForegroundColor;
      for (int i = 1; i < 350; i++)
      {
        if (i % 5 == 0) Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine(i);
        Console.ForegroundColor = old;
      }
    }