Прикладная информатика. (Лекция 1) презентация

Содержание

Разделы информатики Информатика – наука о способах получения, хранения, обработки, передачи, защиты и использования информации. Разделы информатики: Теоретическая информатика - занимается теорией формальных языков и автоматов, теориями вычислимости

Слайд 1Лекция 1: Прикладная информатика Введение
1


Слайд 2Разделы информатики
Информатика – наука о способах получения, хранения, обработки, передачи, защиты

и использования информации.

Разделы информатики:

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


2


Слайд 3Прикладная информатика
Определяет применение информатики в следящих отраслях:
IT-бизнес;
IT-менеджмент;
IT в образовании;
IT в

государственных программах;
IT в естественных науках;
Разработка и использование инструментальных средств.

3


Слайд 4Использование языка C# для решения задач прикладной информатики
4


Слайд 5Литература
http://msdn.microsoft.com/ru-ru/vstudio/default.aspx
Спецификация языка C#. Версия 4.0. – 567 с.
Герберт Шилдт С# 4.0:

полное руководство. : Пер. с англ. — М. : ООО "И.Д. Вильямс", 2011. — 1056 с.
Трей Неш C# 2010: ускоренный курс для профессионалов. – М.:ООО "И.Д. Вильямс". 2010. – 592 с.
ЭндрюТроелсен Язык программирования С# 2010 и платформа .NET 4.0, 5-е изд. : Пер. с англ. — М. : ООО "И.Д. Вильяме", 2011. – 1392 с.
Фаронов В.В. Программирование на языке C#. – СПб.: Питер, 2007. – 240с.
Карли Уотсон, Кристиан Нейгел, Якоб Хаммер и др. Visual C# 2008: базовый курс. Visual Studio® 2008

5


Слайд 6Принципы объектно-ориентированного программирования Массивы
6


Слайд 7Принципы объектно-ориентированного программирования
Классы и объекты
Использование инкапсуляции
C# и объектно-ориентированное программирование
Разработка объектно-ориентированных систем
7


Слайд 8Классы и объекты - Обзор
Что такое класс?
Что такое объект?
Сравнение классов со

структурами

8


Слайд 9Что такое класс?
С точки зрения философа…
Искусственное понятие, используемое людьми для классификации


Классификация основывается на общности свойств или общности в поведении
Согласованность в описании и именовании используемых классов
Для создания словаря; в общении; когда думаем.
С точки зрения ООП-программиста…
Именованная синтаксическая конструкция, описывающая общие свойства и общее поведение
Структура данных, содержащая как данные, так и функции

Автомобиль?

9


Слайд 10Синтаксис класса
Синтаксис описания класса:
[атрибуты][спецификаторы]class имя[:список_родителей]
{тело_класса}
10


Слайд 11Состав класса
В теле класса могут быть объявлены:
константы;
поля;
конструкторы и деструкторы;


методы;
события;
делегаты;
классы (структуры, интерфейсы, перечисления).

Класс можно описывать непосредственно внутри пространства имен или внутри другого класса.

11


Слайд 12Определение простых классов
Данные и методы вместе внутри класса
Методы public, данные private
class

BankAccount
{ public void Withdraw(decimal amount)
{ ... }
public void Deposit(decimal amount)
{ ... }
private decimal balance;
private string name;
}

Public методы
описывают
доступное
поведение

Private поля
описывают
недоступное
состояние

12


Слайд 13
Что такое объект?
Объект – это экземпляр класса
Характеристики объекта:
Индивидуальность: Объекты должны отличаться

друг от друга
Поведение: объекты могут выполнять задачи
Состояние: Объекты хранят информацию

13


Слайд 14Создание новых экземпляров класса
При объявление переменной класса объект не создается
Для создания

объекта используйте оператор new

class Program
{
static void Main( )
{
Time now;
now.hour = 11;
BankAccount yours = new BankAccount( );
yours.Deposit(999999M);
}
}

hour
minute

now


yours

...
...

новый
BankAccount
объект

14

struct Time class BankAccount
{ {
public int hour; ...
public int minute; ...
} }


Слайд 15Использование инкапсуляции
Объединение данных и методов
Контроль видимости доступа
Зачем нужна инкапсуляция?
Объектные данные
Использование статических

данных
Использование статических методов

15


Слайд 16
Объединение данных и методов
Объединяйте данные и методы в одной капсуле
Граница капсулы

определяет внешнее и внутреннее
Синтаксис описания элемента данных:


