2_Состав языка C_new

Содержание

Слайд 2

Вопросы

Алфавит
Лексемы
Идентификаторы
Ключевые слова
Константы
Разделители
Комментарии
Типы данных
Классификация
Типы значения и типы ссылки
Встроенные типы данных
Переменные
Выражения
Операции
Явное и

Вопросы Алфавит Лексемы Идентификаторы Ключевые слова Константы Разделители Комментарии Типы данных Классификация
неявное преобразование типов
Консольный ввод и вывод

Слайд 3

Элементы

Естественный язык:

символы
слова
словосочетания
предложения

Язык программирования:

символы
лексемы
выражения
операторы

Элементы Естественный язык: символы слова словосочетания предложения Язык программирования: символы лексемы выражения операторы

Слайд 4

1. Алфавит языка (символы)

прописные и строчные латинские буквы и знак подчеркивания;
арабские цифры

1. Алфавит языка (символы) прописные и строчные латинские буквы и знак подчеркивания;
от 0 до 9;
специальные знаки “{},| []()+-/ % * . \ ’ : ; & ? < > = ! # ^
пробельные символы (пробел ‘ ‘, символ табуляции ‘\t’)
символы перехода на новую строку ‘\n’.

Слайд 5

2. Лексемы языка

Идентификаторы – имена объектов C# программ.
Могут быть использованы латинские

2. Лексемы языка Идентификаторы – имена объектов C# программ. Могут быть использованы
буквы, цифры и знак подчеркивания.
Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора.
Первым символом должна быть буква или знак подчеркивания (но не цифра).
Пробелы в идентификаторах не допускаются.
Разрешается использовать буквы национальных алфавитов.

Слайд 6

Нотации

Нотация — соглашение о правилах создания имен.
Нотация Паскаля: каждое слово, составляющее идентификатор,

Нотации Нотация — соглашение о правилах создания имен. Нотация Паскаля: каждое слово,
начинается с прописной буквы: MaxLength, PosCount.
Венгерская нотация: наличие префикса, соответствующего типу величины, например, iMaxLength, iPosCount.
Нотация Camel: с прописной буквы начинается каждое слово, составляющее идентификатор, кроме первого, например, maxLength, posCount.
Можно разделять слова, составляющие имя, знаками подчеркивания: max_length, pos_count, при этом все составные части начинаются со строчной буквы.

Слайд 7

Лексемы языка

Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для

Лексемы языка Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение
компилятора.
Их нельзя использовать в качестве идентификаторов.
Знаки операций – это один или несколько символов, определяющих действие над операндами.
Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов.
Символы, составляющие знак операций, могут быть как специальными(&&, | , <) так и буквенными (as , new).

Слайд 8

Лексемы языка

Константы – это неизменяемые величины.
Существуют логические, целые, вещественные, символьные и

Лексемы языка Константы – это неизменяемые величины. Существуют логические, целые, вещественные, символьные
строковые константы, а также константа null.
Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.
Разделители – скобки, точка, запятая пробельные символы.

Слайд 9

Комментарии

Предназначены для записи пояснений к программе и формирования документации.
Однострочный комментарий
// пример комментария
Многострочный

Комментарии Предназначены для записи пояснений к программе и формирования документации. Однострочный комментарий
комментарий
/* пример многострочного
комментария*/

Слайд 10

Типы данных в C#

Тип данных однозначно определяет:
внутреннее представление данных, а следовательно, и

Типы данных в C# Тип данных однозначно определяет: внутреннее представление данных, а
множество их возможных значений;
допустимые действия над данными (операции и функции).

Слайд 11

Классификация типов

Классификация типов

Слайд 12

Типы-значения и типы-ссылки

Стек (статическая память)

Куча (динамическая память, heap)

Значение

Значение

Значение

Значение

Ссылка (адрес)

Ссылка (адрес)

Типы-значения и типы-ссылки Стек (статическая память) Куча (динамическая память, heap) Значение Значение

Слайд 13

Встроенные типы

Встроенные типы

Слайд 14

Встроенные типы

Встроенные типы

Слайд 15

Встроенные типы

Встроенные типы

Слайд 16

Встроенные типы

Встроенные типы

Слайд 17

Константы

Константы

Слайд 18

Константы

Константы

Слайд 19

Константы

Константы

