Top Banner
Console Input / Output Reading and Writing to the Console Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical trainer www.nakov.com ttp://csharpfundamentals.telerik.com
44

4. Console Input Output - C# Fundamentals

May 14, 2015

Download

Education

C# Programming Fundamentals Course @ Telerik Academy
http://academy.telerik.com
This presentation introduces you to the console class - your go to environment in this course and show you all the tips and tricks of writing TO and reading FROM the console.
Main points:
The console class.
Printing and ouputting all your data - strings, numbers and special characters.
Reading user input from the console
Best practices
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 4. Console Input Output - C# Fundamentals

Console Input / Output

Reading and Writing to the Console

Svetlin Nakov

Telerik Software Academyacademy.telerik.com

Manager Technical trainerwww.nakov.com

http://csharpfundamentals.telerik.com

Page 2: 4. Console Input Output - C# Fundamentals

Table of Contents Printing to the Console

Printing Strings and Numbers Reading from the Console

Reading Characters Reading Strings Parsing Strings to Numeral Types Reading Numeral Types

Various Examples

2

Page 3: 4. Console Input Output - C# Fundamentals

Printing to the ConsolePrinting Strings, Numeral Types and

Expressions

Page 4: 4. Console Input Output - C# Fundamentals

Printing to the Console Console is used to display information in a text window

Can display different values: Strings Numeral types All primitive data types

To print to the console use the class Console (System.Console)

4

Page 5: 4. Console Input Output - C# Fundamentals

The Console Class Provides methods for console input and output Input

Read(…) – reads a single character

ReadKey(…) – reads a combination of keys

ReadLine(…) – reads a single line of characters

Output Write(…) – prints the specified

argument on the console

WriteLine(…) – prints specified data to the console and moves to the next line

5

Page 6: 4. Console Input Output - C# Fundamentals

Console.Write(…)

Printing more than one variable using a formatting string

6

int a = 15;...Console.Write(a); // 15

Printing an integer variable

double a = 15.5;int b = 14;...Console.Write("{0} + {1} = {2}", a, b, a + b);// 15.5 + 14 = 29.5

Next print operation will start from the same line

Page 7: 4. Console Input Output - C# Fundamentals

Console.WriteLine(…)

7

Printing more than one variable using a formatting string

string str = "Hello C#!";...Console.WriteLine(str);

Printing a string variable

string name = "Marry";int year = 1987;...Console.WriteLine("{0} was born in {1}.", name, year);// Marry was born in 1987.

Next printing will start from the new line

Page 8: 4. Console Input Output - C# Fundamentals

Printing to the Console – Example

8

static void Main(){ string name = "Peter"; int age = 18; string town = "Sofia";

Console.Write("{0} is {1} years old from {2}.", name, age, town); // Result: Peter is 18 years old from Sofia. Console.Write("This is on the same line!"); Console.WriteLine("Next sentence will be" + " on a new line.");

Console.WriteLine("Bye, bye, {0} from {1}.", name, town);}

Page 9: 4. Console Input Output - C# Fundamentals

Formatting Strings {index[,alignment][:formatString]}

index The zero-based index of the

argument whose string representation is to be included at this position in the string

alignment A signed integer that indicates the

total length of the field into which the argument is inserted

a positive integer – right-aligned

a negative integer – left-aligned

Page 10: 4. Console Input Output - C# Fundamentals

Formatting Strings {index[,alignment][:formatString]}

formatString Specifies the format of the

corresponding argument's result string, e.g. "X", "C", "0.00"