Withdraw( )

Deposit( )

balance


Withdraw( )

Deposit( )

balance

BankAccount

BankAccount

[атрибуты] [спецификаторы] [const] тип имя [ = начальное_значение ]

16


Слайд 17
Контроль видимости доступа
Методы определяются как public и доступны извне
Данные определяются как

private и доступны только изнутри





Withdraw( )

Deposit( )

balance


Withdraw( )

Deposit( )

balance

BankAccount

BankAccount

17



Слайд 18
Зачем нужна инкапсуляция?
Можно контролировать
Объект используется
только через
public-методы
Можно изменять
На использование
объекта

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


Withdraw( )

Deposit( )

dollars 12


Withdraw( )

Deposit( )

balance 12.56

cents 56



18



Слайд 19
Объектные данные
Объектные данные содержат индивидуальную информацию об объекте
Например, каждый банковский счет

содержит свой баланс.Если два банковских счета имеют одинаковый баланс, то это всего лишь совпадение


Withdraw( )

Deposit( )

balance 12.56

owner "Bert"


Withdraw( )

Deposit( )

balance 12.56

owner "Fred"

19


Слайд 20
Использование статических данных
Статические данные содержат информацию обо всех объектах класса
Например, предположим,

что все счета имеет одинаковую процентную ставку. Хранение этого значения в каждом счете нецелесообразно. Почему?


Withdraw( )

Deposit( )

balance 12.56

interest 7%


Withdraw( )

Deposit( )

balance 99.12

interest 7%

20




Слайд 21
Использование статических методов
Статические методы имеют доступ только к статическим данным
Статический метод

применяется на уровне класса, а не объекта


InterestRate( )

interest 7%


Withdraw( )

Deposit( )

balance 99.12

owner "Fred"

Объект account

Класс account

Классы содержат статические
данные и статические методы

Объекты содержат объектные
данные и объектные методы


21




Слайд 22Hello, World
using System;
 