Слайд 20

Переменные

Переменная – именованная область памяти, в которой хранятся данные определенного типа.
Имя

Переменные Переменная – именованная область памяти, в которой хранятся данные определенного типа.
переменной должно соответствовать правилам, по которым формируются идентификаторы C#, отражать смысл хранимой величины и быть легко распознаваемым.
Тип переменной выбирается исходя из диапазона и требуемой точности представления данных.

10

int number=10;

Тип Имя Значение

Слайд 21

Переменные

С# программа состоит из классов.
Класс содержит поля (данные) и методы (функции).
Переменная,

Переменные С# программа состоит из классов. Класс содержит поля (данные) и методы
описанная в методе класса, называется локальной.

class Program
{
static void Main()
{
int x=5;
. . .
}
static void Func()
{
int x=10;
. . .
}
}

Слайд 22

Переменные

Блок — это код, заключенный в фигурные скобки. Основное назначение блока —

Переменные Блок — это код, заключенный в фигурные скобки. Основное назначение блока
группировка операторов.
Область действия переменной, то есть область программы, где ее можно использовать, начинается в точке описания и длится до конца блока, внутри которого она описана.
Область действия распространяется на вложенные блоки.
Имя переменной должно быть уникальным в области ее действия.
int number;
bool ok;
do
{
string buf= Console.ReadLine();
ok= Int32.TryParse (buf, out number);
}
while(!ok);

Слайд 23

Пример 1

