Introductory Programming in C# Release 1.0

Total Page:16

File Type:pdf, Size:1020Kb

Introductory Programming in C# Release 1.0 Introductory Programming in C# Release 1.0 Andrew N. Harrington and George K. Thiruvathukal May 29, 2012 CONTENTS 1 Context 1 1.1 Introduction to the Notes.........................................1 1.2 Comments on Miles Chapter 1......................................1 2 C# Data and Operations 3 2.1 Development Tools............................................3 2.2 Lab Exercise: Editing, Compiling, and Running............................5 2.3 Comments on Miles Simple Data....................................9 2.4 Division and Remainders.........................................9 2.5 Substitutions in Console.WriteLine................................... 10 2.6 Learning to Solve Problems....................................... 12 2.7 Lab: Division Sentences......................................... 15 2.8 Homework: Grade Calculation...................................... 18 3 Defining Functions of your Own 23 3.1 Syntax Template Typography...................................... 23 3.2 A First Function Definition....................................... 23 3.3 Multiple Function Definitions...................................... 25 3.4 Function Parameters........................................... 26 3.5 Multiple Function Parameters...................................... 29 3.6 Returned Function Values........................................ 30 3.7 Two Roles: Writer and Consumer of Functions............................. 32 3.8 Local Scope............................................... 33 3.9 Static Variables.............................................. 34 3.10 Not using Return Values......................................... 34 4 Basic String Operations 37 4.1 String Indexing.............................................. 37 4.2 Some Instance Methods and the Length Property............................ 37 4.3 A Creative Problem Solution....................................... 39 4.4 Lab: String Operations.......................................... 41 5 Decisions 43 5.1 Conditions I............................................... 43 5.2 Simple if Statements.......................................... 43 5.3 if-else Statements........................................... 44 5.4 More Conditional Expressions...................................... 46 5.5 Multiple Tests and if-else Statements................................ 48 5.6 If-statement Pitfalls........................................... 50 i 5.7 Compound Boolean Expressions..................................... 52 6 While Loops 55 6.1 While-Statements............................................ 55 6.2 While-Statements with Sequences.................................... 62 6.3 Interactive while Loops........................................ 67 6.4 Short-Circuiting && and ||........................................ 71 6.5 While Examples............................................. 72 6.6 More String Methods........................................... 73 6.7 Algorithms using While......................................... 75 6.8 Do-While Loops............................................. 78 6.9 Number Guessing Game Lab...................................... 79 6.10 Homework: Grade Calculation from Individual Scores......................... 83 6.11 Lab: Using MonoDevelop........................................ 86 6.12 Lab: Version Control........................................... 92 7 Foreach Loops 107 7.1 foreach Syntax............................................ 107 7.2 foreach Examples............................................ 108 8 For Loops 109 8.1 For-Statement Syntax.......................................... 109 8.2 Examples With for Statements..................................... 110 9 Files 119 9.1 File Syntax................................................ 119 9.2 Grade File Homework.......................................... 122 10 Arrays 127 10.1 One Dimensional Arrays......................................... 127 10.2 Musical Scales and Arrays........................................ 133 10.3 Linear Searching............................................. 136 10.4 Sorting Algorithms............................................ 137 10.5 Binary Searching............................................. 145 10.6 Lab: Arrays................................................ 147 10.7 Lab: Performance............................................ 151 10.8 Multi-dimensional Arrays........................................ 153 11 Lists 159 11.1 List Syntax................................................ 159 11.2 .Net Library (API)............................................ 161 12 Dictionaries 163 12.1 Dictionary Syntax............................................ 163 12.2 Dictionary Efficiency........................................... 164 12.3 Dictionary Examples........................................... 165 12.4 Lab: File Data and Collections...................................... 166 13 Classes 171 13.1 A First Class Example: Rational..................................... 171 13.2 Classes And Structs........................................... 177 13.3 Class Examples.............................................. 178 13.4 Book List Assignment.......................................... 181 13.5 Mercurial and Teamwork......................................... 185 ii 14 Interfaces 189 14.1 Fractions Revisited............................................ 189 14.2 CSProj Revisited............................................. 190 14.3 Group Game Project........................................... 194 15 Testing 201 15.1 Assertions................................................ 201 15.2 Attributes................................................. 201 15.3 Testing the Constructor.......................................... 202 15.4 Testing Rational Comparisons...................................... 203 15.5 Testing Rational Arithmetic....................................... 203 15.6 Testing Rational Conversions (to other types).............................. 204 15.7 Testing the Parsing Feature........................................ 204 15.8 Running the Tests............................................ 205 16 Acknowledgements 207 17 Change Log 209 18 TODO’s 211 Index 213 iii iv CHAPTER ONE CONTEXT 1.1 Introduction to the Notes These notes are designed for Comp 170. They are closely tied to the excellent C# introduction in Rob Miles’ free online C# Yellow Book. These notes will follow mostly the same order, adding some extra explanations, examples, and challenges, and intro- duce the Mono open source implementation of C#. The content here will be interspersed with comments about where to look at parts of Miles book, with clarifications of the book and comments about what is not important for a beginner in the book. Computer programs are designed to run on a computer and solve problems. Though the initial problems will be tiny and often silly, they will serve as learning tools to prepare for substantive problems. 1.2 Comments on Miles Chapter 1 Miles Chapter 1 on Computers and Programs makes a good introduction and gives context. Read for the grounding it gives. The chapter makes some reference to Microsoft, the original creator of C#, and its Visual Studio software development environment, which works only on Windows machines, and costs a lot if you are not a student. The optional text by Lewis discussed Visual Studio at some length. The next section of these notes will introduce an alternative to the Microsoft environment: Mono, which is free, open-source software that makes C# available for multiple platforms: Windows, Mac, or Linux machines. 1 Introductory Programming in C#, Release 1.0 2 Chapter 1. Context CHAPTER TWO C# DATA AND OPERATIONS 2.1 Development Tools 2.1.1 About Software Development Kits (SDKs) A software development kit (SDK) is a set of tools for developing in a particular programming language (in our class, C#). Developing in a language means everything from compiling to running and (when things go wrong) to debugging programs. The Microsoft SDK is the proprietary implementation of .Net. It runs only on Windows and is the primary development framework for all things Microsoft. The Mono Project SDK <http://mono-project.com> is the free/open source equivalent implementation of the Microsoft SDK. It runs on all major platforms (including Windows) and is needed in situations where you want to develop .Net applications on non-Windows platforms. As an interesting aside, the company whose developers lead the work on the Mono SDK are working on commercial tools that allow you to develop/run applications written in .Net on Apple iOS and Android mobile devices (phones and tablets). 2.1.2 About Integrated Development Environments (IDE) While just about everything you need to create programs can, indeed, be found in the SDK, it is not long before you wish there were an “app for that” so to speak. While most programmers who developed code (like your instructors) in the 1970s-1990s learned to program directly with the SDK using the command line, today’s programmers largely to prefer working in an IDE. There are two major IDEs for .Net development, which we explain briefly below: • Visual Studio is the Microsoft IDE that interfaces directly to the Microsoft SDK. • MonoDevelop is the free/open source IDE for developing applications using the Mono SDK on Windows and all other platforms (in particular, Linux and OS X). In addition, there is another Windows-specific IDE, SharpDevelop, that inspired the creation of MonoDevelop. It is still actively maintained and provides a somewhat “lighter weight” alternative to Visual Studio for Windows
Recommended publications
  • Ironpython in Action
    IronPytho IN ACTION Michael J. Foord Christian Muirhead FOREWORD BY JIM HUGUNIN MANNING IronPython in Action Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> IronPython in Action MICHAEL J. FOORD CHRISTIAN MUIRHEAD MANNING Greenwich (74° w. long.) Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. Sound View Court 3B fax: (609) 877-8256 Greenwich, CT 06830 email: [email protected] ©2009 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15% recycled and processed without the use of elemental chlorine.
    [Show full text]
  • Opening Presentation
    Mono Meeting. Miguel de Icaza [email protected] October 24, 2006 Mono, Novell and the Community. Mono would not exist without the community: • Individual contributors. • Companies using Mono. • Organizations using Mono. • Companies using parts of Mono. • Google Summer of Code. Introductions. 2 Goals of the Meeting. A chance to meet. • Most of the Novell/Mono team is here. • Many contributors are here. • Various breaks to talk. Talk to others! • Introduce yourself, ask questions. Talk to us! • Frank Rego, Mono's Product Manager is here. • Tell us what you need in Mono. • Tell us about how you use Mono. 3 Project Status Goals Originally: • Improve our development platform on Linux. As the community grew: • Expand to support Microsoft APIs. As Mono got more complete: • Provide a complete cross platform runtime. • Allow Windows developers to port to Linux. 5 Mono Stacks and Goals. MySMQySQLL//PPosstgtrgesrsess EvEovolluutitioonn# # ASP.NET Novell APIs: MMoozzillala Novell iFolder iFolder, LDAP, Identity ADO.NET ApAapchachee MMonoono DesktoGpTK#: GTK# OpNoevenlOl LfDfAiPce GCneomceil# Windows.Forms JavaJa vCa oCommpaatitbilbitiylity Google APIs Microsoft Compatibility Libraries Mono Libraries Mono Runtime (Implementation of ECMA #335) 6 Platforms, CIL, Code Generation. 7 API space Mono 1.0: July 2004 “T-Bone” Mono 1.2: November 2006 “Rump steak” Mono 1.2 bits. Reliability and C# 2.0, .NET 2.0 scalability: • Complete. • With VM support. • ZenWorks and iFolder • Some 2.0 API support. pushed Mono on the server. • IronPython works. • xsp 1.0: 8 request/second. • xsp 1.2: 250 Debugger: request/second. • x86 and x86-64 debugger. GUI • CLI-only, limited in scenarios (no xsp).
    [Show full text]
  • Visual Studio for Mono Development
    Visual Studio for Mono Development By Francisco “Paco” Martinez Overview ●Introduction ●Mono and Gtk# installers for Windows ●VSPrj2Make: An add-in for Visual Studio ●Distributing your Creation ●What's Next? ●Q&A Demo I Creating a quick Gtk# editor application using Visual Studio and Glade. Introduction ●Background Even if most of the coding and advances of Mono takes place on Linux, there are many Windows and .NET developers that may only have access to computers that run Windows and/or feel most comfortable developing in a Microsoft centric world. Another convincing argument for using the Visual Studio IDE is the benefits of its integrated debugger that permits step-by-step iterations anytime during the coding process. Introduction (continued) ●Prerequisites – The OS: Windows 2000 or Windows XP – Visual Studio .NET 2003 (standard ed. or better) – Gtk# Installer for .NET Framework SDK – VSPrj2Make Visual Studio Add-in – One or more versions of the Mono Combined Installer for Windows Introduction (continued) ●Other Useful Tools – Gtk# Windows Help for Visual Studio – MonoLaunch – GRE Installer for Gecko# – Inno Setup and InstallerMaker – Cygwin and/or Msys Mono and Gtk# Installers for Windows ●Mono Combined Installer for Windows – Does not require .NET SDK or Redistributable – Does not require Cygwin – Contains sufficient libraries (GNU, GTK+ and GNOME) to satisfy the managed libraries that bind to them. – Does not touch the Global PATH or other environment variables – this is key to permit coexistence of different versions on the same
    [Show full text]
  • Design Pattern Interview Questions
    DDEESSIIGGNN PPAATTTTEERRNN -- IINNTTEERRVVIIEEWW QQUUEESSTTIIOONNSS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright © tutorialspoint.com Dear readers, these Design Pattern Interview Questions have been designed specially to get you acquainted with the nature of questions you may encounter during your interview for the subject of Design Pattern. As per my experience good interviewers hardly plan to ask any particular question during your interview, normally questions start with some basic concept of the subject and later they continue based on further discussion and what you answer: What are Design Patterns? Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. These solutions were obtained by trial and error by numerous software developers over quite a substantial period of time. What is Gang of Four GOF? In 1994, four authors Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides published a book titled Design Patterns - Elements of Reusable Object-Oriented Software which initiated the concept of Design Pattern in Software development. These authors are collectively known as Gang of Four GOF. Name types of Design Patterns? Design patterns can be classified in three categories: Creational, Structural and Behavioral patterns. Creational Patterns - These design patterns provide a way to create objects while hiding the creation logic, rather than instantiating objects directly using new opreator. This gives program more flexibility in deciding which objects need to be created for a given use case. Structural Patterns - These design patterns concern class and object composition. Concept of inheritance is used to compose interfaces and define ways to compose objects to obtain new functionalities.
    [Show full text]
  • Logview Studio Linux Preparation with Mono
    LogView Studio Linux Preparation with Mono 2014 by Dominik Schmidt [email protected] © 2014 Dominik Schmidt / Holger Hemmecke I LogView Studio Table of Contents Part I Linux Prepare 1 1 SSH Co..n..n..e..c..t. ........................................................................................................................ 1 2 Raspbe..r.r.y.. .P..i. ......................................................................................................................... 4 System Prepar..a..t.i.o...n.. ............................................................................................................................................... 5 Mono .......................................................................................................................................................... 6 Install Mono......................................................................................................................................................... 7 Compile Mon..o.. .f.r..o..m.. .T..A...R....................................................................................................................................... 8 Compile Mon..o.. .f.r..o..m.. .G...I.T........................................................................................................................................ 9 Testing ......................................................................................................................................................... 10 3 Cubie.t.r.u..c..k.. .........................................................................................................................
    [Show full text]
  • Designpatternsphp Documentation Release 1.0
    DesignPatternsPHP Documentation Release 1.0 Dominik Liebler and contributors Jul 18, 2021 Contents 1 Patterns 3 1.1 Creational................................................3 1.1.1 Abstract Factory........................................3 1.1.2 Builder.............................................8 1.1.3 Factory Method......................................... 13 1.1.4 Pool............................................... 18 1.1.5 Prototype............................................ 21 1.1.6 Simple Factory......................................... 24 1.1.7 Singleton............................................ 26 1.1.8 Static Factory.......................................... 28 1.2 Structural................................................. 30 1.2.1 Adapter / Wrapper....................................... 31 1.2.2 Bridge.............................................. 35 1.2.3 Composite............................................ 39 1.2.4 Data Mapper.......................................... 42 1.2.5 Decorator............................................ 46 1.2.6 Dependency Injection...................................... 50 1.2.7 Facade.............................................. 53 1.2.8 Fluent Interface......................................... 56 1.2.9 Flyweight............................................ 59 1.2.10 Proxy.............................................. 62 1.2.11 Registry............................................. 66 1.3 Behavioral................................................ 69 1.3.1 Chain Of Responsibilities...................................
    [Show full text]
  • Dotnet for Java Developers.Pdf
    EDITION 1.0 DOWNLOAD available at: https://aka.ms/dotnet-forjavadevs PUBLISHED BY DevDiv, .NET and Visual Studio product teams A division of Microsoft Corporation One Microsoft Way Redmond, Washington 98052-6399 Copyright © 2018 by Microsoft Corporation All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher. This book is provided “as-is” and expresses the author’s views and opinions. The views, opinions, and information expressed in this book, including URL and other Internet website references, may change without notice. Some examples depicted herein are provided for illustration only and are fictitious. No real association or connection is intended or should be inferred. Microsoft and the trademarks listed at http://www.microsoft.com on the “Trademarks” webpage are trademarks of the Microsoft group of companies. All other marks are property of their respective owners. .NET for Java Developers Prepared for Microsoft by Ted Neward, Principal, Neward & Associates, LLC Contents Introduction 1 History 3 Of components, managed environments, and code 3 Hello, .NET 5 Hello, strange new world 9 Getting Started: Tooling 10 Hello, web? 10 Docker all the things! 10 Linux .NET? 10 Visual Studio Code 11 Mac .NET? 12 Windows: Visual Studio 14 Hello, dotnet: CLI style 15 Hello, .NET: IDE style 16 Solutions and projects 18 Goodbye, HelloWorld 19 C#, Succinctly 20 C# Basics 20 Starting exploration: classes, properties, and methods 21 Lambdas, type inference, and extension classes 25 Language-INtegrated Query (LINQ) 27 Asynchronous programming with Async/Await 28 Frameworks, for the Win! 29 ASP.NET Core Web API 30 ASP.NET Core MVC 33 Entity Framework Core 35 Wrapping Up 39 iii Introduction When I was about eight years old, my parents took my sister and me to Paris, France.
    [Show full text]
  • Crossplatform ASP.NET with Mono
    CrossPlatform ASP.NET with Mono Daniel López Ridruejo [email protected] About me Open source: Original author of mod_mono, Comanche, several Linux Howtos and the Teach Yourself Apache 2 book Company: founder of BitRock, multiplatform installers and management software About this presentation The .NET framework An overview of Mono, a multiplatform implementation of the .NET framework mod_mono : run ASP.NET on Linux using Apache and Mono The Microsoft .Net initiative Many things to many people, we are interested in a subset: the .NET framework Common Language Runtime execution environment Comprehensive set of class libraries As other technologies, greatly hyped. But is a solid technical foundation that stands on its own merits The .NET Framework .NET Highlights (1) Common Language Runtime : Provides garbage collection, resource management, threads, JIT support and so on. Somewhat similar to JVM Common Intermediate Language, multiple language support: C#, Java, Visual Basic, C++, JavaScript, Perl, Python, Eiffel, Fortran, Scheme, Pascal Cobol… They can interoperate and have access to full .NET capabilities. Similar to Java bytecode .NET Highlights (2) Comprehensive Class Library: XML, ASP.NET, Windows Forms, Web Services, ADO.NET Microsoft wants .NET to succeed in other platforms: standardization effort at ECMA, Rotor sample implementation. P/Invoke: Easy to incorporate and interoperate with existing code Attributes, delegates, XML everywhere Mono Project Open Source .NET framework implementation. Covers ECMA standard plus
    [Show full text]
  • Programming with Windows Forms
    A P P E N D I X A ■ ■ ■ Programming with Windows Forms Since the release of the .NET platform (circa 2001), the base class libraries have included a particular API named Windows Forms, represented primarily by the System.Windows.Forms.dll assembly. The Windows Forms toolkit provides the types necessary to build desktop graphical user interfaces (GUIs), create custom controls, manage resources (e.g., string tables and icons), and perform other desktop- centric programming tasks. In addition, a separate API named GDI+ (represented by the System.Drawing.dll assembly) provides additional types that allow programmers to generate 2D graphics, interact with networked printers, and manipulate image data. The Windows Forms (and GDI+) APIs remain alive and well within the .NET 4.0 platform, and they will exist within the base class library for quite some time (arguably forever). However, Microsoft has shipped a brand new GUI toolkit called Windows Presentation Foundation (WPF) since the release of .NET 3.0. As you saw in Chapters 27-31, WPF provides a massive amount of horsepower that you can use to build bleeding-edge user interfaces, and it has become the preferred desktop API for today’s .NET graphical user interfaces. The point of this appendix, however, is to provide a tour of the traditional Windows Forms API. One reason it is helpful to understand the original programming model: you can find many existing Windows Forms applications out there that will need to be maintained for some time to come. Also, many desktop GUIs simply might not require the horsepower offered by WPF.
    [Show full text]
  • Protobuild Documentation Release Latest
    Protobuild Documentation Release latest June Rhodes Aug 24, 2017 General Information 1 User Documentation 3 1.1 Frequently Asked Questions.......................................3 1.2 GitHub..................................................6 1.3 Twitter..................................................6 1.4 Contributing...............................................6 1.5 Getting Started..............................................8 1.6 Getting Started..............................................8 1.7 Defining Application Projects...................................... 11 1.8 Defining Console Projects........................................ 14 1.9 Defining Library Projects........................................ 15 1.10 Defining Content Projects........................................ 16 1.11 Defining Include Projects........................................ 18 1.12 Defining External Projects........................................ 20 1.13 Migrating Existing C# Projects..................................... 24 1.14 Customizing Projects with Properties.................................. 25 1.15 Changing Module Properties....................................... 34 1.16 Including Submodules.......................................... 36 1.17 Package Management with Protobuild.................................. 37 1.18 Package Management with NuGet.................................... 40 1.19 Creating Packages for Protobuild.................................... 42 1.20 Code Signing for iOS.......................................... 46 1.21 Targeting the Web
    [Show full text]
  • Arxiv:1712.09569V2
    Two Datasets of Questions and Answers for Studying the Development of Cross-platform Mobile Applications using Xamarin Framework Matias Martinez University of Valenciennes, France Abstract Context: A cross-platform mobile application is an application that runs on multiple mobile platforms (Android, iOS). Several frameworks, have been pro- posed to simplify the development of cross-platform mobile applications and, therefore, to reduce development and maintenance costs. Between them, the cross-compiler mobile development frameworks, such as Xamarin from Mi- crosoft, transform the application’s code written in intermediate (aka non- native) language to native code for each desired platform. However, to our best knowledge, there is no much research about the advantages and disadvan- tages of the use of those frameworks during the development and maintenance phases of mobile applications. Objective: The objective of this paper is twofold. Firstly, to present two datasets of questions and answers (Q&A) related to the development of mobile applications using Xamarin. Secondly, to show their usefulness, we present a replication study for discovering the main discussion topics of Xamarin devel- opment. Method: We created the two datasets by mining two Q&A sites: Xamarin Forum and Stack Overflow. Then, for discovering the main topics of the ques- tions from both datasets, we replicated a study that applies Latent Dirichlet Allocation (LDA). Finally, we compared the discovered topics with those topics about general mobile development reported by a previous study. arXiv:1712.09569v2 [cs.SE] 9 Jul 2018 Results: Our datasets have 85,908 questions mined from the Xamarin Fo- rum and 44,434 from Stack Overflow.
    [Show full text]
  • Ultimate C#, .Net Interview Q&AE-Book
    Register your resume: www.terrafirmajobs.com _________________________________________________ www.terrafirmajobs.com Ultimate C#, .Net Interview Q&AE-book Free E-books available with Terra Firma Java Interview Q&A Terra Firma’s Interview Kit Are you stressed at your Desk Restore the rhythm of your life IT Resume writing tips Heart-Care Tips To get these free e-books, email to: [email protected] with the title of the e-book. Copy Right Note You are permitted to freely distribute/print the unmodified version of this issue/e-book/article. We are not attempting to obtain commercial benefit from the valuable work of the authors and the Editor/Publisher claims the ‘fair use’ of copyrighted material. If you think that by publishing a particular material, your copyright has been violated, please let us know. The Editor/Publisher is not responsible for statements or opinions expressed herein nor do such statements necessarily express the views of Editor/Publisher. 1 More Career Tips: http://www.terrafirmajobs.com/ITpros/IT_resources.asp?id=4 ______________________________________________________________________________ Register your resume: www.terrafirmajobs.com _________________________________________________ Index Chapter Name Page 1) C# interview Questions and Answers. 4 1.1) Advance C# interview Questions 2) General Questions 17 2.1 ) General Questions 2.2 ) Methods and Property 2.3) Assembly Questions 2.4) XML Documentation Question 2.5) Debugging and Testing 3) ADO.net and Database Question 26 4) C#, DOT NET, XML, IIS Interview Questions 28 4.1 ) Framework. 4.2 ) COM 4.3 ) OOPS 4.4 ) C# Language Features 4.5 ) Access Specifier 4.6 ) Constructor / Destructor 4.7 ) ADO.net 4.8 ) ASP.net 4.8.1) Session.
    [Show full text]