Результати пошуку за запитом: mvc4 5
Вивчай React безкоштовно
Автор: Редакція ITVDN
Друзі, привіт!
Сьогодні ділимося приємною новиною з фронтенд розробниками - з 28 листопада до 5 грудня на ITVDN проходить акція – ви можете пройти навчання за курсом “React Базовий” безкоштовно!
React - популярна JS-бібліотека для побудови користувацьких інтерфейсів. Її використовували для розробки такі відомі компанії, як Facebook, Instagram, Netflix, Dropbox, GitHub, Discord, Uber, – і це лише декілька прикладів з численних проєктів.
Про курс
Курс надає базові знання реакту, а щоб їх закріпити на практиці, ви виконаєте два проєкти, котрі можуть стати гарним доповненням до портфоліо. Матеріал наповнений найактуальнішими практиками використання інструментів React та супутніх бібліотек, таких як react-router, react-redux, axios. Також ви дізнаєтеся про основні концепції React, включаючи компоненти, стан, властивості, події та життєвий цикл компонентів.
Автор курсу – Кочев Денис, Web-розробник в Data Bridge.
Тривалість курсу – 7 годин 29 хвилин.
Формат: відео уроки з практичними завданнями, тести, сертифікат.
Структура курсу:
Знайомство з React.
Структура React застосунків. Специфіка роботи з JSX.
Основи роботи з React компонентами.
Управління станами функціональних компонентів. Введення в хуки.
Управління ефектами компонентів. Можливості методу useEffect.
Розробка застосунку для списку нотатків.
Роутинг та навігація в React.
Знайомство з бібліотекою Redux.
Робота з API, створення застосунку для визначення погоди.
Розробка модального вікна.
Чого ви навчитеся на даному курсі:
Розуміти призначення та філософію бібліотеки React.
Працювати з пакетом npm.
Будувати власні React-застосунки.
Користуватися перевагами бібліотеки у власній розробці.
Володіти синтаксисом JSX повною мірою.
Стилізувати компоненти як за допомогою inline-стилів, так і з використанням ізольованих CSS-файлів.
Працювати з чистими реакт-елементами без JSX.
Володіти актуальними технологіями у використанні станів та пропсів у функціональних компонентах.
Керувати компонентами за допомогою хуку useEffect.
Синхронізувати React-застосунки з localStorage.
Обробляти мережеві API запити методом пакету axios.
Налаштовувати маршрутизацію веб-додатку за допомогою бібліотеки react-router останньої версії.
Створювати власний застосунок для списку нотатків (task list).
Створювати власний застосунок для визначення погоди з використанням реального API.
Створювати модальні вікна, користуючись виключно інструментами React.
Розробляти компоненти, які можна використовувати у різних проєктах.
Підтримувати фронтенд-частину існуючих веб-додатків, написаних на React.
Попередні вимоги
Для проходження курсу потрібні базові знання HTML5, CSS3 та JavaScript. Він розрахований для веб-розробників початкового рівня та може бути корисним досвідченим девелоперам, які не мають досвіду роботи з бібліотекою React.
Терміни акції
Акція проходить з 28 листопада до 5 грудня 2025 року включно. Доступ до курсу відкривається на 10 днів.
Вивчай PostgreSQL безкоштовно
Автор: Редакція ITVDN
З 5 до 12 березня 2025 року на ITVDN проходить акція – ви можете пройти навчання за курсом “PostgreSQL” безкоштовно!
Що таке PostgreSQL?
PostgreSQL – це система управління реляційною базою даних з відкритим вихідним кодом, яка використовує та розширює мову запитів SQL для роботи з даними. Вирізняється чудовою масштабованістю, підтримкою нестандартних типів даних, легкою інтеграцією зі сторонніми інструментами та гарною підтримкою зі сторони спільноти, що позитивно впливає на екосистему PostgreSQL в цілому.
PostgreSQL має потужні механізми безпеки, включаючи підтримку SSL, сильне шифрування та детальний контроль доступу, а також архітектуру, яка дозволяє легко додавати нові функції без зміни основного коду.
Відповідно до опитування Stack Overflow Developer Survey 2024, PostgreSQL є найпопулярнішою СУБД – нею користується 49% професійних розробників з різних куточків планети (понад 52 тисячі респондентів).
Про курс “PostgreSQL”
Курс складається з 8 уроків, на яких ви опануєте основи побудови реляційних баз даних та SQL і познайомитеся з базовим використанням СУБД PostgreSQL. В кожному уроці є домашні завдання на реальній базі даних.
Перегляд відео уроків з подальшим виконанням д/з та тестуванням дозволить вам гарно розбиратися в основах PostgreSQL: взаємодіяти з базами даних, виконувати різноманітні маніпуляції даними тощо.
PostgreSQL найчастіше використовується серед розробників, які пишуть на Python, PHP, C#, Java, Ruby, JavaScript.
Автор курсу – Єрмольонок Яна, Unity C# Developer, 8 років досвіду розробки з використанням FrontEnd і .NET технологій, а також Unity.
Тривалість відео уроків курсу – 3 години 43 хвилини.
Програма курсу:
Основні поняття Бази Даних.
SQL (Частина 1).
SQL (Частина 2).
JOINs.
Організація памʼяті в БД, індексування, представлення.
Тригери.
Транзакції.
Додаткові можливості SQL та PostgreSQL.
Для кого цей курс
Курс підійде:
BackEnd розробникам-початківцям, які переходять до вивчення БД;
FrontEnd розробникам, які хочуть розширити свій стек технологій або планують перейти у FullStack розробку;
тестувальникам (Manual QA та Automation QA);
інженерам баз даних;
DevOps спеціалістам;
спеціалістам Data Science, Data Analyst, Data Engineer тощо.
Для комфортного проходження курсу у вас має бути:
впевнене володіння персональним комп'ютером;
розуміння того, що таке таблиці, рядки, стовпці, ключі (основні та зовнішні);
базові знання SQL-команд (буде дуже корисним).
Чого ви навчитеся на даному курсі:
Проєктувати БД, виконувати їхню нормалізацію.
Працювати з реляційною СУБД PostgreSQL і складати прості запити.
Виконувати об’єднання таблиць та користуватися підзапитами.
Створювати представлення та оперувати функціями.
Керувати базами даних та таблицями за допомогою DDL.
Проводити транзакції.
Створювати процедури та функції.
Терміни акції
Акція проходить з 5 до 12 березня 2025 року включно. Доступ до курсу відкривається на 10 днів.
Вивчай MySQL безкоштовно
Автор: Редакція ITVDN
З 1 до 7 березня 2024 року на ITVDN проходить акція – ви можете пройти навчання за курсом “MySQL Базовий” безкоштовно! Курс українською мовою!
Доступ до курсу не надається громадянам росії та білорусі.
Що таке MySQL?
MySQL – це open-source система управління реляційними базами даних (РСУБД) від корпорації Oracle, яка широко використовується в різних типах застосунків. MySQL відома своєю продуктивністю, масштабованістю та простотою використання, що робить її популярним вибором під час розробки серверної сторони (BackEnd).
Відповідно до опитування Stack Overflow Developer Survey 2023, MySQL є другою за популярністю СУБД – нею користується 40.6% професійних розробників з різних куточків планети (понад 60 тисяч респондентів).
Про курс “MySQL Базовий”
Курс складається з 10 уроків, на яких ви вивчите основи реляційних БД, навчитеся основам проєктування БД та тому, як формувати до них запити. Ви будете розуміти основи CRUD запитів в базах даних MySQL і вмітимете створювати їх сутності, звертатися до них для зчитування інформації, що зберігається, змінювати таку інформацію та видаляти інформацію або сутності з бази даних. Також ви познайомитеся з процедурними розширеннями MySQL для створення складних запитів.
MySQL найчастіше використовується серед розробників, які пишуть на PHP, Java, Python, Ruby, JavaScript (Node.js) тощо.
Автор курсу – Ян Хаджийський, PHP Web Developer & Python Engineer з бекґраундом у QA та великим досвідом на фрилансі (235 з 240 замовлень на Fiverr виконані на 5 зірок). Поточний стек – Python, Django, Vue.js.
Тривалість відео уроків курсу – 5 годин 42 хвилини.
Програма курсу:
Введення в MySQL. Основні запити: Insert, Update, Select, Delete.
Типи даних для створення таблиць.
Використання Foreign Keys під час проєктування БД.
Побудова зв'язків через JOIN.
Створення індексів.
Підготовка запитів.
Створення процедур та функцій MySQL.
Умови IF-CASE та цикли в MySQL – Repeat, While.
Транзакції. Тригери.
MySQL підзапити.
Для кого цей курс
Курс розрахований на новачків, які бажають познайомитися з механізмами побудови і роботи реляційних баз даних загалом та насамперед з основами саме MySQL. Також він підійде тим розробникам чи аналітикам, які вже працювали з SQL, але хочуть вивчити основи діалекту MySQL.
Чого ви навчитеся на даному курсі:
Створювати свої MySQL бази даних.
Розуміти основи CRUD запитів в базі даних MySQL.
Розуміти особливості різних типів даних в MySQL.
Створювати PRIMARY та Foreign ключі у таблицях, розробляючи зв’язки між таблицями.
Використовувати базові вбудовані запити.
Використовуючи JOIN, об'єднувати запити до 3 та більше таблиць одночасно, щоб отримати один набір даних.
Створювати індекси та виконувати пошук за допомогою індексів.
Створювати процедури та функції, робити їх виклик та видаляти їх тощо.
Терміни акції
Акція проходить з 1 до 7 березня 2024 року включно. Доступ до курсу відкривається на 10 днів.
Вивчай веб-тестування безкоштовно
Автор: Редакція ITVDN
С 5 по 12 августа на ITVDN проходит акция — вы можете пройти обучение по курсу Web Testing бесплатно!
Что такое Web Testing?
Тестирование веб-приложений – это один из важнейших этапов разработки качественного программного продукта и один из главных навыков тестировщика (иначе QA от Quality Assurance).
О курсе “Web Testing”
Курс состоит из 8 видео уроков общей продолжительностью 6 часов 25 минут.
Курс Web Testing раскрывает особенности и нюансы работы QA специалиста с веб-приложениями. В видео уроках рассматривается архитектура веб-приложений, применение повседневных инструментов тестирования (Chrome Developer Tools, Fiddler и др.) и возможности автоматизации тестирования с Record&Play в Selenium IDE, доступные специалистам по мануальному тестированию.
Вы познакомитесь с технологиями и процессами Continuous Integration, и Continuous Delivery (непрерывная интеграция и непрерывная доставка), местом QA специалиста в этих процессах, разберете особенности тестирования API, и особенности тестирования производительности веб-приложений. Также, вы узнаете возможности измерения процесса тестирования и особенности тестовых метрик.
Автор видео курса — Александр Бреславец, Senior Software Test Automation Engineer.
Программа курса:
Основы Web Testing
Codeless Automation
Testing Tools
CI/CD/CD
Тестирование API
Архитектура Web Application
Основы Performance Testing
Estimation and Test Metrics
Для кого этот курс
Курс рассчитан на тех, кто знает основы тестирования и командной разработки типа Scrum. Для полноценного понимания некоторых уроков желательно также пройти курсы SQL Essentials, Git, Jenkins.
Курс входит в комплексную программу обучения по специальности Quality Assurance.
Чему вы научитесь на этом курсе:
Выполнять тестирование Web приложений с использованием всех необходимых инструментов.
Понимать особенности архитектуры Web приложений, различия монолитной и микросервисной архитектуры.
Понимать основы API Web приложений, особенности REST & SOAP.
Работать с такими инструментами тестирования API, как Swagger, Postman, SoapUI.
Понимать, что такое Test Framework, Test Recording, какие существуют подходы к автоматизации (DDT, KDT, BDD) и что из этого можно использовать в мануальном тестировании.
Понимать, что такое CI/CD, Continuous testing.
Понимать и уметь применять тестирование производительности, использовать JMeter, Newman, Automation Framework.
Уметь оценивать задачи тестирования, особенности метрик тестирования для измерения процесса тестирования в разных плоскостях, понимать такие техники оценивания, как Decomposition, Bottom Up, Expert Opinion, By analogies, PERT, оценивание в Agile (T shirt, Bucket system, Large/Small, Planning pocker, цифры Фибоначчи).
Сроки акции
Акция проходит с 5 по 12 августа 2021 года включительно. Доступ к курсу открывается на 10 дней.
Нова IT спеціальність за літо
Автор: Редакція ITVDN
До лета остались считанные дни! Конечно, многие из нас привыкли проводить лето, наслаждаясь отдыхом и путешествуя. Но раз уж так вышло, что самолеты не летают и поезда не ходят, мы предлагаем вам сделать прорыв в своем развитии и освоить новую IT специальность.
Чтобы поддержать тех, кто хочет учиться, мы делаем большие скидки на обучение по всем специальностям. Но торопитесь – скидки тают.
21 - 24 мая - скидка 35%
25 и 26 мая - скидка 30%
27 и 28 мая - скидка 25%
По какой специальности можно пройти обучение на ITVDN?
Java Developer - 25 курсов на 6 мес.
Python Developer - 14 курсов на 5 мес.
C#/.NET Developer -50 курсов на 8 мес.
ASP.NET Core Developer - 13 курсов на 5 мес.
ASP.NET MVC Developer - 19 курсов на 4 мес.
Верстальщик сайтов - 19 курсов на 4 мес.
Frontend Developer - 37 курсов на 7 мес.
JavaScript Developer - 8 курсов на 3 мес.
Angular Developer - 8 курсов на 3 мес.
PHP Developer - 15 курсов на 4 мес.
Android Developer- 14 курсов на 3 мес.
Unity/Game Developer - 19 курсов на 4 мес.
Программы обучения ITVDN разработаны профессионалами и соответствуют требованиям IT компаний к начинающим разработчикам. А система обучения на ITVDN - теория, практика, общение, тестирование и сертификация – позволяет достичь отличных результатов в короткие сроки.
Как проходит обучение по специальности?
Вы смотрите видео уроки
Вы выполняете практические задания к каждому уроку.
Вы учитесь писать код в интерактивном тренажере.
Вы проходите тесты после каждого урока, чтобы проверить, как усвоен материал.
Если что-то осталось не понятым – смотрите видео уроки повторно или обращаетесь за помощью к тренеру.
Вы проходите курс за курсом, изучая все технологии, который должен знать специалист.
После изучения всех обязательных технологий Вы сдаете финальный экзамен по специальности и получаете диплом.
С чего начать?
Если Вы хотите стать программистом, но еще не определились с выбором специальности, смотрите записи вебинаров из серии «Как стать программистом?».
Самые востребованные специальности по итогам 2019 года – FrontEnd, .NET, Java, Python.
По завершению обучения Вы сможете сдать финальный экзамен и получить Диплом по выбранной специальности. Экзамен будет включать в себя задания и вопросы по всем курсам, которые являются обязательными к изучению.
Пусть Лето-2020 будет летом лучших перемен в Вашей жизни!
Купить подписку по акционной цене.
Легкий старт в ІТ. Знижка на навчання 30%
Автор: Редакція ITVDN
Дорогие друзья!
В связи с карантином у многих из нас появилось свободное время, которое мы вынуждены проводить дома. Лучшее, что мы можем делать сейчас – это обучение и саморазвитие. Карантин закончится и очень важно, чтобы мы вышли из него сильнее и лучше, чем были раньше.
Для всех, кого интересует программирование, мы создаем отличные условия для легкого старта в освоении новых знаний и новой специальности.
С 23 по 30 апреля 2020 года на ITVDN скидка на обучение 30%.
Чему можно научиться на ITVDN
В Каталоге ITVDN более 180 видео курсов по всем языкам программирования и информационным технологиям. И в каждом курсе первый урок в свободном доступе для знакомства с технологией и автором курса. Вы можете изучать все, что хотите в любой последовательности.
Пакет Стартовый – это доступ ко всем курсам и сервисам ITVDN сроком на 3 месяца. Его чаще всего выбирают новички, которые еще не определились со специальностью и хотят попробовать себя в нескольких направлениях, а также программисты, которые хотят изучить новые технологии по своей специальности.
Во время акции стоимость Пакета Стартовый – 35 USD (вместо 49,99 USD)
12 IT специальностей на ITVDN со скидкой 30%
Верстальщик сайтов - 28 USD - 19 курсов на 4 мес.
Frontend Developer - 49 USD - 37 курсов на 6 мес.
JavaScript Developer - 28 USD - 8 курсов на 3 мес.
Angular Developer - 28 USD - 8 курсов на 3 мес.
Python Developer - 35 USD - 13 курсов на 5 мес.
C#/.NET Developer - 56 USD - 50 курсов на 8 мес.
ASP.NET Core Developer - 35 USD - 13 курсов на 5 мес.
ASP.NET MVC Developer - 28 USD - 19 курсов на 4 мес.
Java Developer - 42 USD - 25 курсов на 6 мес.
Android Developer - 28 USD - 14 курсов на 3 мес.
PHP Developer - 28 USD - 15 курсов на 4 мес.
Unity/Game Developer - 28 USD - 19 курсов на 4 мес.
Программы обучения ITVDN разработаны профессионалами и соответствуют требованиям IT компаний к начинающим разработчикам. А система обучения на ITVDN - теория, практика, общение, тестирование и сертификация – позволяет достичь отличных результатов в короткие сроки.
Как проходит обучение по специальности?
Вы смотрите видео уроки
Вы выполняете практические задания к каждому уроку.
Вы учитесь писать код в интерактивном тренажере.
Вы проходите тесты после каждого урока, чтобы проверить, как усвоен материал.
Если что-то осталось не понятым – смотрите видео уроки повторно или обращаетесь за помощью к тренеру.
Вы проходите курс за курсом, изучая все технологии, который должен знать специалист.
После изучения всех обязательных технологий Вы сдаете финальный экзамен по специальности и получаете диплом.
Пусть ваш путь в программирование будет легким и успешным с ITVDN!
Купить подписку по акционной цене
Акція «More знижок на ITVDN»
Автор: Редакція ITVDN
С 20 по 28 июня для всех, кто хочет стать программистом – море скидок на ITVDN!
Вас ждет три волны скидок и первая из них самая высокая, от нее захватывает дух! Только представьте – вы сможете целый год обучаться на ITVDN всего за $7.8 в месяц. Для вас будут доступны более 140 видео курсов, которые позволяют пройти полное обучение по 11 IT специальностям, самые популярные из них:
FrontEnd Developer – 27 видео курсов
С#/.NET Developer – 46 видео курсов
Java Developer – 10 видео курсов
Python Developer – 5 видео курсов
PHP Developer – 8 видео курсов
Разработка игр на Unity – 17 видео курсов
Mobile Developer - 7 видео курсов
Всем известно, что программистом нельзя стать за месяц, и за два, и за три... Как показывает опыт, самые талантливые и мотивированные студенты добиваются первых успехов в разработке через полгода самообучения. С хорошим наставником этот срок может быть короче. Но найти наставника довольно сложно.
Поэтому мы решили поддержать тех, кто решительно настроен на обучение программированию и дарим большие скидки на долгосрочные подписки.
Первая волна – 20, 21, 22 июня скидка на годовую подписку – 45%, на 6 месяцев – 40% .
Вторая волна 23, 24, 25 июня скидка на годовую подписку – 40%, на 6 месяцев – 35%.
Третья волна 26, 27, 28 июня скидка на годовую подписку – 35%, на 6 месяцев – 30%.
Акционная стоимость подписки на 12 месяцев:
С 20 по 22 июня годовая подписка будет стоить $93.5 (это $7.8 в месяц вместо $19,99)
C 23 по 25 июня годовая подписка будет стоить $102 (это $8.5 в месяц вместо $19,99)
C 26 по 28 июня годовая подписка будет стоить $110.5 (это $9.2 в месяц вместо $19,99)
Акционная стоимость подписки на 6 месяцев:
С 20 по 22 июня подписка на 6 месяцев будет стоить $54 (это $9 в месяц вместо $19,99)
C 23 по 25 июня подписка на 6 месяцев будет стоить $58.5 (это $9.75 в месяц вместо $19,99)
C 26 по 28 июня подписка на 6 месяцев будет стоить $63 (это $10.5 в месяц вместо $19,99)
Долгосрочные подписки – это самый лучший выбор для тех, кто хочет пройти полное обучение по специальности и в итоге подтвердить свой уровень Дипломом специалиста.
В пакете подписки для Вас будут доступны более 140 курсов по программированию, которые есть на данный момент, а также все новые, которые появятся на ITVDN в то время, когда Ваша подписка будет активна. Ежемесячно мы записываем 5-7 новых видео курсов по самым актуальным технологиям, учитывая пожелания наших пользователей.
Вы сможете неоднократно возвращаться к пройденным курсам и сложным темам в течение года, консультироваться с тренером и формировать практические навыки, используя тренажер.
Коллектив ITVDN желает Вам успешного достижения целей в учебе и карьере и будет рад помочь Вам в этом. Оставайтесь с нами!
Приобрести подписку по акционной цене.
🔥 Hot Week — гарячий тиждень знижок на ITVDN!
Автор: Редакція ITVDN
З 11 по 18 вересня на ITVDN - таючі знижки!
Вибирай підписку та навчайся від $7 на місяць з акцією Hot Week. Для тебе буде відкрито більш ніж 300 відеокурсів з програмування, сучасних фреймворків, тестування, DevOps, веброзробки, роботи з базами даних, дизайну та розробки ігор. Навчання на ITVDN — це доступно, зручно й ефективно!
📉 Як працює «таюча» знижка
Знижка зменшується щодня — чим раніше ти дієш, тим більша вигода:
11 - 13 вересня — мінус 50% на Базовий і Преміум пакети
14 - 15 вересня — мінус 45%
16 - 17 вересня — мінус 40%
18 вересня — мінус 35%
👉 На Стартовий пакет діє фіксована знижка 35% упродовж усього тижня.
Який пакет обрати?
1.Стартовий пакет
Усі відеокурси на 3 місяці
Тестування з 10 курсів
Перевірка 5 домашніх завдань
Консультація з тренером 30 хв
Стандартна ціна: 59.99 $
Акційна ціна: 39 $ (фіксована знижка 35%)
2.Базовий пакет
Усі відеокурси на 6 місяців
Тестування з 16 курсів
Перевірка 10 домашніх завдань
Консультація з тренером 60 хв
Стандартна ціна: 89.99 $
Мінімальна ціна під час Hot Week: 45 $ (зі знижкою 50%)
3.Преміум пакет
Усі відеокурси на 12 місяців
Тестування з 24 курсів
Перевірка 20 домашніх завдань
Консультація з тренером 120 хв
Стандартна ціна: 169.99 $
Мінімальна ціна під час Hot Week: 85 $ (зі знижкою 50%)
Оплата частинами – подвійна вигода
Обирайте оплату частинами від Монобанку чи ПриватБанку. Це вигідно, адже банк вносить за вас повну оплату, а ви потім повертаєте йому щомісячними платежами без додаткових комісій. Щоб скористатися послугою “Оплата частинами”, оберіть валюту українська гривня (UAH).
Рекомендації до навчання
Щоб отримати максимальний результат від навчання на платформі ITVDN, радимо дотримуватись наступного алгоритму:
1. Перегляньте урок
2. Перевірте себе міні-тестуванням після уроку
3. Завантажте матеріали до уроку та виконайте домашнє завдання
4. Вчіться регулярно (3+ заняття на тиждень)
5. Після завершення курсу - пройдіть тестування та отримайте сертифікат.
Цей маршрут дозволяє послідовно сформувати базу та перейти до впевненого володіння інструментами сучасного розробника.
Шахова IT Арена для програмістів. IV тур – Шах. Мат. Пат. Нічиє.
Автор: Євген Волосатов
<p dir="ltr"><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt">Если ты силен в программировании и готов к сражению – докажи это в честном бою! Участвуй в Первой шахматной IT Арене, которая проходит на ITVDN с 9 июня по 7 июля 2019 года. </span><a href="https://itvdn.com/ru/news/article/chess-arena" style="text-decoration-line: none;" target="_blank"><span style="background-color:transparent; color:rgb(5, 99, 193); font-family:calibri,sans-serif; font-size:11pt">Подробности.</span></a></p>
<p dir="ltr"><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt">Состязания проходят в 4 тура. </span></p>
<p dir="ltr"><strong>Тема задач четвертого тура </strong><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt">- Шах. Мат. Пат. Ничья.</span></p>
<p dir="ltr"><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt">На решение задач даётся 1 неделя, до начала следующего тура. На следующем вебинаре 7 июля </span><strong>мы рассмотрим решения задач, определим победителей четвертого тура</strong><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt"> и расскажем об условиях новых задач.</span></p>
<p dir="ltr"><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt">Задания можно решать на одном из 5 языков программирования - </span><strong>Python, C#, Java, C++ или Pascal.</strong></p>
<p><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt">Всех победителей ждут </span><strong>призы и подарки</strong><span style="background-color:transparent; color:rgb(0, 0, 0); font-family:calibri,sans-serif; font-size:11pt">!</span></p>
Замикання C#
Автор: Редакція ITVDN
Введение
Замыкание, как правило, используется функциональными языками программирования, где они связывают функцию с определенным типом параметров, это позволяет дать доступ к переменным, находящимся за пределами границы функции. С использованием делегатов замыкание доступно в С#.
Что такое Замыкание?
Чаще всего, лексика замыкания используется в функциональных языках программирования. Замыкание – это специальный тип функции, с помощью которого она ссылается на свободные переменные. Это позволяет замкнутым функциям использовать переменные из внешнего окружения, несмотря на то что они не входят в границы. Когда функция создана, внешние переменные, которыми мы пользуемся, «захватываются», иными словами, они связаны с замкнутой функцией, так что они становятся доступными. Часто это обозначает то, что делаются копии значений переменных, когда инициализируется замыкание.
Использование замыкания в С#
В С# замыкание может быть создано с помощью анонимного метода или лямбда-выражения, все зависит от версии .NET framework, на которой вы разрабатываете. Когда вы создаете функцию, переменные, что используются в ней и находятся за областью видимости, скопированы и хранятся в коде с замыканием. Они могут использоваться везде, где вы вызовете оператор delegate. Это дает огромную гибкость при использовании делегатов, но также создает возможность неожиданных багов. К этому мы вернемся позже. А пока, давайте рассмотрим простой пример замыкания.
В коде, который ниже, мы создаем переменную «nonLocal» типа integer. Во второй строчке создаем экземпляр делегата «Action», что выводит в сообщение значение переменной типа integer. В конце мы запускаем функцию-делегат, чтобы увидеть сообщения.
int nonLocal = 1;
Action closure = delegate
{
Console.WriteLine("{0} + 1 = {1}", nonLocal, nonLocal + 1);
};
closure(); // 1 + 1 = 2
Мы можем сделать то же самое с лямбда-выражением. В следующем коде мы используем «lambda» для вывода информации, при этом лямбда-выражение имеет одинаковую силу.
int nonLocal = 1;
Action closure = () =>
{
Console.WriteLine("{0} + 1 = {1}", nonLocal, nonLocal + 1);
};
closure(); // 1 + 1 = 2
Замыкания и переменные за пределами
С помощью анонимных методов или лямбда-выражения примеры выше,при этом получаем те результаты, что вы могли ожидать, так как захват переменных замыканием не очевиден сразу же. Мы можем сделать его более явным, изменяя пределы делегатов.
Рассмотрим следующий код. Здесь замыкание находится в классе «program» с переменной «action». В главном методе вызываем метод «SetUpClosure» для инициализации замыкания перед его использованием. Метод «SetUpClosure» очень важен. Вы можете увидеть, что переменная типа integer создана и инициализирована, и только тогда используется замыкание. В конце метода «SetUpClosure» эта переменная типа integer выходит за пределы. Однако, мы все еще вызываем делегат после этого. Скомпилируется и запустится ли этот код правильно? Произошло ли исключение при получении доступа к переменной за пределами? Попробуйте выполнить код.
class Program
{
static Action _closure;
static void Main(string[] args)
{
SetUpClosure();
_closure(); // 1 + 1 = 2
}
private static void SetUpClosure()
{
int nonLocal = 1;
_closure = () =>
{
Console.WriteLine("{0} + 1 = {1}", nonLocal, nonLocal + 1);
};
}
}
Вы могли заметить, что мы получили одинаковый результат как и в оригинальном примере. Это и есть замыкание в действии. Переменная «nonLocal» была охвачена или «замкнута» кодом delegate, в результате чего она остается в нормальных пределах. По сути, переменная будет доступна, пока никаких дальнейших ссылок на делегат не останется.
Несмотря на то, что мы увидели замыкание в действии, они не поддерживаются С# и .NET framework. То, что действительно происходит - это работа на заднем фоне компилятора. Когда вы создаете собственные проекты, компилятор генерирует новые, скрытые классы, инкапсулируют нелокальную переменную и описанный код в анонимный метод или лямбда-выражение. Код, описанный в методе, и нелокальная переменная представлены в виде полей. Этот новый метод класса вызовется, когда делегат выполняется.
Автоматически сгенерированный класс для нашего простого замыкания - аналогичный приведенному ниже:
[CompilerGenerated]
private sealed class <>c__DisplayClass1
{
public int nonLocal;
public void b__0()
{
Console.WriteLine("{0} + 1 = {1}", this.nonLocal, this.nonLocal + 1);
}
}
Замыкание захватывает переменную, а не его значение
В некоторых языках программирования определяют значение переменной, которая используется в замыкании. В С# захватываются сами переменные. Это важное отличие, так как мы можем изменять значение переменной за пределами функции. Для иллюстрации рассмотрим следующий код. Здесь мы создаем замыкание, которое выводит наше начальное математическое значение переменной. При создании делегатов значение переменной типа integer равно 1. Но после того замыкания, как мы объявили замыкание, и перед тем, как его вызвали, значение переменной поменялось на 10.
int nonLocal = 1;
Action closure = delegate
{
Console.WriteLine("{0} + 1 = {1}", nonLocal, nonLocal + 1);
};
nonLocal = 10;
closure();
Так как нелокальная переменная имела значение 1 перед созданием замыкания, вы могли бы ожидать, что результатом вывода будет «1+1=2». На самом деле, на других языках программирования так бы и было. Однако, так как мы изменили значение переменной до вызова функции замыкания, это значение влияет на выполнение функции замыкание. В действительности, вы увидите на дисплее:
10 + 1 = 11
Изменения в нелокальную переменную внутри функции замыкания также передаются в другом направлении. В следующем коде внутри делегата изменяем значение переменной перед тем, как объявленный код выведет ее. Изменения видны во внешней части кода несмотря на то, что происходят они внутри замыкания.
int nonLocal = 1;
Action closure = delegate
{
nonLocal++;
};
closure();
Console.WriteLine(nonLocal); // 2
Переменная, которую мы изменяем, может привести нас к неожиданным багам в нашем коде. Мы можем продемонстрировать эту проблему в другом примере. На этот раз мы используем замыкание в простом алгоритме: многопоточное или параллельное программирование. Код ниже показывает цикл for, который имеет 5 новых потоков. Каждая пауза короткая, перед выводом значения переменной внутри цикла. Если значение переменной в цикле были захвачены, мы увидим цифры от 1 до 5 показаны в консоли, хотя, возможно, не в правильном порядке. Однако, так как эта переменная находится внутри замыкания и цикл закончится до того, как переменные будут выведены в сообщение, в конечном итоге мы увидим значение 6 для каждого потока.
for(int i = 1; i <= 5; i++)
{
new Thread(delegate()
{
Thread.Sleep(100);
Console.Write(i);
}).Start();
}
// Outputs "66666"
К счастью, такая проблема легко устраняется, когда вы понимаете, что переменные, а не их значения захватываются. Все, что нам нужно сделать, это создать новую переменную для каждого прохождения(итерации) цикла. Это объявление можно записать в теле цикла и давать значение в управляющую переменную. При нормальных обстоятельствах временная переменная будет находится за переделами, когда цикл закончится, но замыкание будет связывать и поддерживать ее.
В коде ниже вы можете увидеть 5 примеров «значений», переменные, созданные и им назначенные 5 различных значений, каждая из них привязана к разному потоку.
for(int i = 1; i <= 5; i++)
{
int value = i;
new Thread(delegate()
{
Thread.Sleep(100);
Console.Write(value);
}).Start();
}
// Outputs "12345"
Обратите внимание: вывод может меняться в зависимости от порядка, в котором потоки выполняются.
Источник: http://www.blackwasp.co.uk/CSharpClosures.aspx