ФИИТ 1 курс. Языки программирования. C#


#1

Мы переходим на C#.

Помимо быстрого введения на лекциях и не практике можно пользоваться неплохими материалами отсюда: https://ulearn.me/Course/BasicProgramming

Вот ссылка на папку, где будут появляться все используемые презентации https://drive.google.com/drive/folders/1bcJ4Fdx2JBlq6A1RXPZiKjPQp7kfxZyG?usp=sharing

Шпаргалка по C# CSharpCrib.pdf (65,0 КБ)


#2

Первая версия шпаргалки по C# CSharpCrib.pdf (65,0 КБ)

Предложения приветствуются


#3

Подключил PABCRtl.dll Оттуда взял создание последовательности и метод вычисления среднего числа


#4

Да, это работает (жаль, что не успел первый, долго до дома добирался)

:slight_smile:


#6

Пошаговое руководство:

  1. Смотрим в обозреватель решений: Guide1

2)Ссылки -> Добавить ссылку Guide2

3)Идём в директорию паскаля и находим там PABCtrl.dll

4)Выбираем его, жмём “ОК”, он появится в поле ссылок

5)Теперь код приведённый на картинках будет работать


#7

Возник такой вопрос. Решая домашнее задание, создал функцию с out. В Main присвоил ей значение. Но выдает ошибку. Скрины в студию:


#8

Нужно присвоить переменной res какое-то значение до начала цикла внутри функции. Так она у тебя не определена. Если тебе так не подходит, то нужно использовать не out, а ref. Если состояние переменной до её использование в функции важно - используем ref, если нам безразлично - out, но тогда эта переменная должна быть определена по всем возможным веткам.


#9

С ref все работает, но когда описываю переменную res в функции получается такая ошибка:


#10

Не надо описывать, просто присвой значение Просто res = 1;. Дело не в её существовании, а в том, что у неё нет значения. Если у тебя стоит out, то подразумевается, что значение этой переменной сотрётся и использоваться не будет. Поэтому нужно задать определённое значение таким образом, чтобы при любом событии по завершении работы функции в переменной out было какое-то определённое значение


#11

Спасибо большое! Все понял


#12

Ну что же. Два студента справились с задачей. Но давайте теперь добьёмся, чтобы заставить работать такой код:

    var a = ArrGen(10, i => i * i);
    a.Println();
    a = ArrRandom(10);
    a.Println();

#13

Я не стал ждать 3 дня, как мы говорили, но как-то это не сильно помогло… Мне не очевидно почему мой Принт работает, а из паскаля нет: как может не быть того объекта, который я только что выводил. Не говоря уже про Рандом и использование принта из паскаля как метода расширения…


#14

Давайте, я буду подсказывать.

  1. Метод расширения Print определен в паскалевском пространстве имён PABCSystem_implementation______

  2. В модуле PABCSystem есть раздел инициализации. Он инициализирует датчик случайных чисел в частности. Чтобы его запустить, в программе на C# надо вызвать __InitModule();

После этого всё заработает


#15

Забавно то, что в ходе экспериментов Rider самостоятельно подтянул PABCSystem_implementation______, а студия упорно продолжала жаловаться на проблемы с кодировкой.


#16

А какие проблемы с кодировкой? У меня вроде не было


#17

С инициализацией модуля ещё понятно, что механизм такой. А вот с подключением PABCSystem_implementation______ совсем непонятно: почему Print не работает, он же тоже указан в PABCSystem? Почему нужен дополнительно PABCSystem_implementation______?

По какому принципу методы распределены по PABCSystem_implementation______ и PABCSystem ? Некоторые, как Print, повторяются…

Ну и зачем такое кол-во нижних подчёркиваний?

P.S. Движок форму почему-то считает себя умнее и убирает мои сделанные намеренно переходы на новую строку, если после них не стоит пустая строка…


#18

Никто не планировал подключать dll к C#. Теперь надо будет подумать, как это улучшить.

Print - это метод расширения, который указан в секции реализации PABCSystem - в секции интерфейса его нет. Те, которые указаны в разделе интерфейса - там даны только заголовки, а реализация - в разделе реализации.


#19

В процессе выполнения лабораторных выяснилось, что для нормального использования кортежей, которые мы с вами так любим, необходим .NET Framework 4.7+, в то время как в дисплейных классах последняя версия - 4.6.1 (говорят, в некоторых даже 4.5), как-то неприятно… Станислав Станиславович, у вас есть какая-то возможность повлиять на скорость обновления VS в дисп. классах?


#20

Нет. Я использую те возможности, которые есть у меня: рассказываю вам современный язык


#21

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