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

Мы переходим на 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 КБ)

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

2 лайка

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

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

:slight_smile:

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

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

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

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

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

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

1 лайк

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

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

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

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

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

1 лайк

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 лайка

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