class Hello
{
public static int Main( )
{
Console.WriteLine("Hello,

World");
return 0;
}
}

22


Слайд 23Создание вложенных классов
Классы можно вкладывать в другие классы
class Program
{
static

void Main( )
{
Bank.Account yours = new Bank.Account( );
}
}
class Bank
{
... class Account { ... }
}

Полное имя вложенного
класса включает в себя
имя внешнего класса

23


Слайд 24Доступ к вложенным классам
Вложенные классы также могут объявляться как public или

private

class Bank
{
public class Account { ... }
private class AccountNumberGenerator { ... }
}
class Program
{
static void Main( )
{
Bank.Account accessible;
Bank.AccountNumberGenerator inaccessible;
}
}


24



Слайд 25Массивы
25


Слайд 26Обзор массивов
Форма записи массива в C#
Ранг массива
Создание экземпляров массивов
Инициализация массивов
Организация

доступа к элементам массива
Инициализация многомерных массивов
Проверка границ массива
Сравнение массивов и коллекций
Использование массивов




26

Обзор массивов


Слайд 27Что такое массив?
Массив –это последовательный набор элементов
Все элементы массива одного типа


Структуры могут хранить элементы разных типов
Доступ к конкретным элементам массива происходит через использование индекса







Integer index 0
(zero)

Integer index 4
(four)

27


Слайд 28Форма записи массива в C#
При объявлении массива необходимо определить следующее:
Тип

элементов массива
Ранг массива
Имя массива

Определяет ранг массива

Определяет имя массива




Определяет тип элементов массива

type[ ] name;

int [] arr;

28


Слайд 29Ранг массива
Вместо слова ранг иногда говорят размерность
Количество индексов, определяющих каждый из

элементов





Ранг 1: Одномерныйl
Один индекс для определения каждого элемента типа long









Ранг 2: Двумерный
Два индекса для определения каждого элемента типа int



long[ ] row;

int[,] grid;


29


Слайд 30 Создание экземпляров массивов
Объявление массива не приводит к созданию массива
Для создания массива

необходимо использовать слово new
Все элементы массива имеют значение по умолчанию, равное нулю



row

0

0

0

0


grid

0

0

0

0

0

0

Variable

Instance

long[ ] row = new long[4];

int[,] grid = new int[2,3];

30


Слайд 31Инициализация массивов
Можно явным образом инициализировать массивы
Можно использовать удобную краткую запись


row
0
1
2
3
Равносильно
long[

] row = new long[4] {0, 1, 2, 3};

long[ ] row = {0, 1, 2, 3};

31


Слайд 32Использование при инициализации массива операции new
Данная форма инициализации массива может оказаться

полезной в случае, когда уже существующей ссылке на массив присваивается ссылка на новый массив.

static void Main()
{
int[] myArray = { 0, 1, 2, 3, 4, 5};
int i;
for (i = 0; i < 6; i++)
Console.Write(" "+myArray[i]);
Console.WriteLine("\nНовый массив: ");
myArray = new int[] { 9, 1, 10, 8, 7, 3, 16, 5, 87, 4 };
for (i = 0; i < 10; i++)
Console.Write(" " + myArray[i]);
}

32


Слайд 33Инициализация многомерных массивов
Можно инициализировать и многомерные массивы
Необходимо определить все элементы


grid
5
4
3
2
1
0
Неявно

new int[2,3] массив

?


int[,] grid = {
{5, 4, 3},
{2, 1, 0}
};

int[,] grid = {
{5, 4, 3},
{2, 1 }
};

33


Слайд 34

Организация доступа к элементам массива
Определяйте индекс для каждой из размерностей
Индекс первого

элемента равен нулю

3

2

1







long[ ] row;
...
row[3];

int[,] grid;
...
grid[1,2];





34


Слайд 35

Проверка на отсутствие нарушения границ массива
При попытке доступа к элементу массива

производится проверка на отсутствие нарушения границ
При использовании несуществующего индекса выбрасывается исключение IndexOutOfRangeException
Используйте свойство Length и метод GetLength

row

grid

row.GetLength(0)==6

row.Length==6

grid.GetLength(0)==2

grid.GetLength(1)==4

grid.Length==2*4

35


Слайд 36Выход за границы массива
Выход за границы массива в C# расценивается

как ошибка, в ответ на которую генерируется исключение - IndexOutOfRangeException

static void Main()
{
int[] myArr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i;
try
{
for (i = 0; i <= 10; i++)
Console.WriteLine(myArr[i]);
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Exception: Выход за границу");
}
}

36


Слайд 37Сравнение массивов и коллекций
Если массив переполнится, его размер нельзя изменить
Класс коллекции,

например ArrayList, может менять размеры
Массивы используются для хранения однотипных данных
Коллекции могут хранить данные разных типов
Коллекция может быть открыта только для чтения
Массивы быстрее, но менее гибкие
Коллекции немного медленнее, но более гибкие

37


Слайд 38Создание массивов вычисляемого размера
Размер массива не обязан быть константой, определяемой на

этапе компиляции
Это может быть любое целочисленное выражение
Доступ к элементам будет таким же быстрым
Размер массива, определяемый целочисленной константой на этапе компиляции:


Размер массива, определяемый целочисленным выражением на этапе выполнения:

long[ ] row = new long[4];

string s = Console.ReadLine();
int size = int.Parse(s);
long[ ] row = new long[size];

38


Слайд 39Копирование переменных массива
При копировании переменной массива копируется только переменная массива
Не

создается копия экземпляра массива
Две переменные массива могут ссылаться на один и тот же экземпляр массива



copy


row

0

0

0

0

Переменная

Экземпляр

long[ ] row = new long[4];
long[ ] copy = row;
...
row[0]++;
long value = copy[0];
Console.WriteLine(value);

39


Слайд 40Свойства массива
Методы массива
Возвращение массивов из методов
Передача массивов в качестве параметров
Аргументы командной

строки
Использование массивов с циклом foreach

Использование массивов

40


Слайд 41

Свойства массивов


row.Rank
row.Length
grid.Rank
grid.Length

long[ ] row = new long[4];
int[,] grid = new int[2,3];
2
4
1
6
41


Слайд 42Класс Array - Методы обработки массивов
Часто используемые методы
Sort – сортирует

элементы одномерного массива
Clear – устанавливает для указанного диапазона элементов значения 0, false или null
Copy – создает копию массива
IndexOf – возвращает индекс впервые встречаемого значения

42


Слайд 43Передача и возвращение массивов в качестве параметров
class Example2 {
static

void Main( ) { int[ ] arg = {10, 9, 8, 7}; Method(arg); System.Console.WriteLine(arg[0]); }
//передача массивов static void Method(int[ ] parameter) { parameter[0]++; }
//возвращение массивов static int[ ] CreateArray(int size) { int[ ] created = new int[size];
return created; }
}

43


Слайд 44Аргументы командной строки
В процессе выполнения аргументы командной строки передаются в Main
Main