namespace pr1
{
class Program
{
//с ошибками!!!
static void Main(string[] args)
{

Пример 1 namespace pr1 { class Program { //с ошибками!!! static void
int x, y, z;
z = x + y;
}
}
}

Слайд 24

Пример 2

namespace pr2
{
class Program
{
//с ошибками!!!
static void Main(string[] args)
{
int

Пример 2 namespace pr2 { class Program { //с ошибками!!! static void
x, y, z;
Console.WriteLine("Введите число");
x = int.Parse(Console.ReadLine());
Console.WriteLine("Введите число");
y = int.Parse(Console.ReadLine());

z = x + y; Console.WriteLine($"{x}+{y}={z}");
for ( int x = 0; x < 10; x++)
{
Console.WriteLine("Введите число");
y = int.Parse(Console.ReadLine());
z = x + y; Console.WriteLine($"{x}+{y}={z}");
} Console.WriteLine($"{x}+{y}={z}");
}//Main
}//Program
}//namespace

Слайд 25

Пример 3

namespace pr3
{
class Program
{
//с ошибками!!!
static void Main(string[] args)

Пример 3 namespace pr3 { class Program { //с ошибками!!! static void
{
int x, y, z;
Console.WriteLine("Введите число");
x = int.Parse(Console.ReadLine());
Console.WriteLine("Введите число");
y = int.Parse(Console.ReadLine());

z = x + y;
Console.WriteLine($"{x}+{y}={z}");
for (x = 0; x < 5; x++)
{
Console.WriteLine("Введите число");
int w = int.Parse(Console.ReadLine());
z = x + w;
Console.WriteLine($"{x}+{w}={z}");
}
Console.WriteLine($"{x}+{w}={z}");
}
}
}

Слайд 26

Пример 4

namespace pr4
{
class Program
{
static void Main(string[] args)
{
int x, y,

Пример 4 namespace pr4 { class Program { static void Main(string[] args)
z;
Console.WriteLine("Введите число");
x = int.Parse(Console.ReadLine());
Console.WriteLine("Введите число");
y = int.Parse(Console.ReadLine());

z = x + y; Console.WriteLine($"{x}+{y}={z}");
for (x = 0; x < 5; x++)
{
Console.WriteLine("Введите число");
int w =int.Parse(Console.ReadLine());
z = x + w;
Console.WriteLine($"{x}+{w}={z}");
}
}
}
}

Слайд 28

Именованные константы

Можно запретить изменять значение переменной, задав при ее описании ключевое слово

Именованные константы Можно запретить изменять значение переменной, задав при ее описании ключевое
const.
Именованные константы должны обязательно инициализироваться при описании.
При инициализации можно использовать не только константу, но и выражение
const int b = 1;
// const распространяется на обе переменные
const float a = 0.1f, у = 0.1f;
const int b = 1, а = 100;
const int х = b * а + 25;

Слайд 29

Выражения

Из констант, переменных, разделителей и знаков операций можно конструировать выражения.
Каждое выражение

Выражения Из констант, переменных, разделителей и знаков операций можно конструировать выражения. Каждое
представляет собой правило вычисления нового значения.
Каждое выражение состоит из одного или нескольких операндов, символов операций и ограничителей.
Если выражение формирует целое или вещественное число, то оно называется арифметическим.
Пара арифметических выражений, объединенная операцией сравнения, называется отношением.

Слайд 30

Основные операции

Основные операции

Слайд 31

Основные операции

Основные операции

Слайд 32

Основные операции

Основные операции

Слайд 33

Основные операции

Основные операции

Слайд 34

Основные операции

Основные операции

Слайд 35

Основные операции

Основные операции

Слайд 36

Приоритеты операций

Приоритеты операций

Слайд 37

Неявное преобразование типов

Неявное преобразование типов возможно только, если не происходит потеря значимости

Неявное преобразование типов Неявное преобразование типов возможно только, если не происходит потеря значимости

Слайд 38

Операция явного преобразования типа

Явное преобразование типа:
(тип) выражение

long b=300; //8 байт
int a=(int)b; //4

Операция явного преобразования типа Явное преобразование типа: (тип) выражение long b=300; //8
байта
byte c=(byte)a;//1 байт

Слайд 39

Консольный ввод и вывод

Программа

Результат

Исходные данные

Устройство ввода данных

Устройство вывода данных

Консоль

Консольный ввод и вывод Программа Результат Исходные данные Устройство ввода данных Устройство вывода данных Консоль

Слайд 40

Вывод

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});

Вывод 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});

Слайд 41

Пример

int x = 5;
Console.WriteLine(x);
Console.Write("x=" + x + "\n");
int y = 10, z

Пример int x = 5; Console.WriteLine(x); Console.Write("x=" + x + "\n"); int
= 15;
Console.WriteLine("x={0}, y={1}, z={2}\n", x, y, z);
Console.WriteLine($"x={x}, y={y}, z={z}\n");

Слайд 42

Ввод

В классе Console определены методы ввода строки и отдельного символа, но нет

Ввод В классе Console определены методы ввода строки и отдельного символа, но
методов, которые позволяют непосредственно считывать с клавиатуры числа.
Ввод числовых данных выполняется в два этапа:
Символы, представляющие собой число, вводятся с клавиатуры в строковую переменную.
Выполняется преобразование из строки в переменную соответствующего типа.
Преобразование можно выполнить:
с помощью класса Convert, определенного в пространстве имен System,
с помощью метода Parse, имеющегося в каждом стандартном арифметическом классе.
с помощью метода TryParse, имеющегося в каждом стандартном арифметическом классе.

Слайд 43

Пример

Console.WriteLine("Введите строку");
string s = Console.ReadLine();
Console.WriteLine("s = " + s );
Console.WriteLine("Введите

Пример Console.WriteLine("Введите строку"); string s = Console.ReadLine(); Console.WriteLine("s = " + s
символ");
char с = (char)Console.Read();
Console.ReadLine();
Console.WriteLine("c = " + с );

string buf; // строка - буфер
Console.WriteLine("Введите целое число" );
buf = Console.ReadLine();
int i = Convert.ToInt32( buf );

Слайд 44

Пример

Console.WriteLine("Введите вещественное число" );
buf = Console.ReadLine();
double x = Convert.ToDouble(buf);

Console.WriteLine("Введите

Пример Console.WriteLine("Введите вещественное число" ); buf = Console.ReadLine(); double x = Convert.ToDouble(buf);
вещественное число" );
buf = Console.ReadLine();
double у = double.Parse( buf );
double z;
bool ok=double.TryParse(
Console.ReadLine(), out z));

Слайд 45

Примеры операций: инкремент и декремент

int m;
int n;
Console.WriteLine("Введите целое число");

Примеры операций: инкремент и декремент 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={k}, m={m},n={n}");
bool t = m-- < n;
Console.WriteLine($"m-- < n={t}, m={m},n={n}");
t = m < --n;
Console.WriteLine($"m < --n={t}, m={m},n={n}");

Слайд 46

Управление консолью

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Нажмите любую клавишу.

Управление консолью 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);
}
}