Презентация Объектно-ориентированное программирование. Введение в язык C онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Объектно-ориентированное программирование. Введение в язык C абсолютно бесплатно. Урок-презентация на эту тему содержит всего 104 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Объектно-ориентированное программирование. Введение в язык C
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:104 слайда
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:1.74 MB
- Просмотров:90
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№3 слайд
![Общие сведения по языку C](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img2.jpg)
Содержание слайда: Общие сведения по языку C#
Появился в 2001 году.
Основан на языках Java и Visual Basic
Общий прародитель C++
В первой версии языка:
80 ключевых слов
12 встроенных (базовых) типов данных
Включает все необходимое для создания объектно-ориентированных, компонентных программ.
Одобрен в качестве международного стандарта ECMA (ECMA-334) и ISO(ISO/IEC 23270)
№4 слайд
![Андерс Хейлсберг Anders](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img3.jpg)
Содержание слайда: Андерс Хейлсберг
(Anders Hejlsberg)
Главный проектировщик и ведущий архитектор.
Датский учёный в области информатики.
В 1980 году он написал компилятор языка Паскаль, который продал фирме Borland (этот компилятор дожил до 7 версии (Borland Pascal).
До 1996 года главный проектировщик фирмы Borland, создал новое поколение компиляторов Паскаля: получился язык Delphi.
В 1996 году перешёл в Microsoft, где работал над языком J++ и библиотекой С++ - Windows Foundation Classes.
Позже возглавил комиссию по созданию и проектированию языка C#.
№5 слайд
![Программа на С Программа это](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img4.jpg)
Содержание слайда: Программа на С#
Программа это набор взаимосвязанных классов.
Класс содержит данные и функции
В одном из классов должна быть функция Main, с этой функции начинается выполнение программы
Классы могут быть в разных файлах, в разных сборках (в библиотеках классов).
На внешние модули (библиотеки, или выполняемые модули) должны быть ссылки (references).
Для удобства ссылок на классы программы, желательно использовать пространство имен
Для удобства записи имен внешних классов можно использовать оператор using.
№9 слайд
![Простая программа на C using](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img8.jpg)
Содержание слайда: Простая программа на C#
using System;
namespace ConsoleApp
{
class Program
{
static void Main()
{
Console.Write("Введите радиус круга:");
string s = Console.ReadLine();
double r = Convert.ToDouble(s);
double p = Math.PI * r * r;
Console.WriteLine("Площадь круга = {0}", p);
Console.ReadLine();
return;
}
}
}
№10 слайд
![Сравнение C и Java using](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img9.jpg)
Содержание слайда: Сравнение C# и Java
using System;
class Program
{
public static void Main(string [])
{
Console.Write("Введите радиус круга:");
string s = Console.ReadLine();
double r = Convert.ToDouble(s);
double p = Math.PI * r * r;
Console.WriteLine("Площадь круга = {0}", p);
Console.ReadLine();
}
}
№12 слайд
![Классы Классы это основные](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img11.jpg)
Содержание слайда: Классы
Классы это основные пользовательские типы данных.
Экземпляры класса – Объекты.
Классы описывают
все элементы объекта (данные)
его поведение (методы),
устанавливают начальные значения для данных объекта, если это необходимо.
При создании экземпляра класса в памяти создается копия данных этого класса.
Созданный таким образом экземпляр класса называется объектом.
№13 слайд
![Составные элементы класса](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img12.jpg)
Содержание слайда: Составные элементы класса
Поля (field) – обычно скрытые данные класса (внутренне состояние)
Методы (methods) – операции над данными класса (поведение) (можно называть функциями)
Свойства (property) – доступ к данным класса с помощью функций
get – получить
set – задать
События (event) – оповещение пользователей класса о том, что произошло что-то важное.
№14 слайд
![Экземпляры классов создается](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img13.jpg)
Содержание слайда: Экземпляры классов создается с помощью оператора new.
Для получения данных объекта или вызова методов объекта, используется оператор “.” (точка).
Student s;
s = new Student();
s.Name = “Иванов А.”;
При создании экземпляра класса, копия данных, описываемых этим классом, записывается в память и присваивается переменной ссылочного типа
№15 слайд
![В этом случае описание класса](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img14.jpg)
Содержание слайда: В этом случае описание класса Автомобиль может выглядеть следующим образом:
class Автомобиль
{
// описание свойств
public string Mодель;
public float Расход_топлива;
private int Число_цилиндров;
// описание методов
public void Повернуть_руль(){...};
private Регулировка_датчика(){...};
// описание события
event Перегрев_двигателя();
}
№18 слайд
![Пример описания и](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img17.jpg)
Содержание слайда: Пример описания и использования класса
Самый простой класс
class Car
{
}
Класс с полями
class Car
{
// состояние Car.
public string petName;
public int currSpeed;
}
Класс с методами
class Car
{
// состояние Car.
public string petName;
public int currSpeed;
// функциональность Car.
public void PrintState()
{
Console.WriteLine("{0} is going {1} MPH.",
petName, currSpeed);
}
public void SpeedUp(int delta)
{
currSpeed += delta;
}
}
№19 слайд
![Инкапсуляция Encapsulation](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img18.jpg)
Содержание слайда: Инкапсуляция (Encapsulation)
Максимальное закрытие доступа к состоянию объектов.
Состояние объекта можно менять только используя свойства и методы (не используя переменные).
Свойства и методы открытые внешним пользователям класса - интерфейс (interface).
Это позволяет
Избежать неправильного использования объектов (защита от дурака)
Изменять и развивать класс не мешая его использовать
№23 слайд
![Тип данных Язык C является](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img22.jpg)
Содержание слайда: Тип данных
Язык C# является строго типизированным языком – все данные (константы и переменные) программы имеют явно или неявно заданный тип.
Тип данных определяет:
количество используемой памяти (в байтах);
набор операции, в которых может участвовать данные такого типа;
способы явного и неявного преобразования в другие типы.
№24 слайд
![Основные сведения о типах Все](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img23.jpg)
Содержание слайда: Основные сведения о типах
Все элементы программы имеют тип (переменные, константы, выражения, методы, параметры методов, и т.п.)
Для всех переменных требуется объявлять тип.
Результат вычисления выражения имеет определенный тип.
Переменные и выражения должны иметь один и тот же тип при присвоении.
Если типы разные, выполняется их преобразование:
неявное (без прямого указания программиста)
явное (в результате заданного преобразования, кастинг)
№28 слайд
![Стек stack Стек это линейный](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img27.jpg)
Содержание слайда: Стек (stack)
Стек – это линейный участок памяти (массив), который действует как структура данных типа «Последним пришел – первым ушел» (last-in, first-out – LIFO).
Данные могут добавляться только к вершине стека и удаляться из вершены.
Добавление и удаление данных из произвольного места стека невозможно.
Операции по добавлению и удаление элементов из стека выполняются очень быстро.
Размеры стека, как правило, ограничены, и время хранения данных зависит от времени жизни переменной.
Для всех локальных переменных методов и передаваемых методам параметров память выделяется в вершине стека.
После того, как методы заканчивают работу вся выделенная память в стеке для их переменных автоматически освобождается.
№29 слайд
![Куча heap Куча heap это](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img28.jpg)
Содержание слайда: Куча (heap)
Куча (heap) – это область оперативной памяти, в разных частях которой по запросу программы, операционная система может выделять участки требуемого размера для хранения объектов классов.
Память в куче выделяется с помощью операции new.
В отличие от стека, участки памяти в "куче" могут выделяться и освобождаться в любом порядке.
Программа может хранить элементы данных в "куче", но она не может явно удалять их из нее.
Вместо этого компонент среды CLR, называемый Garbage Collector (GC), автоматически удаляет не используемые участки "кучи", когда он определит, что код программы уже не имеет доступа к ним (не хранит их адреса).
Автоматическая сборка мусора освобождает программиста от необходимости освобождать не используемую память вручную, что часто приводит к ошибкам работы программы.
№35 слайд
![Класс Object Все классы при](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img34.jpg)
Содержание слайда: Класс Object
Все классы при создании наследует все свойства и методы родительского класса Object.
Все встроенные типы нужным образом переопределяют методы родителя и добавляют собственные поля, свойства и методы.
Типы, создаваемые пользователем, также являются потомками класса Object,
Для них необходимо переопределить методы родителя, если предполагается использование этих методов;
реализация родителя, предоставляемая по умолчанию, не обеспечивает нужного эффекта.
№36 слайд
![Методы класса System.Object](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img35.jpg)
Содержание слайда: Методы класса System.Object
Equals(object)
виртуальный метод,
возвращает true если значения объектов совпадают (по умолчанию, если два объекта расположены в одном месте памяти).
GetHashCode()
виртуальный метод,
возвращает целое число (хэш-код), однозначно идентифицирующее экземпляр класса.
GetType()
возвращает объект типа Type, описывающий тип объекта.
ToString()
виртуальный метод,
возвращает символьное представление значения переменной
по умолчанию возвращает строку, представляющую полное имя типа объекта.
№41 слайд
![Тип данных decimal Занимает](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img40.jpg)
Содержание слайда: Тип данных decimal
Занимает 128-бит памяти.
Имеет большую точность и меньший диапазон значений чем типы с плавающей точкой (floating-point);
Диапазон ±1.0 × 10−28 ÷ ±7.9 × 1028
Точность 28 значащих цифр
Больше подходит для финансовых и денежных вычислений;
Чтобы константа обрабатывалась как decimal нужно добавить суффикс m или M:
decimal myMoney = 300.5m;
№42 слайд
![Не определенный тип - var Для](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img41.jpg)
Содержание слайда: Не определенный тип - var
Для переменной можно задать неопределенный тип (var) и присвоит некоторое значение.
В этом случае компилятор автоматически определит тип присваиваемого значения и назначит его переменной.
Например, объявление переменной:
var name = "Петров А.В.";
аналогично следующему объявлению:
string name = "Петров А.В.";
В этом случае обязательно нужно инициализировать переменную при ее объявлении.
№44 слайд
![Nullable типы данных Nullable](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img43.jpg)
Содержание слайда: Nullable типы данных
Nullable типы данных это такие значащие типы данных, которые кроме обычных значений могут хранить и значение null.
Например, nullable System.Boolean может хранить значения из набора {true, false, null}.
Очень удобны при работе с базами данных, которые кроме значений колонок могут указывать на отсутствие значения.
Для описания nullable типа переменной нужно добавит символ вопроса (?) в конец названия типа.
Это можно делать только для значащих типов.
№45 слайд
![Примеры nullable типов данных](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img44.jpg)
Содержание слайда: Примеры nullable типов данных
static void LocalNullableVariables()
{
// Описываем некоторые локальные значащие nullable типы.
int? nullableInt = 10;
double? nullableDouble = 3.14;
bool? nullableBool = null;
char? nullableChar = 'a';
int?[] arrayOfNullableInts = new int?[10];
// Error! String является ссылочным типом!
// string? s = "oops";
}
№46 слайд
![Свойства Nullable типов](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img45.jpg)
Содержание слайда: Свойства Nullable типов
Свойство bool HasValue – есть ли значение у переменной.
<тип> Value – значение переменной (если переменная используется в не допустимой операции, то формируется исключение System.InvalidOperationException )
Пример 1:
int? n = null;
int m = 5 + n.Value; //формируется исключение
Пример 2:
int? n = null;
// можно выполнить явное преобразование
int m = 5 + (int)n; //формируется исключение
Пример 3:
int? n = null;
int? m = 5 + n; // m = null
№47 слайд
![Использование nullable типов](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img46.jpg)
Содержание слайда: Использование nullable типов данных
static void Main(string[] args)
{
Console.WriteLine("***** Работа с Nullable Data *****\n");
DatabaseReader dr = new DatabaseReader();
// Получаем int из “базы данных”.
int? i = dr.GetIntFromDatabase();
if (i.HasValue) // проверка на наличие значения переменной
Console.WriteLine("Value of 'i' is: {0}", i.Value);
else
Console.WriteLine("Value of 'i' is undefined.");
// Получаем bool из “базы данных”.
bool? b = dr.GetBoolFromDatabase();
if (b != null)
Console.WriteLine("Значение 'b' равно: {0}", b.Value);
else
Console.WriteLine(" Значение 'b' не определено.");
Console.ReadLine();
}
№50 слайд
![Объявление переменных Прежде,](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img49.jpg)
Содержание слайда: Объявление переменных
Прежде, чем переменная может быть использована, она должна быть объявлена.
Объявление переменных можно делать в любом месте программы.
При объявлении переменных задается:
имя (идентификаторы)
Должно начинаться с буквы или подчерка (_).
Буква может быть из любого алфавита (unicode)
Количество символов не ограничено.
тип (встроенный или пользовательский)
могут быть заданы модификаторы
режим доступа,
возможность изменения,
сохранность значений.
№52 слайд
![Время жизни переменных](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img51.jpg)
Содержание слайда: Время жизни переменных
Переменные появляются (рождаются)
статические переменные создаются при запуске программы (описатель static).
не статические
переменные методов появляются в результате их объявления.
переменные классов (поля) появляются в результате создания объекта класса.
Переменные удаляются (умирают)
не статические
Переменные методов после закрытия блока в котором они объявлены (}).
Переменные класса после уничтожения объекта
статические уничтожаются после завершения программы.
№53 слайд
![Области видимости переменных](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img52.jpg)
Содержание слайда: Области видимости переменных
Область видимости переменной (variable scope) это участок программы, в котором переменную можно использовать.
В общем случае областью видимости локальной переменной является участок программы, от строки, в которой она объявляется, до первой фигурной скобки, завершающей блок или метод, в котором переменная объявлена.
Областью видимости локальных переменных, которые объявляются в операторах цикла (например, for или while), является содержание (тело) данного цикла.
№54 слайд
![Пример областей видимости](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img53.jpg)
Содержание слайда: Пример областей видимости переменных
public void ScopeTest() {
int n = 0;
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
} // i выходит из области видимости и удаляется
// можно объявить другу переменную с именем i
{ // начало блока
var i = ”другой блок”; // строка
Console.WriteLine(i);
} // i опять выходит из области видимости
} // переменная n тоже выходит из области видимости
№56 слайд
![Задание типа констант Тип](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img55.jpg)
Содержание слайда: Задание типа констант
Тип целой константы определяется ее значением (количеством цифр).
Константы с дробной частью имеют тип double.
Для изменения типа констант используются приставки:
F - float – например: 0.23F
D - double – например: 2.7D
M - decimal – например: 12.34M
№59 слайд
![Строковые константы Под](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img58.jpg)
Содержание слайда: Строковые константы
Под строковыми константами понимается последовательность символов заключенных в двойные кавычки.
Например: “Петров С.А.”
В C# существуют два вида строковых констант:
обычные константы, которые представляют строку символов, заключенную в двойные кавычки – "ssss";
@-константы, заданные обычной константой c предшествующим знаком @.
№60 слайд
![Строковые константы В обычных](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img59.jpg)
Содержание слайда: Строковые константы
В обычных константах некоторые символы интерпретируются особым образом.
Это требуется, для задания в строке специальных управляющих символов, в виде escape-последовательностей.
Например:
\n - символ перехода на новую строку;
\t - символ табуляции (отступ на заданное количество символов);
\\ - символ обратной косой черты;
\" - символ кавычки, вставляемый в строку, но не сигнализирующий о ее окончании.
№61 слайд
![-константы Часто при задании](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img60.jpg)
Содержание слайда: @-константы
Часто при задании констант, определяющих путь к файлу, приходится каждый раз удваивать символ обратной косой черты: “C:\\test.txt”, что не совсем удобно.
В этом случае и используются @-константы, в которых все символы понимаются в полном соответствии с их изображением.
Например, две следующие строки будут аналогичными:
s1 = "c:\\c#book\\ch5\\chapter5.doc";
s2 = @"c:\c#book\ch5\chapter5.doc";
№63 слайд
![Операции Переменные и](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img62.jpg)
Содержание слайда: Операции
Переменные и константы могут участвовать (объединяться) с помощью операций.
Операция – это термин или символ, получающий на вход одно или несколько операндов (переменных или констант) или выражений (переменных или констант, связанных между собой знаками операций), и возвращающий значение некоторого типа.
Например: a + b или ++a * pi.
№64 слайд
![Виды операций Операции,](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img63.jpg)
Содержание слайда: Виды операций
Операции, получающие на вход один операнд, например операция приращения (++) или new, называются унарными операциями.
Операции, получающие на вход два операнда, например, арифметические операции (+, –, *, /) называются бинарными операциями.
Одна операция – условная (?:), получает на вход три операнда и является единственной тринарной операцией в C#.
№71 слайд
![Пояснение приоритета операций](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img70.jpg)
Содержание слайда: Пояснение приоритета операций
Вычисление выражений начинается с выполнения операций высшего приоритета.
Например: первым делом вычисляются выражения в круглых скобках – (expr), определяются значения полей объекта – x.y, вычисляются функции – f(x), переменные с индексами – a[i].
Можно заключать выражения в скобки для принудительного вычисления некоторых частей выражения раньше других.
№72 слайд
![Пример Выражение в обычном](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img71.jpg)
Содержание слайда: Пример
Выражение “2 + 3 * 2” в обычном случае будет иметь значение 8, поскольку операции умножения выполняются раньше операций сложения.
Результатом вычисления выражения “(2 + 3) * 2” будет число 10, поскольку компилятор C# получит данные о том, что операцию сложения (+) нужно вычислить до выполнения операции умножения (*).
№73 слайд
![Ассоциативность операций Если](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img72.jpg)
Содержание слайда: Ассоциативность операций
Если есть несколько операций с одинаковым приоритетом, то они вычисляются в соответствии с их ассоциативностью.
Операции с левой ассоциативностью вычисляются слева направо.
Например, x * y / z вычисляется как (x * y) / z.
Операции с правой ассоциативностью вычисляются справа налево.
Операции присваивания и третичная операция (?:) имеют правую ассоциативность.
Операции с левой ассоциативностью вычисляются слева направо.
Все другие двоичные операции имеют левую ассоциативность.
№75 слайд
![Тип результата операции Тип](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img74.jpg)
Содержание слайда: Тип результата операции
Тип результата операции зависит от типов участвующих в операции операндов.
Типом арифметической операции является наиболее сложный тип операнда. Значение другого операнда преобразуется к более сложному типу.
Наименее сложный тип byte, наиболее сложный decimal.
int a=5;
double d=2.6;
a * d // тип результата double
a / 2 // тип результата int
№76 слайд
![Тип результата операции Типом](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img75.jpg)
Содержание слайда: Тип результата операции (2)
Типом результата операции присваивания является тип левого операнда (переменной, которой присваивается значение).
int n;
n = a * d // тип результата int
Тип операций отношения является bool.
a > 5 // тип результата bool
Тип логических операций является bool.
bool b = true, с = false;
b && с // тип результата bool
№79 слайд
![Неявное преобразование типов](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img78.jpg)
Содержание слайда: Неявное преобразование типов
(implicit conversion)
К неявным относятся преобразования, результат выполнения которых всегда успешен и не приводит к потере точности данных.
Неявные преобразования выполняются автоматически.
Если на диаграмме есть переход из типа A в тип B то, выполняется неявное преобразование типов
Если нет неявного преобразования то выдается исключение
“Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?)”
№80 слайд
![Явное преобразование типов](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img79.jpg)
Содержание слайда: Явное преобразование типов
(explicit conversion)
К явным относятся разрешенные преобразования, выполнение которых не гарантируется или может привести к потере точности.
Два способа явного преобразования:
Использование операции приведения типов (cast)
int i = (int) f; // с обрезанием дробной части
Использование стандартного класса Convert
int i = Convert.ToInt32(f); // с округлением до ближайшего целого
№85 слайд
![Применение диаграммы Если на](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img84.jpg)
Содержание слайда: Применение диаграммы
Если на диаграмме задан путь (стрелками) от типа А к типу В, то это означает, что возможно неявно преобразовать из типа А в тип В.
Например из short в float
Все остальные преобразования между подтипами арифметического типа существуют, но являются явными.
Например из float в int
№87 слайд
![Явное преобразование типа Для](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img86.jpg)
Содержание слайда: Явное преобразование типа
Для указания явного преобразования типов используется операция приведения к типу (кастинг), которая имеет высший приоритет и следующий вид:
(type) <выражение>
Она задает явное преобразование типа, определенного выражением, к типу, указанному в скобках. Например: int i = (int) 2.99; // i = 2;
Если описаны пользовательские типы T и P, и для типа T описано явное преобразование в тип P, то возможна следующая запись:
T y;
P x = new P();
y = (T) x;
Следует отметить, что существуют явные преобразования внутри арифметического типа, но не существует, например, явного преобразования арифметического типа в тип bool.
Например:
double a = 5.0;
int p = (int)a;
//bool b = (bool)a; // ошибка!!!
В данном примере явное преобразование из типа double в тип int выполняется, а преобразование double в тип bool приводит к ошибке, потому и закомментировано.
№88 слайд
![Преобразование типов с](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img87.jpg)
Содержание слайда: Преобразование типов с помощью класса Convert
Можно задать явным образом требуемое преобразование, используя специальные методы преобразования, определенные в классе System.Convert, которые обеспечивают преобразование значения одного типа к значению другого типа (в том числе значения строкового типа к значениям встроенных типов).
Класс Convert содержит 15 статических методов вида To<Type> (ToBoolean(),...ToUInt64());
string s1 = Console.ReadLine();
int ux = Convert.ToUInt32(s1);
Все методы To<Type> класса Convert перегружены и каждый из них имеет, как правило, более десятка реализаций с аргументами разного типа.
Преобразование вещественного к целому типу выполняется с округлением
float b = 1.5;
a = Convert.ToInt32(b); // a=2
Есть преобразование логического к целому типу
bool b = true;
a = Convert.ToInt32(b); // a=1
№90 слайд
![Преобразование типов из строк](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img89.jpg)
Содержание слайда: Преобразование типов из строк с помощью метода Parse()
У всех типов есть статический метод Parse(), который выполняет преобразование строки текста в соответствующий формат.
Для проверки возможности преобразования использовать метод
bool TryParse(x), он возвращает true, если можно преобразовать иначе false
static void ParseFromStrings()
{
Console.WriteLine("=> Data type parsing:");
bool b = bool.Parse("True");
Console.WriteLine("Value of b: {0}", b);
double d = double.Parse("99.884");
Console.WriteLine("Value of d: {0}", d);
int i = int.Parse("8");
Console.WriteLine("Value of i: {0}", i);
char c = Char.Parse("w");
Console.WriteLine("Value of c: {0}", c);
Console.WriteLine();
}
№91 слайд
![Операция присваивания В C](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img90.jpg)
Содержание слайда: Операция присваивания
В C# присваивание является операцией, которая может использоваться в выражениях. В выражении, называемом множественным присваиванием, списку переменных присваивается одно и то же значение.
Например: x = y = z = w =(u+v+w)/(u-v-w);
При присвоении переменных разного типа выполняется преобразование типа правого операнда к типу левого операнда.
Т.е. компилятор пытается выполнить преобразование типа переменной стоящей справа в тип переменной, стоящей слева.
№92 слайд
![Присваивание переменной](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img91.jpg)
Содержание слайда: Присваивание переменной стоящей слева (тип T) значения переменной или результата вычисления выражения (типа T1) возможно только в следующих случаях:
типы T и T1 совпадают;
тип T является базовым (родительским) типом для типа T1 (в соответствии с наследованием типов);
в определении типа T1 описано явное или неявное преобразование в тип T.
Так как все классы в языке C# – встроенные и определенные пользователем – по определению являются потомками класса Object, то отсюда и следует, что переменным класса Object можно присваивать выражения любого типа.
№93 слайд
![Специальные варианты](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img92.jpg)
Содержание слайда: Специальные варианты присваивания
В языке C# для двух частных случаев присваивания предложен специальный синтаксис:
для присваиваний вида x=x+1; (переменная увеличивается или уменьшается на единицу), используются специальные префиксные и постфиксные операции "++" и "--".
для присваивания вида:
X = X <operator> (выражение); например: x = x * 2;
Для таких присваиваний используется краткая форма записи: X <operator>= expression; например: x *= 2;
№94 слайд
![Арифметические операции В](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img93.jpg)
Содержание слайда: Арифметические операции
В языке C# имеются обычные для всех языков арифметические операции – "+, -, *, /, %". Все они перегружены.
Операции "+" и "-" могут быть унарными и бинарными.
Операция деления "/" над целыми типами осуществляет деление нацело, для типов с плавающей и фиксированной точкой – обычное деление.
Операция "%" определена над всеми арифметическими типами и возвращает остаток от деления нацело.
int a = 10;
int e = 4;
a %= e; // или a = a % e; - результат 2
Результат выполнения выражения всегда имеет тип.
Тип результата зависит от типов операндов выражения: самый сложный тип задает тип результата выражения.
№95 слайд
![Пример вычислений с](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img94.jpg)
Содержание слайда: Пример вычислений с различными арифметическими типами
public void Sample()
{
int n = 7, m =3, p, q;
p= n/m; q= p*m + n%m;
if (q == n) Console.WriteLine("q = n");
else Console.WriteLine("q!=n");
double x=7.2 , y =3, u,v,w;
u = x/y; // 2.4
v= u*y; // 7.1999999999999993
w= x % y; // 1.2
if (v == x) // false
Console.WriteLine("v = x");
else
Console.WriteLine("v!=x");
decimal d1=7M, d2 =3, d3,d4,d5;
d3 = d1/d2; // 2.33333333333333333333333
d4= d3*d2; // 6.99999999999999999999999
d5= d1%d2; // 1.0
if (d4 == d1) // false
Console.WriteLine("d4 = d1");
else
Console.WriteLine("d4!=d1");
}
№96 слайд
![Операции инкрементации и](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img95.jpg)
Содержание слайда: Операции инкрементации и декрементации
Операции инкрементации (увеличение на единицу) и декрементации (уменьшение на единицу) могут быть
префиксными (стоять перед переменной) и
постфиксными (стоять после переменной).
К высшему приоритету относятся постфиксные операции x++ и x--. Префиксные операции имеют на единицу меньший приоритет.
Результатом выполнения, как префиксных, так и постфиксных операций, является увеличение (++) или уменьшение (--) значения переменной на единицу.
Для префиксных (++x, --x) операций результатом их выполнения является измененное значение x, постфиксные операции возвращают в качестве результата значение x до изменения. Например:
int n1, n2, n = 5;
n1 = n++; // n1 = 5; n = 6;
n2 = ++n; // n2 = 7; n = 7;
№97 слайд
![Операции отношения Операции](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img96.jpg)
Содержание слайда: Операции отношения
Операции отношения используются для сравнения значений переменных и констант.
Всего имеется 6 операций отношения: ==, !=, <, >, <=, >=.
Следует обратить внимание на запись операции
"равно" – ‘==’ (два знака присвоить =) и
"не равно" – ‘!=’.
При сравнении ссылочных переменных сравниваются не сами объекты, а ссылки на объекты, если операция сравнения не переопределена.
№98 слайд
![Логические операции В языке C](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img97.jpg)
Содержание слайда: Логические операции
В языке C# логические операции делятся на две категории:
над логическими значениями операндов,
над битами операндов.
По этой причине в C# существуют две унарные операции отрицания
логическое отрицание, заданное операцией "!", определена над операндом типа bool,
побитовое отрицание, заданное операцией "~”, определена над операндом целочисленного типа, начиная с типа int и выше (int, uint, long, ulong).
Результатом операции "~" является операнд, в котором каждый бит заменен его дополнением (0 на 1 и 1 на 0).
№99 слайд
![Пример логических операций](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img98.jpg)
Содержание слайда: Пример логических операций
Рассмотрим пример:
//операции отрицания ~,!
bool b1,b2;
b1 = 2*2==4; b2 =!b1; // b1 = true; b2 = false;
//b2= ~b1; // ошибка !
uint j1 =7, j2;
j2= ~j1; // j2 = 4294967288
//j2 = !j1; // ошибка !
int j4 = 7, j5;
j5 = ~j4; // j5 = -8
В этом фрагменте закомментированы операторы, приводящие к ошибкам.
В первом случае была сделана попытка применения операции побитового отрицания к выражению типа bool, во втором – логическое отрицание применялось к целочисленным данным.
Обратите внимание на разную интерпретацию побитового отрицания для беззнаковых и знаковых целочисленных типов. Для переменных j5 и j2 строка битов, задающая значение – одна и та же, но интерпретируется по-разному.
№100 слайд
![Бинарные логические операции](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img99.jpg)
Содержание слайда: Бинарные логические операции
Операции && и || определены только над данными типа bool:
&& – условное И (результат true, если оба операнда имеют значение true);
|| – условное ИЛИ (результат true, если хотя бы один операнд имеет значение true);
Операции && и || называются условными (или краткими), поскольку, будет ли вычисляться второй операнд, зависит от уже вычисленного значения первого операнда.
в операции &&, если первый операнд равен значению false, то второй операнд не вычисляется и результат операции равен false.
в операции ||, если первый операнд равен значению true, то второй операнд не вычисляется и результат операции равен true.
Такое свойство логических операций позволяет вычислить логическое выражение, имеющее смысл, но в котором второй операнд не определен.
№101 слайд
![Пример логических операций](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img100.jpg)
Содержание слайда: Пример логических операций
Например, рассмотрим задачу поиска элемента массива. Заданный элемент в массиве может быть, а может и не быть.
//Условное And – &&
int[] ar= {1,2,3};
int search = 7, i = 0;
// search – заданное значение
while ((i < ar.Length) && (ar[i]!= search)) i++;
if(i < ar.Length)
Console.WriteLine("Значение найдено");
else
Console.WriteLine("Значение не найдено");
Второй операнд не определен в последней проверке, поскольку индекс элемента массива выходит за допустимые пределы (в C# индексация элементов начинается с нуля). Отметим, что "нормальная" конъюнкция требует вычисления обеих операндов, поэтому ее применение в данной программе приводило бы к формированию исключения в случае, когда образца нет в массиве.
№102 слайд
![Побитовые операции Три](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img101.jpg)
Содержание слайда: Побитовые операции
Три бинарные побитовые операции:
& – AND (если значения двух бит = 1, то и результирующий бит =1);
| – OR (если значения хотя бы одного бита = 1, то и результирующий бит =1);
^ – XOR (исключа́ющее ИЛИ) могут использоваться как с целыми типами выше int, так и с булевыми типами. В первом случае они используются как побитовые операции, во втором – как обычные логические операции.
a = 011001012
b = 001010012
тогда
a ^ b = 010011002
Иногда необходимо, чтобы оба операнда вычислялись в любом случае, тогда без этих операций не обойтись. Вот пример первого их использования:
//Логические побитовые операции And, Or, XOR (&,|,^)
int k2 = 7, k3 = 5, k4, k5, k6;
k4 = k2 & k3; k5 = k2 | k3; k6 = k2^k3;
№104 слайд
![Условная операция В C имеется](/documents_6/072a09ae2718b67a1a2fb04ad4386690/img103.jpg)
Содержание слайда: Условная операция
В C# имеется условный операция:
(условие) ? <выражение1>:<выражение1>;
Условием является выражение типа bool.
Если условие истинно, то выбирается значение <выражение1>, в противном случае результатом является значение <выражение2>.
Например:
int a = 7, b = 9, max;
max = (a>b) ? a:b; // max получит значение 9.
Скачать все slide презентации Объектно-ориентированное программирование. Введение в язык C одним архивом:
Похожие презентации
-
Кодирование основных типов алгоритмических структур на языках объектно — ориентированного и процедурного программирования
-
Объектно-ориентированное программирование на алгоритмическом языке С
-
Объектно-ориентированное программирование. Языки C и C
-
Исследование и анализ задачи. объектно-ориентированный язык программирования
-
Введение в объектноориентированное программирование и классы
-
Объектно-ориентированное программирование. Язык С
-
Введение в объектно-ориентированное программирование. Лекция 6
-
Разработка системы слежения за состоянием серверов средствами объектно-ориентированного языка программирования Python
-
Объектно-ориентированное программирование. Язык программирования Java
-
Программирование на языке С. Модуль 1. Введение в язык С