может принимать в качестве параметра массив из строк
Имя программы не является членом массива

class Example3 {
static void Main(string[ ] args) { for (int i = 0; i < args.Length; i++) {
System.Console.WriteLine(args[i]);
} } }

44


Слайд 45Использование массивов с циклом foreach
Цикл foreach позволяет скрыть подробности перебора элементов

массива
Синтаксис:

class Example {
static void Main(string[ ] args) { foreach (string arg in args)
{
System.Console.WriteLine(arg);
} } }

foreach (<тип> <имя> in <группа>)
{<тело цикла>}

45


Слайд 46Массивы массивов
Jagged arrays - изрезанные (ступенчатые)
одномерный массив, элементы которого являются

массивами, элементы которых, в свою очередь, снова могут быть массивами, и так может продолжаться до некоторого уровня вложенности.
Объявление ступенчатого массива:

тип [][] имя_массива;

46


Слайд 47Созданием массивов с инициализацией
Требуется вызывать конструктор для каждого массива на самом

нижнем уровне




или

int[][] jagger = new int[3][]
{
new int[] {5,7,9,11},
new int[] {2,8},
new int[] {6,12,4}
};

int[][] jagger1 = new int[3][]
{
new int[4],
new int[2],
new int[3]
};

47


Слайд 48Организация ввода-вывода
С#-программы выполняют операции ввода-вывода посредством потоков, которые построены на иерархии

классов.
Поток (stream) - это абстракция, которая генерирует и принимает данные.
Потоки:
байтовые,
символьные,
двоичные

48


Слайд 49Понятие о потоках
Класс Stream пространства имен System.IO -представляет байтовый поток и

является базовым для всех остальных потоковых классов.
Из класса Stream выведены байтовые классы потоков:
FileStream - байтовый поток, разработанный для файлового ввода-вывода,
BufferedStream - заключает в оболочку байтовый поток и добавляет буферизацию;
MemoryStream - байтовый поток, который использует память для хранения данных.

49


Слайд 50Байтовый поток
Конструктор, который открывает поток для чтения и/или записи:


Версия конструктора позволяет

ограничить доступ только чтением или только записью:



FileStream(string filename, FileMode mode)

FileStream(string filename, FileMode mode,
FileAccess how)

50


Слайд 51Байтовый поток. Пример
FileStream fileIn = new FileStream("text.txt",

FileMode.Open,
FileAccess.Read);
FileStream fileOut = new FileStream("newText.txt",
FileMode.Create,
FileAccess.Write);
int i;
while ((i = fileIn.ReadByte())!=-1)
{
fileOut.WriteByte((byte)i);
}
fileIn.Close();
fileOut.Close();

51


Слайд 52Символьный поток
StreamReader – содержит свойства и методы, обеспечивающие считывание символов из

байтового потока


StreamWriter – содержит свойства и методы, обеспечивающие запись символов в байтовый поток

StreamWriter fileOut=new StreamWriter(new FileStream("text.txt",
FileMode.Create, FileAccess.Write));

StreamReader fileIn = new StreamReader(new FileStream("text.txt",
FileMode.Open, FileAccess.Read));

StreamWriter(string name, bool appendFlag);

52


Слайд 53Символьный поток. Пример
StreamReader fileIn = new StreamReader("text.txt",

Encoding.GetEncoding(1251));
StreamWriter fileOut=new StreamWriter("newText.txt", false);
string line;
while ((line=fileIn.ReadLine())!=null) //пока поток не пуст
{
fileOut.WriteLine(line);
}
fileIn.Close();
fileOut.Close();

53


Слайд 54Двоичный поток
Формирование двоичного файла:





static void Main()
{
//открываем двоичный поток


BinaryWriter fOut=
new BinaryWriter(new FileStream("t.dat",
FileMode.Create));
//записываем данные в двоичный поток
for (int i=0; i<=100; i+=2)
{
fOut.Write(i);
}
fOut.Close(); //закрываем двоичный поток
}

54


Слайд 55Двоичный поток
Просмотр двоичного файла:

static void Main()
{
FileStream f=new FileStream("t.dat",FileMode.Open);

BinaryReader fIn=new BinaryReader(f);
long n=f.Length/4;
//определяем количество чисел в двоичном потоке
int a;
for (int i=0; i {
a=fIn.ReadInt32();
Console.Write(a+" ");
}
fIn.Close();
f.Close();
}

55


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика