Презентация для курса лекций по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Лабораторные работы (практикум) по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
Основы объектно-ориентированного программирования на языке C#. Часть 1. Введение в программирование.
Рассматривается базовые понятие алгоритмов, блок-схем, объектно-ориентированного программирования на базе платформы .NET Framework.
Основы ооп на языке C#. Часть 2. базовый синтаксис.YakubovichDA
Рассматриваются базовые понятия и конструкции языка C#:
- структура консольного приложения;
- переменные и типы данных;
- арифметические и логические операторы;
- условные вычисления;
- циклы;
- массивы;
- ввод и вывод данных.
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
Лабораторные работы (практикум) по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
Основы объектно-ориентированного программирования на языке C#. Часть 1. Введение в программирование.
Рассматривается базовые понятие алгоритмов, блок-схем, объектно-ориентированного программирования на базе платформы .NET Framework.
Основы ооп на языке C#. Часть 2. базовый синтаксис.YakubovichDA
Рассматриваются базовые понятия и конструкции языка C#:
- структура консольного приложения;
- переменные и типы данных;
- арифметические и логические операторы;
- условные вычисления;
- циклы;
- массивы;
- ввод и вывод данных.
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...Iosif Itkin
Vert, Т., Krikun, Т. и Glukhih, М., St. Petersburg State Polytechnic University, Clausthal Technical University
Finding Defects in C and C++ Pointers Using Static Analysis and Logical Inference
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...Iosif Itkin
TMPA-2013 Conference in Kostroma
Anureyev, I., A.P.Ershov Institute of Informatics Systems
On the Road to Technology of Developing the Means of Deductive Program Verification
Всё о статическом анализе кода для Java программистаAndrey Karpov
Этот доклад для тех, кто не знаком со статическими анализаторами кода, или знаком, но ещё не внедрил эти инструменты в процесс разработки. Будет описана методология статического анализа и как она используется для выявления ошибок и запахов кода. Будут кратко рассмотрены некоторые популярные инструменты статического анализа для языка Java, а также платформа SonarQube способная объединить и визуализировать отчёты различных анализаторов. Немного заглянем внутрь и поговорим о технологиях, используемых в современных статических анализаторах кода и позволяющих находить разнообразнейшие паттерны ошибок. Затронем вопрос, почему несмотря на уже существующие инструменты наша команда решила сделать ещё один: PVS-Studio for Java :). В конце рассмотрим важный вопрос интеграции инструментов статического анализа в большие старые проекты и почему так важно регулярное использование подобных инструментов.
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
TMPA-2015: Lexical analysis of dynamically formed string expressionsIosif Itkin
Lexical analysis of dynamically formed string expressions
Marina Polubelova, Semyon Grigorev, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptSergey Platonov
Шаблоны — мощный инструмент, добавляющий в язык новые возможности, а программистам в команде — новые проблемы. Доклад покажет, как тщательно продуманный шаблонный код может не усложнить, а упростить жизнь и дать надёжную абстракцию межпроцессных межъязыковых асинхронных вызовов функций. С помощью шаблонов можно:
адаптировать Promise/A+ из Javascript для C++
автоматически проверять и раскладывать динамический массив аргументов на статичные аргументы функции
сделать аналог std::bind для weak_ptr.
Эти вещи будут показаны на примере взаимных вызовов между C++ и Javascript в одном приложении с помощью CEF3.
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
О сложностях программирования, или C# нас не спасет?Tatyanazaxarova
Программирование это сложно. С этим никто, надеюсь, не спорит. Но вот тема новых языков программирования, а точнее поиск "серебряной пули" всегда находит бурных отклик в умах разработчиков программного обеспечения. Особенно "модной" является тема превосходства одного языка программирования над другим. Ну, к примеру, что C# "круче", чем C++. И хотя holy wars – это не та причина, по которой я пишу этот пост, тем не менее, что называется "наболело". Ну не поможет C#/lisp/F#/Haskell/... написать изящное приложение, взаимодействующее с внешним миром, и все тут. Вся изящность теряется, стоит захотеть написать что-то реальное, а не пример "сам в себе".
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...Iosif Itkin
Vert, Т., Krikun, Т. и Glukhih, М., St. Petersburg State Polytechnic University, Clausthal Technical University
Finding Defects in C and C++ Pointers Using Static Analysis and Logical Inference
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...Iosif Itkin
TMPA-2013 Conference in Kostroma
Anureyev, I., A.P.Ershov Institute of Informatics Systems
On the Road to Technology of Developing the Means of Deductive Program Verification
Всё о статическом анализе кода для Java программистаAndrey Karpov
Этот доклад для тех, кто не знаком со статическими анализаторами кода, или знаком, но ещё не внедрил эти инструменты в процесс разработки. Будет описана методология статического анализа и как она используется для выявления ошибок и запахов кода. Будут кратко рассмотрены некоторые популярные инструменты статического анализа для языка Java, а также платформа SonarQube способная объединить и визуализировать отчёты различных анализаторов. Немного заглянем внутрь и поговорим о технологиях, используемых в современных статических анализаторах кода и позволяющих находить разнообразнейшие паттерны ошибок. Затронем вопрос, почему несмотря на уже существующие инструменты наша команда решила сделать ещё один: PVS-Studio for Java :). В конце рассмотрим важный вопрос интеграции инструментов статического анализа в большие старые проекты и почему так важно регулярное использование подобных инструментов.
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
TMPA-2015: Lexical analysis of dynamically formed string expressionsIosif Itkin
Lexical analysis of dynamically formed string expressions
Marina Polubelova, Semyon Grigorev, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptSergey Platonov
Шаблоны — мощный инструмент, добавляющий в язык новые возможности, а программистам в команде — новые проблемы. Доклад покажет, как тщательно продуманный шаблонный код может не усложнить, а упростить жизнь и дать надёжную абстракцию межпроцессных межъязыковых асинхронных вызовов функций. С помощью шаблонов можно:
адаптировать Promise/A+ из Javascript для C++
автоматически проверять и раскладывать динамический массив аргументов на статичные аргументы функции
сделать аналог std::bind для weak_ptr.
Эти вещи будут показаны на примере взаимных вызовов между C++ и Javascript в одном приложении с помощью CEF3.
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
О сложностях программирования, или C# нас не спасет?Tatyanazaxarova
Программирование это сложно. С этим никто, надеюсь, не спорит. Но вот тема новых языков программирования, а точнее поиск "серебряной пули" всегда находит бурных отклик в умах разработчиков программного обеспечения. Особенно "модной" является тема превосходства одного языка программирования над другим. Ну, к примеру, что C# "круче", чем C++. И хотя holy wars – это не та причина, по которой я пишу этот пост, тем не менее, что называется "наболело". Ну не поможет C#/lisp/F#/Haskell/... написать изящное приложение, взаимодействующее с внешним миром, и все тут. Вся изящность теряется, стоит захотеть написать что-то реальное, а не пример "сам в себе".
Докладчик: Алексей Городецкий, ОмГУ, Great Fruit, Омск.
«Закончил ОмГУ ФКН, на данный момент обучаюсь в аспирантуре там же. В ИТ за деньги лет 6 — с осени первого курса. Так вышло, что занимался абсолютно разными вещами — админил и патчил Asterisk в службе такси, участвовал в разработке складских систем для небезызвестных колбасных картелей (см. программировал в морозилках и тому подобные страдания), занимался веб разработкой. На данный момент работаю в ОмГУ — занимаюсь корпоративными системами и электронными сервисами студента. В качестве развлечений участвую порой в хакатонах (обычно в команде с небезызвестным человеком-хакатоном), а так же в game джемах.
Как и любой другой сегодняшний программист, программировал на довольно большом количестве языков — на функциональных, на скриптовых, на мейнстримовых. Честно говоря, результат меня совсем не удовлетворил, как, думаю, и многих многих других. Именно по этой причине сегодня так много молодых и по-своему интересных языков. По моему мнению, сегодняшние мейнстримовые языки имеют 4 очень серьезные проблемы:
— менеджмент памяти
— проблема простоты, минимальности покрытия возможностями при сохранении выразительности
— композиция, модульность, масштабируемость
— возможности unit тестирования
В аспирантуре занимаюсь изучением этих вопросов. В своем докладе расскажу про инфраструктуру для создания компиляторов LLVM, некогда созданную аспирантом из Иллиноиса, Крисом Латтнером, сейчас работающим в Apple Inc. Логическим продолжением его деятельности стало создание языка Swift. Мы рассмотрим сегодняшние методологии построения компиляторов, используя инфраструктуру LLVM. На примере создания фронтенда достаточно простого языка, мы получим представление о системе команд LLVM, об утилитах, входящих в стандартный пакет LLVM, о FFI с libc и прочих скользких ситуациях, о которых часто представление имеют только системные программисты.
Если вас интересуют языки программирования, а также, возможно, накопилось некоторое количество боли и стресса от использования тех языков, с которыми вы вынуждены работать, то добро пожаловать на баркемп, на котором мы и обсудим такие вещи как:
— более подробно о LLVM и компиляторах
— перегрузка операторов
— вывод типов
Если останутся силы, то мы сможем обсудить 4 проблемы, обозначенных мною выше, тщательно запротоколировать все мнения и, возможно, прийти к какому-то консенсусу.»
Какие книги помогут подросткам разобраться в программировании? Лучшие книги по мнению ШЕ компаний Беларуси и компьютерной академии для девочек IT Princess
SlideShare now has a player specifically designed for infographics. Upload your infographics now and see them take off! Need advice on creating infographics? This presentation includes tips for producing stand-out infographics. Read more about the new SlideShare infographics player here: http://wp.me/p24NNG-2ay
This infographic was designed by Column Five: http://columnfivemedia.com/
No need to wonder how the best on SlideShare do it. The Masters of SlideShare provides storytelling, design, customization and promotion tips from 13 experts of the form. Learn what it takes to master this type of content marketing yourself.
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
Thank you, SlideShare, for teaching us that PowerPoint presentations don't have to be a total bore. But in order to tap SlideShare's 60 million global users, you must optimize. Here are 10 quick tips to make your next presentation highly engaging, shareable and well worth the effort.
For more content marketing tips: http://www.oneupweb.com/blog/
Слайды использовались на краткосрочных курсах повышения квалификации учителей информатики, 2 лекции по 1 час 20 минут.
Изложен опорный (предельно ужатый) материал по основами C++.
JavaScript - мой основной язык программирования, но два года я была в “Java-JavaScript” иммиграции, а последние полгода провела со Swift. Теперь, возвращаясь к JavaScript, я часто сравниваю, как там у “них”.
Этот доклад о том, чего мне не хватает в JavaScript, и почему JavaScript разработчику следует путешествовать в другие языки.
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Sergey Platonov
В последнее время в промышленной разработке ПО особую популярность обретают Domain-Specific Lanugages (DSL). Они драматически упрощают разработку и дают возможность “программировать” не только программистам, но и пользователям прикладных программ.
В своем докладе я расскажу об опыте использования DSL применительно к С++, причем упор будет сделан на производительность кода DSL, и его мгновенную “встраиваемость” в запущенную программу путем компиляции DSL-кода в нативный код с помощью инструментария LLVM.
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
Основываясь на опыте разработки Крипты, Дмитрий рассмотрит средства реализации статического и динамического полиморфизма в C++, а также некоторые их паттерны и антипаттерны.
Статический анализ кода: Что? Как? Зачем?Andrey Karpov
Методология статического анализа год за годом зарекомендовывает себя в поисках дефектов в исходном коде программ.
Максим расскажет про:
- методологию статического анализа и какие плюсы и минусы у нее есть;
- технологии этой методологии, которые позволяют выявлять разнообразнейшие дефекты в коде;
- интересные примеры ошибок в реальных проектах, которые были найдены при помощи статического анализа;
- интеграцию инструментов статического анализа в проекты любой сложности, и почему так важно регулярное использование подобных инструментов.
Николай Гусев «Функциональное программирование для C# разработчиков»MskDotNet Community
Функциональное программирование набирает популярность с каждым днем. Тут и там выходят новые библиотеки, фреймворки и языки, вдохновлённые функциональными концепциями. Всё больше программистов начинают ценить неизменяемое состояние и чистые функции, простую и удобную композицию конструкций и компилятор, находящий львиную долю ошибок ещё до запуска приложения. Язык C# с каждым годом вбирает в себя новые идеи из мира функционального программирования. Мы уже привыкли к удобному Linq и к передаче функций как параметров. А иногда C# и сам становится колыбелью новых идей, например, Reactive Extensions (спасибо Эрику Мейеру). Интересно, какие ещё конструкции функционального программирования можно было бы использовать в C#? Об этом мы и поговорим в нашем докладе. Заодно узнаем, как обрабатывать ошибки в стиле функционального программирования, как избавиться от Null Reference Exception, как ещё можно использовать Linq и многое другое. Приходите, будет интересно.
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
Наша команда в DevExpress недавно выпустила Preview версию нового продукта, RTF web-редактора – ASPxRichEdit.
Продукт требует высокой отзывчивости на действия пользователя и максимальной производительности. Поэтому клиент получился «толстым» в отличие от «тонких клиентов» большинства бизнес-приложений.
В составе продукта два полнофункциональных компонента - клиентский и серверный текстовые процессоры. Оба компонента работают независимо друг от друга. Клиентская часть создавалась как оптимизированная версия серверного компонента, переписанного с .NET на TypeScript.
Клиентская часть не уступает в сложности серверной. Кроме того, возникают дополнительные проблемы синхронизации состояний моделей на клиенте и сервере и глубокого тестирования клиент-серверного взаимодействия.
В этом докладе вы узнаете, как мы разрабатывали этот продукт, какие проблемы встретили и какие методики тестирования использовали.
Мы поможем Вам написать дипломную работу и защитить ее на положительную оценку. Заказывайте дипломную работу у нас и Вы не прогадаете. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги.
Лабораторные работы (практикум) по техническому обслуживанию персонального компьютера. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Лабораторные работы (практикум) по операционным системам и средам. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Лабораторные работы (практикум) по конструкции и компоновки персонального компьютера. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Лабораторные работы (практикум) по HTML, CSS, PHP, MySQL. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Лабораторные работы (практикум) по архитектуре ЭВМ и вычислительных систем. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
2. WWW . Studentam-In . RU
ЧАСТЬ I
ВВЕДЕНИЕ
начальные сведения о платформе .NET и языке C#
ЧАСТЬ II
ОСНОВЫ ЯЗЫКА
детальное рассмотрение языка C#
ЧАСТЬ III
СОЗДАНИЕ ПРИЛОЖЕНИЙ WINDOWS
техника создания приложений с использованием GUI
3. WWW . Studentam-In . RU
ЧАСТЬ I
ВВЕДЕНИЕ
начальные сведения о платформе .NET и языке C#
4. 4
WWW . Studentam-In . RU
Введение в язык С#
C# (си-шарп) – ООЯП.
Разработан в 1998-2001 группой инженеров под
руководством Андерса Хейлсберга (д.р. 1960) в
компании Microsoft как язык разработки
приложений для платформы Microsoft .NET
Framework.
C# 4.0 представлен в конце 2008.
В 20 лет написал свой первый компилятор языка Паскаль,
который после портирования под MS-DOS продал фирме Borland.
До 36 лет был главным инженером фирмы Borland.
Затем перешел в Microsoft.
5. 5
WWW . Studentam-In . RU
Введение в язык С#
С# – поддерживает ООП.
Объект – фрагмент программы, решающий
функциональную задачу
Microsoft .NET – идея универсального
программного кода, выполняющегося на
любой ОС
Написание кода – Компиляция кода в
машинно-независимый CIL-код (common
intermediate language) – Выполнение кода JITкомпилятором (just in time)
Работа .NET-приложений в Windows
обеспечивает Microsoft .NET Framework
6. 6
WWW . Studentam-In . RU
Синтаксис С#
Программа на С# – текстовый файл из
операторов и комментариев
Оператор – зарезервированные
слова, идентификаторы, константы, выражения
После оператора ставится ;
Комментарий – текст после // или внутри /* */
Строковые выражения заключаются в “
Идентификатор НЕ должен содержать
пробела, начинаться с цифры, быть
зарезервированным словом
Язык чувствителен к регистру букв, поэтому
например, fOr будет идентификатором, а не
зарезирвированным словом
7. 7
Типы данных С#
Целый
int i;
i = 107;
byte b;
b = 0;
// -2 147 483 648 .. +2 147 483 647
// 0 .. 255
Вещественный
double d;
d = 1.5;
Символьный
char ch;
ch = 'a';
Строковый
string st;
st = “строка”;
// 5,0x10E-324 .. 1,7x10E308
Булев
bool b;
b = true;
WWW . Studentam-In . RU
8. 8
Типы данных С#
Дата-время
using System;
class Program
{
static void Main()
{
DateTime d;
d = DateTime.MinValue;
Console.WriteLine(d);
d = DateTime.Now;
Console.WriteLine(d.ToString());
Console.WriteLine(d.ToString());
Console.WriteLine(DateTime.Today);
Console.ReadLine();
}
}
WWW . Studentam-In . RU
9. 9
WWW . Studentam-In . RU
Типы данных С#
Объявление переменных
bool Bool = true;
int x = 0;
int x = 0, y = 1, z = new int();
string S = “Hello “;
Объявление констант (не инициируется с
помощью слова new)
const int x = 1, y = 100, z = 0;
10. 10
WWW . Studentam-In . RU
Классы и объекты С#
Класс – код, после слова class
Класс – тип, образец для создания объектов
Члены класса:
Методы
Поля (хранят связанные с экземпляром класса
данные)
Свойства
События (один объект сообщает другому об
изменении своего состояния)
11. 11
WWW . Studentam-In . RU
Классы и объекты С#
Принципы класса:
ИНКАПСУЛЯЦИЯ (сокрытие реализации
методов)
string S;
Console.WriteLine(“Введи логин”);
Console.ReadLine(S);
НАСЛЕДОВАНИЕ (класс наследник получает от
родителя его поля, методы, свойства и может
дополнять их своими, предающими
специфику)
ПОЛИМОРФИЗМ (один интерфейс можно
использовать для управления различными
реализациями (методами))
12. 12
WWW . Studentam-In . RU
Пространства имен С#
Многие языки имеют свои библиотеки
типов, упрощающих разработку ПО, а в С#
такой библиотеки нет
С# использует общую систему типов CTS
(Common Type System), которая структурирует
все типы (более 4000) в логически связанные
группы – пространства имен
Эффективность программирования зависит от
знания CTS
13. 13
WWW . Studentam-In . RU
Пространства имен С#
System
корневое пространство с классом Object
System.Data
классы пространства используются для работы
с БД
System.IO
классы, отвечающие за ВВ
System.Web
классы веб-приложений
System.Windows.Forms
классы для работы с элементами интерфейса
Windows
14. 14
WWW . Studentam-In . RU
Пространства имен С#
Для объявления ссылки на пространство имен
используется оператор using
using System;
using System.Windows.Forms;
15. 15
WWW . Studentam-In . RU
Метод Main()
Любая программа содержит класс в котором
объявляется только один метод Main(),
сопровождающийся модификатором static.
Метод определяет точку входа в программу
(момент начала ее работы)
Метод определяется как целочисленная
функция типа int, принимающая входной
параметр в виде массива строк string[]
(параметры запуска программы из cmd) и
возвращающая код завершения работы
программы
0 если программа завершилась успешно
17. 17
WWW . Studentam-In . RU
«Шаблон» консольной программы
using System;
class Program
{
static void Main()
//static объявляет член класса статическим, т.е. для доступа к статическому члену можно не
создавать объект класса
{
//код программы
}
}
19. 19
WWW . Studentam-In . RU
Пример упрощенной программы
using System;
class HelloClass
{
public static void Main()
{
Console.WriteLine(“Привет мир!”);
Console.ReadLine();
}
}
void определяет метод не как функцию типа
int, а как процедуру (программу, которая не
возвращает результат)
20. 20
WWW . Studentam-In . RU
Пример программы
с приемом параметров
using System;
class HelloClass
{
public static int Main(string[ ] args)
{
Console.WriteLine(“Привет мир!”);
return 0;
}
}
21. WWW . Studentam-In . RU
ЧАСТЬ II
ОСНОВЫ ЯЗЫКА
детальное рассмотрение языка C#
22. 22
WWW . Studentam-In . RU
Создание объектов в С#
Класс – тип данных, схема для создания
объектов
Объект – экземпляр
класс, фрагмент, решающий
функциональную задачу
23. 23
WWW . Studentam-In . RU
Создание двух объектов hc1, hc2
(объекты размещаются в динамической памяти)
using System;
class HelloClass
{
public static void Main()
{
HelloClass hc1 = new HelloClass();
//другой вариант
HelloClass hc2;
hc2 = new HelloClass();
}
}
25. 25
WWW . Studentam-In . RU
Создание объектов в С#
using System;
class Program
{
static void Main()
{
Console.Write("Введите ваш логин: ");
string st = Console.ReadLine();
if (st != "")
Console.WriteLine("Приветствуем, {0}!", st);
else
Console.WriteLine("Приветствуем анонимный пользователь!");
Console.Write("Введите ваш возраст: ");
st = Console.ReadLine();
Console.WriteLine("Ваш возраст {0} лет. n", st);
Console.Write("Нажмите клавишу ввода для завершения работы
программы");
Console.ReadLine();
}
}
27. 27
WWW . Studentam-In . RU
Форматирование строк в С#
using System;
class Program
{
static void Main()
{
Console.WriteLine("Форматируем число 9.99 C {0:c} ", 9.99);
//0 определяет место, которое будет заменено
//буква c задает денежный формат в соответствии с локализацией ОС
Console.WriteLine("Без формата, требуется 15 позиций {0:15} ",
123456789);
Console.WriteLine("Форматируем число 1234.56789 F9 {0:f9} ", 1234.56789);
//вещественное число с фиксированной точкой и количеством знаков после точки
Console.WriteLine("Форматируем число 123456.789 G {0:G} ",
//формат F или E в зависимости от размера числа
123456.789);
Console.WriteLine("Форматируем число 123456.789 N5 {0:N5} ",
//разделитель тысяч с количеством знаков после точки
123456.789);
Console.WriteLine("Форматируем число 123456789
//HEX-формат
}
123456789);
Console.WriteLine("Форматируем число 123456789
Console.ReadLine();
}
x {0:x} ",
X {0:X} ",
123456789);
28. 28
WWW . Studentam-In . RU
Преобразование числа в строку в С#
using System;
class Program
{
static void Main()
{
int num = 123456789;
Console.WriteLine(num.ToString(“c”));
Console.ReadLine();
}
}
29. 29
WWW . Studentam-In . RU
Управляющие последовательности в С#
using System;
class Program
{
static void Main()
{
string st1 = "123@n456";
string st2 = @"123n456";
Console.WriteLine(st1);
Console.WriteLine(st2);
Console.ReadLine();
}
}
30. 30
WWW . Studentam-In . RU
Класс Math в С#
Abs(а)
модуль аргумента
Max(a, b)
максимальное число
Pow(a, b)
а в степени b
Round(a)
округление до целого
Sqrt(a)
корень квадратный
IEEERemainder(a, b) остаток от деления а на b
…
31. 31
Класс Math в С#
using System;
class Program
{
static void Main()
{
int n1, n2;
n1 = -3;
n2 = Math.Abs(n1);
Console.WriteLine(n2);
Console.WriteLine(Math.Max(n1, n2));
Console.WriteLine(Math.Pow(n1, n2));
Console.WriteLine(Math.Round(1.5));
Console.WriteLine(Math.Sqrt(81));
Console.WriteLine(Math.IEEERemainder(81,9));
Console.ReadLine();
}
}
WWW . Studentam-In . RU
32. 32
WWW . Studentam-In . RU
Класс Random в С#
using System;
class Program
{
static void Main()
{
Random r1 = new Random(); //неповторяющаюся серия (на основе даты и времени)
for (int i = 1; i <= 2; i++)
Console.WriteLine(r1.Next().ToString());
Random r2 = new Random(1); //повторяющаяся серия (на основе начального значения)
for (int i = 1; i <= 2; i++)
Console.WriteLine(r2.Next().ToString());
Console.ReadLine();
}
}
33. 33
WWW . Studentam-In . RU
Другие значащие типы в С#
GetNumericValue(char c) возвращает код символа
IsDigit(char c) возвращает T, если символ с – цифра
IsLetter(char c) возвращает T, если символ с – буква
IsWhiteSpace(), IsUpper(), ToString(), ToUpper() …
34. 34
WWW . Studentam-In . RU
Операции в С#
+-*/%
сложение, вычитание, умножение, деление, остаток
от деления
++х --х префиксный инкремент, декремент (сперва
увеличивают (уменьшают) значение
переменной, затем его используют)
! логическое отрицание (к логическим операндам)
<< >> сдвиг влево, сдвиг вправо на определенное
число разрядов
< <= > >= меньше, меньше или
равно, больше, больше или равно
== != равно, не равно
& ^ |AND, XOR, OR
35. 35
WWW . Studentam-In . RU
Операторы языка в С#
Составной оператор – блок операторов в фигурных
скобках { }. Блок определяет область видимости
переменных.
Операторы перехода break, continue, goto, return.
Оператор присваивания =. Сокращенные формы
+=, -=, /=, *=, %=, <<=, >>=, &=, ^=, |=.
Множественное присваивание int x,y,z =1;
36. 36
WWW . Studentam-In . RU
Условный оператор в С#
if (условие)
оператор1;
else
оператор2;
37. 37
WWW . Studentam-In . RU
Оператор выбора в С#
switch (выражение)
{
case константное_выражение_1:
операторы1;
оператор_перехода_1; //break или goto
case константное_выражение_2:
операторы2;
оператор_перехода_2;
…
default:
операторыN;
оператор_перехода_N;
}
38. 38
WWW . Studentam-In . RU
Оператор цикла с параметром в С#
for (инициалиция_счетчиков; условие; изменение_счетчиков)
оператор
for (инициалиция_счетчиков; условие; изменение_счетчиков)
{
оператор1;
оператор2;
…
}
39. 39
WWW . Studentam-In . RU
Оператор цикла с пред- и пост- условием в С#
while (условие)
тело_цикла
do
тело_цикла
while (условие)
40. 40
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
Результатом выполнения операторов, образующих тело
функции, всегда является значение некоторого типа, поэтому
функция может участвовать в образовании выражений наряду с
переменными и константами.
Синтаксис описания:
[модификаторы] тип_данных имя ([формальные параметры])
{
тело
}
Модификатор private делает подпрограмму доступной только в
методах данного класса, а public делает подпрограмму (метод)
доступным в любом месте программы.
void означает отсутствие типа данных (т.е. подпрограмма
представляет собой процедуру и в ней нельзя использовать
оператор return).
41. 41
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
int A() {…}
void B() {…}
public string C() {…}
А и В закрытые члены класса, доступные только в методах этого же
класса.
А целочисленная функция.
В процедура.
С открытая функция строкового типа, доступная в любой точке
программы.
42. 42
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
int A() {…}
void B() {…}
public string C() {…}
А и В закрытые члены класса, доступные только в методах этого же
класса.
А целочисленная функция.
В процедура.
С открытая функция строкового типа, доступная в любой точке
программы.
43. 43
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
sin(x) имеет формальный параметр x
Виды формальных параметров:
1. Входные (программа передает данные в тело подпрограммы;
передаются не данные, а их копии, следовательно их изменение
никак не влияет на вызывающую программу)
2. Выходные (объявляются со словом out; передают данные из
подпрограммы в вызывающую программу)
3. Ссылочные (в тело подпрограммы передается адрес параметра
в памяти ПК; помечаются словом ref; передают и получают из
подпрограммы новые данные)
44. WWW . Studentam-In . RU
44
Процедуры и функции – методы класса в С#
using System;
тип результата и входного параметра
class Program
{
private static int my_func(int sum)
{
for (int i = 0; i <= 5; i++) //1+2+3+4+5=15
sum += i;
return sum;
}
static void Main()
{
Console.WriteLine(my_func(4));
Console.ReadLine();
}
}
вызов функции и
передача начального значения
для переменной sum
45. 45
WWW . Studentam-In . RU
Массивы в С#
Массив – упорядоченная структура, содержащая данные одного и
того же типа.
Индекс – номер элемента в массиве.
Первый элемент массива имеет индекс 0.
Описание массива:
int[] arrInt;
//целочисленный массив
char[] arrChar; //массив символов
float[] arrFloat;
//массив вещественных чисел
Инициализация массива:
arrInt = new int[25];
//в массиве 25 целых чисел
//индекс первого элемента 0, а индекс последнего элемента 24!
arrChar = new char[3];
//в массиве 3 символа
arrFloat = new float[1000]; //в массиве 1000 вещественных чисел
Наполнение массива:
int[] arrInt = new int[3] {1, 22, 3}
46. 46
Массивы в С#
using System;
class Program
{
static void Main()
{
int[] arrInt;
arrInt = new int[10];
Random rnd = new Random();
for (int i = 0; i < 10; i++)
{
arrInt[i] = rnd.Next(10);
Console.WriteLine(arrInt[i]);
}
Console.ReadLine();
}
}
WWW . Studentam-In . RU
47. 47
WWW . Studentam-In . RU
Двумерные массивы в С#
Массивы могут иметь несколько измерений.
Двумерный массив из четырех строк и двух столбцов.
int[,] arr = new int[4, 2];
Присвоение значения элементу массива:
arr[2, 1] = 25;
48. 48
WWW . Studentam-In . RU
Двумерные массивы в С#
Индексы
using System;
class Program
{
static void Main()
{
int[,] arr = new int[4, 2];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 2; j++)
{
arr[i, j] = i+j;
Console.Write("{0} ", arr[i, j]);
if (j % 2 == 1)
{
Console.WriteLine();
}
}
}
Console.ReadLine();
}
}
00
01
10
11
20
21
30
31
0+0
0+1
1+0
1+1
2+0
2+1
3+0
3+1
49. 49
WWW . Studentam-In . RU
Класс System.Array в С#
Класс System.Array имеет статические свойства и методы,
упрощающие манипулирование массивом как объектом.
Свойство:
public int Length{get:};
возвращает количество элементов
Метод:
public static void CopyTo(Array, Index);
копирует из текущего одномерного массива все элементы в
массив Array, начиная с элемента Index.
Примечание:
В отличие от обычных массивов и объектов класса System.Array,
класс ArrayList (пространство имен System.Collections)
предназначен для хранения объектов произвольного типа.
50. 50
Класс System.Array в С#
using System;
class Program
{
static void Main()
{
Array arrInt = Array.CreateInstance(typeof(int), 10);
Random rnd = new Random();
for (int i = 0; i < arrInt.Length; i++)
{
arrInt.SetValue(rnd.Next(10), i);
Console.WriteLine(arrInt.GetValue(i));
}
Console.ReadLine();
}
}
WWW . Studentam-In . RU
51. 51
WWW . Studentam-In . RU
Класс String в С#
Класс String предназначен для хранения строк переменной длины.
Для совместимости определен псевдоним string типа String.
Свойство:
public int Length() {get:};
возвращает длину строки
Метод:
public static int Compare(string S1, string S2);
public static string Concat (params object[]);
CopyTo, EndsWith, Format, IndexOf, Insert, Remove, Replace, ToLower, T
oUpper, Trim, Split, Join …
Лексема – подстрока в строке, которую можно выделить по
признаку.
Пример лексем:
c:program filesmicrosoft visual studioreadme.html
имена диска, каталогов и файла – лексемы с признаком
52. 52
WWW . Studentam-In . RU
Класс String в С#
using System;
class Program
{
static void Main()
{
string txt = "1 абв, " + "2 абв, " + "3 абв, " + "4 абв, " + "5 абв. ";
Console.WriteLine("Исходная строка: n");
Console.WriteLine("{0}n", txt);
Console.WriteLine("Разбиение на предложения n", txt);
string[] sentSplit, words;
sentSplit = txt.Split(',');
for (int i =0; i < sentSplit.Length; i++)
Console.WriteLine("Предложение [{0}]: {1}", i, sentSplit[i]);
string sentJoin = string.Join(",", sentSplit);
Console.WriteLine("n Соединение предложений: n{0}", sentJoin);
Console.WriteLine("n Разделение на слова: n");
words = txt.Split(',', ' ');
for (int i = 0; i < words.Length; i++)
Console.WriteLine("Слово [{0}]: {1}", i, words[i]);
sentJoin = string.Join(" ", words);
Console.WriteLine("n Соединение слов: n{0}", sentJoin);
Console.ReadLine();
}
}
53. 53
WWW . Studentam-In . RU
Файлы в С#
Классы обработки файлов имеются в пространстве имен System.IO.
Сериализация – процесс сохранения текущего состояния объекта в
памяти или на носителе информации. Обратный процесс
десериализация. Эти процессы управляются классами из
пространства имен System.Runtime.Serialization.
Классы для работы с файловой системой:
Directory, DirectoryInfo, File, FileInfo, Path
Классы для работы с потоками данных:
MemoryStream, NetworkStream, FileStream, BinaryReader, BinaryWriter,
StreamReader, StreamWriter.
54. 54
Класс System.IO в С#
using System.IO;
class Program
{
static void Main()
{
string dirPath = @"c:myTestFolder";
if (Directory.Exists(dirPath))
Directory.Delete(dirPath);
else
Directory.CreateDirectory(dirPath);
}
}
WWW . Studentam-In . RU
55. 55
WWW . Studentam-In . RU
Исключения в С#
Исключение – ошибка, приводящая к краху системы, получению
неверного результата.
Примеры исключительных ситуаций:
Деление на ноль, открытие несуществующего файла, выход
индекса массива из допустимых границ и т.д.
Для обработки используется блок try { } catch { } finally { } .
56. WWW . Studentam-In . RU
ЧАСТЬ III
СОЗДАНИЕ ПРИЛОЖЕНИЙ WINDOWS
техника создания приложений с использованием GUI
57. 57
WWW . Studentam-In . RU
Порядок создания Windows-приложения
1. Запустить среду
2. Выбрать File – New – Project – Windows Forms Application
58. 58
WWW . Studentam-In . RU
Настройка среды программирования
View – Code
View – Designer
View – Other windows – Toolbox
View – Other windows – Properties Window
View – Toolbars – …
59. 59
WWW . Studentam-In . RU
Порядок создания Windows-приложения
3. Создать форму, разместить основные элементы
GUI, определить их свойства.
4. Написать обработчики событий.
5. Сохранить проект, запустить, протестировать, исправить
ошибки, сохранить.
Т.о. выделяют ДВА основных этапа создания приложений:
1. Проектирование формы.
2. Написание кода обработчиков событий.