Example:static void Main(){ double pi = 1.234; Console.WriteLine("{0:0.000000}", pi); // 1.234000}

Page 11: 4. Console Input Output - C# Fundamentals

Formatting Strings – Example

11

static void Main(){ int a=2, b=3; Console.Write("{0} + {1} =", a, b); Console.WriteLine(" {0}", a+b); // 2 + 3 = 5

Console.WriteLine("{0} * {1} = {2}", a, b, a*b); // 2 * 3 = 6

float pi = 3.14159206; Console.WriteLine("{0:F2}", pi); // 3,14 Console.WriteLine("Bye – Bye!");}

Page 12: 4. Console Input Output - C# Fundamentals

Printing a Menu – Example

12

double colaPrice = 1.20;string cola = "Coca Cola";double fantaPrice = 1.20;string fanta = "Fanta Dizzy";double zagorkaPrice = 1.50;string zagorka = "Zagorka";

Console.WriteLine("Menu:");Console.WriteLine("1. {0} – {1}",

cola, colaPrice);Console.WriteLine("2. {0} – {1}",

fanta, fantaPrice);Console.WriteLine("3. {0} – {1}",

zagorka, zagorkaPrice);Console.WriteLine("Have a nice day!");

Page 13: 4. Console Input Output - C# Fundamentals

Printing to the

ConsoleLive Demo

Page 14: 4. Console Input Output - C# Fundamentals

Reading from the ConsoleReading Strings and Numeral Types

Page 15: 4. Console Input Output - C# Fundamentals

Reading from the Console

We use the console to read information from the command line

We can read:

Characters

Strings

Numeral types (after conversion)

To read from the console we use the methods Console.Read() and Console.ReadLine()

15

Page 16: 4. Console Input Output - C# Fundamentals

Console.Read() Gets a single character from the

console (after [Enter] is pressed) Returns a result of type int

Returns -1 if there aren’t more symbols

To get the actually read character we need to cast it to char

16

int i = Console.Read();char ch = (char) i; // Cast the int to char

// Gets the code of the entered symbolConsole.WriteLine("The code of '{0}' is {1}.", ch, i);

Page 17: 4. Console Input Output - C# Fundamentals

Reading Characters from

the ConsoleLive Demo

Page 18: 4. Console Input Output - C# Fundamentals

Console.ReadKey() Waits until a combination of keys is

pressed

Reads a single character from console or a combination of keys

Returns a result of type ConsoleKeyInfo

KeyChar – holds the entered character

Modifiers – holds the state of [Ctrl], [Alt], …

18

ConsoleKeyInfo key = Console.ReadKey();Console.WriteLine();Console.WriteLine("Character entered: " + key.KeyChar);Console.WriteLine("Special keys: " + key.Modifiers);

Page 19: 4. Console Input Output - C# Fundamentals

Reading Keys from the Console

Live Demo

Page 20: 4. Console Input Output - C# Fundamentals

Console.ReadLine()

Gets a line of characters Returns a string value Returns null if the end of the input

is reached

20

Console.Write("Please enter your first name: ");string firstName = Console.ReadLine();

Console.Write("Please enter your last name: ");string lastName = Console.ReadLine();

Console.WriteLine("Hello, {0} {1}!", firstName, lastName);

Page 21: 4. Console Input Output - C# Fundamentals

Reading Strings from the Console

Live Demo

Page 22: 4. Console Input Output - C# Fundamentals

Reading Numeral Types Numeral types can not be read directly

from the console To read a numeral type do the

following:

1.Read a string value

2.Convert (parse) it to the required numeral type

int.Parse(string) Parses (converts) a string to int

22

string str = Console.ReadLine()int number = int.Parse(str);

Console.WriteLine("You entered: {0}", number);

Page 23: 4. Console Input Output - C# Fundamentals

Converting Strings to Numbers

Numeral types have a method Parse(…) for extracting the numeral value from a string int.Parse(string) – string int long.Parse(string) – string long float.Parse(string) – string float

Causes FormatException in case of error

23

string s = "123";int i = int.Parse(s); // i = 123long l = long.Parse(s); // l = 123L

string invalid = "xxx1845";int value = int.Parse(invalid); // FormatException

Page 24: 4. Console Input Output - C# Fundamentals

Reading Numbers fromthe Console – Example

24

static void Main(){ int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine());

Console.WriteLine("{0} + {1} = {2}", a, b, a+b); Console.WriteLine("{0} * {1} = {2}", a, b, a*b);

float f = float.Parse(Console.ReadLine()); Console.WriteLine("{0} * {1} / {2} = {3}", a, b, f, a*b/f);}

Page 25: 4. Console Input Output - C# Fundamentals

Converting Stringsto Numbers (2)

Converting can also be done using the methods of the Convert class Convert.ToInt32(string) – string int Convert.ToSingle(string)– string float

Convert.ToInt64(string)– string long It uses the parse methods of the

numeral types

25

string s = "123";int i = Convert.ToInt32(s); // i = 123long l = Convert.ToInt64(s); // l = 123L

string invalid = "xxx1845";int value = Convert.ToInt32(invalid); // FormatException

Page 26: 4. Console Input Output - C# Fundamentals

Reading Numbers from the ConsoleLive Demo

Page 27: 4. Console Input Output - C# Fundamentals

Error Handling when Parsing

Sometimes we want to handle the errors when parsing a number Two options: use try-catch block or TryParse()

Parsing with TryParse():

27

string str = Console.ReadLine();int number;if (int.TryParse(str, out number)){ Console.WriteLine("Valid number: {0}", number);}else{ Console.WriteLine("Invalid number: {0}", str);}

Page 28: 4. Console Input Output - C# Fundamentals

Parsing with TryParse()

Live Demo

Page 29: 4. Console Input Output - C# Fundamentals

Regional SettingsPrinting and Reading Special

CharactersRegional Settings and the Number

Formatting

Page 30: 4. Console Input Output - C# Fundamentals

How to Print SpecialCharacters on the

Console? Printing special characters on the

console needs two steps: Change the console properties

to enable Unicode-friendly font

Enable Unicode for the Consoleby adjusting its output encoding

Prefer UTF8 (Unicode)

30

using System.Text;…Console.OutputEncoding = Encoding.UTF8;Console.WriteLine("Това е кирилица: ☺");

Page 31: 4. Console Input Output - C# Fundamentals

Decimal Separator The currency format and number formats are different in different countries E.g. the decimal separator could be

"." or ","

To ensure the decimal separator is "." use the following code:

31

using System.Threading;using System.Globalization;…Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;Console.WriteLine(3.54); // 3.54decimal value = decimal.Parse("1.33");

Page 32: 4. Console Input Output - C# Fundamentals

Regional SettingsLive Demo

Page 33: 4. Console Input Output - C# Fundamentals

Reading and Printing to the

ConsoleVarious Examples

Page 34: 4. Console Input Output - C# Fundamentals

Printing a Letter – Example

34

Console.Write("Enter person name: ");string person = Console.ReadLine();

Console.Write("Enter company name: ");string company = Console.ReadLine();

Console.WriteLine(" Dear {0},", person);Console.WriteLine("We are pleased to tell you " + "that {1} has chosen you to take part " + "in the \"Introduction To Programming\" " + "course. {1} wishes you good luck!", person, company);

Console.WriteLine(" Yours,");Console.WriteLine(" {0}", company);

Page 35: 4. Console Input Output - C# Fundamentals

Printing a LetterLive Demo

Page 36: 4. Console Input Output - C# Fundamentals

Calculating Area – Example

36

Console.WriteLine("This program calculates " + "the area of a rectangle or a triangle");

Console.Write("Enter a and b (for rectangle) " + " or a and h (for triangle): ");int a = int.Parse(Console.ReadLine());int b = int.Parse(Console.ReadLine());

Console.Write("Enter 1 for a rectangle or 2 " + "for a triangle: ");

int choice = int.Parse(Console.ReadLine());double area = (double) (a*b) / choice;Console.WriteLine("The area of your figure " + " is {0}", area);

Page 37: 4. Console Input Output - C# Fundamentals

Calculating AreaLive Demo

Page 38: 4. Console Input Output - C# Fundamentals

Summary We have discussed the basic input and output methods of the class Console Write(…) and WriteLine(…)

Used to write values to the console

Read(…) and ReadLine(…) Used to read values from the

console

Parsing numbers to strings int.Parse(…), double.Parse(…), …

38

Page 39: 4. Console Input Output - C# Fundamentals

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

Console Input / Output

http://academy.telerik.com

Page 40: 4. Console Input Output - C# Fundamentals

Exercises1. Write a program that reads 3 integer

numbers from the console and prints their sum.

2. Write a program that reads the radius r of a circle and prints its perimeter and area.

3. A company has name, address, phone number, fax number, web site and manager. The manager has first name, last name, age and a phone number. Write a program that reads the information about a company and its manager and prints them on the console.

40

Page 41: 4. Console Input Output - C# Fundamentals

Exercises (2)4. Write a program that reads two positive

integer numbers and prints how many numbers p exist between them such that the reminder of the division by 5 is 0 (inclusive). Example: p(17,25) = 2.

5. Write a program that gets two numbers from the console and prints the greater of them. Don’t use if statements.

6. Write a program that reads the coefficients a, b and c of a quadratic equation ax2+bx+c=0 and solves it (prints its real roots).

41

Page 42: 4. Console Input Output - C# Fundamentals

Exercises (3)7. Write a program that gets a number n

and after that gets more n numbers and calculates and prints their sum.

8. Write a program that reads an integer number n from the console and prints all the numbers in the interval [1..n], each on a single line.

9. Write a program to print the first 100 members of the sequence of Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, …

10.Write a program to calculate the sum (with accuracy of 0.001): 1 + 1/2 - 1/3 + 1/4 - 1/5 + ...

42

Page 43: 4. Console Input Output - C# Fundamentals

Exercises (4)11.* Implement the "Falling Rocks" game in

the text console. A small dwarf stays at the bottom of the screen and can move left and right (by the arrows keys). A number of rocks of different sizes and forms constantly fall down and you need to avoid a crash.

43

^ @ * * & + % $ + . +++ # ! + ; * . * ++ . * -- ; . (O) @

t

Rocks are the symbols ^, @, *, &, +, %, $, #, !, ., ;, - distributed with appropriate density. The dwarf is (O). Ensure a constant game speed by Thread.Sleep(150).

Implement collision detection and scoring system.

Page 44: 4. Console Input Output - C# Fundamentals

Free Trainings @ Telerik Academy

Fundamentals of C# ProgrammingCourse csharpfundamentals.telerik.com

Telerik Software Academy academy.telerik.com

Telerik Academy @ Facebook facebook.com/TelerikAcademy

Telerik Software Academy Forums forums.academy.telerik.com