Слайд 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;
}
}