Евгений Колесников 1 月之前
父節點
當前提交
7143089177
共有 2 個文件被更改,包括 13 次插入12 次删除
  1. 11 10
      articles/lab8-oop2.md
  2. 2 2
      articles/t5_exception.md

+ 11 - 10
articles/lab8-oop2.md

@@ -1,16 +1,18 @@
 # ООП. Основы (CSV)
 
-На чемпионате **WorldSkills** часто возникает ситуация, когда нужно загрузить данные в базу программно, поэтому нужно уметь делать это быстро и просто. Подробнее мы остановимся на этом курсе "Проектирование и разработка ИС", но тренироваться использовать загрузку данных из CSV будем на лабораторных работах и в этом курсе.
+На чемпионате часто возникает ситуация, когда нужно загрузить данные в базу программно, поэтому нужно уметь делать это быстро и просто. Подробнее мы остановимся на этом в курсе "Проектирование и разработка ИС", но тренироваться использовать загрузку данных из CSV будем на лабораторных работах и в этом курсе.
 
-Файл с данными нужно положить в каталог `bin/debug` вашего проекта, либо указать полный путь к нему
+Файл с данными нужно положить в каталог `bin/Debug/net9.0` вашего проекта (но так как у нас используется `.gitignore`, то в этом случае для файла CSV нужно настроить исключение), либо туда, где расположен проект (а в этом случае в программе нужно указать относительный путь к файлу CSV: `../../../ваш файл.csv`)
 
 ```csv
 Акесов,18
 Андреев,19
 ```
 
+В коде ниже я не использую никаких библиотек для работы с CSV, вы можете использовать библиотеку CSVHelper, которую мы рассматривали на соответствующей лекции. 
+
 ```cs
-class Peoples{
+class Peoples {
     string Name;
     int Age;
 }
@@ -20,7 +22,7 @@ class Peoples{
 var Peoples = new List<People>();
 
 // считываем данные из файла (файл лежит рядышком с .exe)
-string[] data = File.ReadAllLines("ваш файл.csv");
+string[] data = File.ReadAllLines("./ваш файл.csv");
 
 // проходим в цикле по считанным строкам
 foreach (var line in data)
@@ -39,14 +41,13 @@ foreach (var line in data)
 
 1. Дату в CSV желательно хранить в формате `YYYY-MM-DD` (SQL-формат). Такой формат нормально преобразуется в класс **Data** (**DataTime**) штатным конвертером. Иначе придется разбирать строку даты на составные части (функцией _split_) и создавать дату из этих частей (`new Date(year, month, day)`)
 
-2. В качестве разделителя дробной части в числах с плавающей запятой (**float**, **double**) в CSV обычно используется точка. Но конвертер использует настройки локальной среды, а для России в качестве разделителя задана запятая, поэтому конвертер не может разобрать строку с точкой и выбрасывает исключение. В этом случае можно либо заменить точки на запятые в CSV файле (но в таком случае и разделителем полей должен быть другой знак), либо в конвертер передать дополнительный параметр, явно указывающий разделитель для дробной части:
+1. В качестве разделителя дробной части в числах с плавающей запятой (**float**, **double**) в CSV обычно используется точка. Но конвертер использует настройки локальной среды, а для России в качестве разделителя задана запятая, поэтому конвертер не может разобрать строку с точкой и выбрасывает исключение. В этом случае можно либо заменить точки на запятые в CSV файле (но в таком случае и разделителем полей должен быть другой знак), либо в конвертер передать дополнительный параметр, явно указывающий разделитель для дробной части:
 
-```cs
-Convert.ToDouble("113.12", new NumberFormatInfo(){NumberDecimalSeparator="."});
-```
+    ```cs
+    Convert.ToDouble("113.12", new NumberFormatInfo(){NumberDecimalSeparator="."});
+    ```
 
-# Задача
+## Задание
 
 * сформировать файл с данными в формате CSV для вашей предметной области
 * загрузить данные с программу из подготовленного файла
-

+ 2 - 2
articles/t5_exception.md

@@ -10,7 +10,7 @@
 
 Программист может сделать ошибку в употреблении самого языка программирования. Другими словами, выразиться так, как выражаться не положено. Например, начать имя переменной с цифры или забыть поставить двоеточие в заголовке сложной инструкции. Подобные ошибки называют **синтаксическими**, они нарушают синтаксис и пунктуацию языка. **IDE**, встретив ошибочное выражение, не знает как его интерпретировать. Поэтому  выводит соответствующее сообщение, указав на место возникновения ошибки.
 
-Но случаются ошибки, которые происходят во время выполнения программы, например, деление на 0 или попытка открыть несуществующий файл. В таких случаях программа "выбрасывает" исключение.
+Но случаются ошибки, которые происходят во время выполнения программы (_runtime error_), например, деление на `0` или попытка открыть несуществующий файл. В таких случаях программа "выбрасывает" исключение.
 
 На этот случай в языках программирования, в том числе **C#**, существует специальный оператор, позволяющий перехватывать возникающие исключения и обрабатывать их так, чтобы программа продолжала работать или корректно завершала свою работу.
 
@@ -293,7 +293,7 @@ catch (Exception ex)
 Console.Read();
 ```
 
-```sh
+```
 Исключение: Попытка деления на нуль.
 Метод: Void Main(System.String[])
 Трассировка стека:    в oap_labs.Program.Main(String[] args) в C:\Users\John\source\repos\oap_labs\oap_labs\Program.cs:строка 16