C / C++ and Unix Programming. Materials adapted from Dan Hood and Dianna Xu



Similar documents
Informatica e Sistemi in Tempo Reale

Fundamentals of Programming

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Sources: On the Web: Slides will be available on:

The programming language C. sws1 1

Keywords are identifiers having predefined meanings in C programming language. The list of keywords used in standard C are : unsigned void

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

As previously noted, a byte can contain a numeric value in the range Computers don't understand Latin, Cyrillic, Hindi, Arabic character sets!

ASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters

So far we have considered only numeric processing, i.e. processing of numeric data represented

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Boolean Data Outline

VB.NET Programming Fundamentals

Chapter One Introduction to Programming

5 Arrays and Pointers

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

About The Tutorial. Audience. Prerequisites. Copyright & Disclaimer

3/13/2012. Writing Simple C Programs. ESc101: Decision making using if-else and switch statements. Writing Simple C Programs

C Programming Tutorial

Pemrograman Dasar. Basic Elements Of Java

CS 106 Introduction to Computer Science I

Simple C Programs. Goals for this Lecture. Help you learn about:

CSC230 Getting Starting in C. Tyler Bletsch

Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand:

Number Representation

Selection Statements

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

Introduction to Java

Object Oriented Software Design

COS 217: Introduction to Programming Systems

Computer Programming Tutorial

Introduction to Java Applications Pearson Education, Inc. All rights reserved.

How To Write Portable Programs In C

CS1020 Data Structures and Algorithms I Lecture Note #1. Introduction to Java

The C Programming Language course syllabus associate level

C Programming. for Embedded Microcontrollers. Warwick A. Smith. Postbus 11. Elektor International Media BV. 6114ZG Susteren The Netherlands

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

C++ Language Tutorial

First Java Programs. V. Paúl Pauca. CSC 111D Fall, Department of Computer Science Wake Forest University. Introduction to Computer Science

Variables, Constants, and Data Types

PROGRAMMING IN C PROGRAMMING IN C CONTENT AT A GLANCE

JavaScript: Control Statements I

Lecture 2 Notes: Flow of Control

Lecture 22: C Programming 4 Embedded Systems

J a v a Quiz (Unit 3, Test 0 Practice)

Simple C++ Programs. Engineering Problem Solving with C++, Etter/Ingber. Dev-C++ Dev-C++ Windows Friendly Exit. The C++ Programming Language

C PROGRAMMING FOR MATHEMATICAL COMPUTING

Object Oriented Software Design

1. Boolean Data Type & Expressions Outline. Basic Data Types. Numeric int float Non-numeric char

JAVA - QUICK GUIDE. Java SE is freely available from the link Download Java. So you download a version based on your operating system.

Phys4051: C Lecture 2 & 3. Comment Statements. C Data Types. Functions (Review) Comment Statements Variables & Operators Branching Instructions

Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C

Outline. Conditional Statements. Logical Data in C. Logical Expressions. Relational Examples. Relational Operators

Tutorial on C Language Programming

Secrets of printf. 1 Background. 2 Simple Printing. Professor Don Colton. Brigham Young University Hawaii. 2.1 Naturally Special Characters

Operating Systems. Privileged Instructions

CPSC 226 Lab Nine Fall 2015

Stacks. Linear data structures

C Language Tutorial. Version March, 1999

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

Java Interview Questions and Answers

CP Lab 2: Writing programs for simple arithmetic problems

C++ Input/Output: Streams

General Software Development Standards and Guidelines Version 3.5

Chapter 2: Elements of Java

UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming

Introduction to Python

Java Basics: Data Types, Variables, and Loops

AP Computer Science Java Subset

Programming Microcontrollers in C

arrays C Programming Language - Arrays

What is a Loop? Pretest Loops in C++ Types of Loop Testing. Count-controlled loops. Loops can be...

ELEC3730 Embedded Systems Lecture 1: Introduction and C Essentials

Objective-C Tutorial

6.S096 Lecture 1 Introduction to C

C++FA 5.1 PRACTICE MID-TERM EXAM

Example of a Java program

Chapter 3. Input and output. 3.1 The System class

High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)

Object-Oriented Programming in Java

1.00/ Session 2 Fall Basic Java Data Types, Control Structures. Java Data Types. 8 primitive or built-in data types

PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?

Computers. Hardware. The Central Processing Unit (CPU) CMPT 125: Lecture 1: Understanding the Computer

C++ Programming Language

The string of digits in the binary number system represents the quantity

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

CS 241 Data Organization Coding Standards

CS1010 Programming Methodology A beginning in problem solving in Computer Science. Aaron Tan 20 July 2015

In this Chapter you ll learn:

Introduction to Python

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code

Numbering Systems. InThisAppendix...

PHP Debugging. Draft: March 19, Christopher Vickery

Advanced Bash Scripting. Joshua Malone

Introduction to Visual C++.NET Programming. Using.NET Environment

An Incomplete C++ Primer. University of Wyoming MA 5310

1 Abstract Data Types Information Hiding

csce4313 Programming Languages Scanner (pass/fail)

Transcription:

C / C++ and Unix Programming Materials adapted from Dan Hood and Dianna Xu 1

C and Unix Programming Today s goals ú History of C ú Basic types ú printf ú Arithmetic operations, types and casting ú Intro to linux 2

UNIX History The UNIX operating system was born in the late 1960s. It originally began as a one man project led by Ken Thompson of Bell Labs, and has since grown to become the most widely used operating system. In the time since UNIX was first developed, it has gone through many different generations and even mutations. ú Some differ substantially from the original version, like Berkeley Software Distribution (BSD) or Linux. ú Others, still contain major portions that are based on the original source code. An interesting and rather up-to-date timeline of these variations of UNIX can be found at http://www.levenez.com/unix/history.html. 3

General Characteristics of UNIX as an Operating System (OS) Multi-user & Multi-tasking - most versions of UNIX are capable of allowing multiple users to log onto the system, and have each run multiple tasks. This is standard for most modern OSs. Over 40 Years Old - UNIX is over 40 years old and it's popularity and use is still high. Over these years, many variations have spawned off and many have died off, but most modern UNIX systems can be traced back to the original versions. It has endured the test of time. For reference, Windows at best is half as old (Windows 1.0 was released in the mid 80s, but it was not stable or very complete until the 3.x family, which was released in the early 90s). Large Number of Applications there are an enormous amount of applications available for UNIX operating systems. They range from commercial applications such as CAD, Maya, WordPerfect, to many free applications. Free Applications and Even a Free Operating System - of all of the applications available under UNIX, many of them are free. The compilers and interpreters that we use in most of the programming courses here can be downloaded free of charge. Most of the development that we do in programming courses is done under the Linux OS. Less Resource Intensive - in general, most UNIX installations tend to be much less demanding on system resources. In many cases, the old family computer that can barely run Windows is more than sufficient to run the latest version of Linux. Internet Development - Much of the backbone of the Internet is run by UNIX servers. Many of the more general web servers run UNIX with the Apache web server - another free application. 4

The C Language Currently one of the most commonly-used programming languages High-level assembly Small, terse but powerful Very portable:compiler exists for virtually every processor Produces efficient code It is at once loved and hated 5

History of C Developed during 1969-73 in the bell labs C is a by product of Unix C is mostly credited to Dennis Ritchie Evolved from B, which evolved from BCPL 6

History of C Original machine (DEC PDP-11) was very small ú 24k bytes of memory, ú 12k used for operating systems When I say small, I mean memory size, not actual size. 7

Why is C Dangerous C s small, unambitious feature set is an advantage and disadvantage The price of C s flexibility C does not, in general, try to protect a programmer from his/her mistakes The International Obfuscated C Code Contest s (http://www.ioccc.org/) 1995 winning entry 8

Programming Process Source code must carry extension.c But may be named with any valid Unix file name ú Example: 01-helloworld.c Lec # description C program Example program filename convention in this course 9

Example /* helloworld.c, Displays a message */ #include <stdio.h> int main() { printf( Hello, world!\n"); return 0; } helloworld.c 10

Hello World in C #include <stdio.h> Preprocessor used to share information among source files Similar to Java s import int main() { printf( Hello, world!\n ); return 0; } 11

Hello World in C #include <stdio.h> int main() { printf( Hello, world!\n ); return 0; } Program mostly a collection of functions main function special: the entry point int qualifier indicates function returns an integer I/O performed by a library function 12

The Compiler gcc (Gnu C Compiler) gcc g Wall helloworld.c o hw gcc flags ú -g (produce debugging info for gdb) ú -Wall (print warnings for all events) ú -o filename (name output file with filename, default is a.out) 13

Programming Process Summary Program (source) file compilation helloworld.c gcc g Wall helloworld.c o hw Object file C standard library linking/building Executable file hw All this is done under Unix 14

Case sensitive Ignores blanks Comments C Program Style 1. Ignored between /* and */ 2. Comments are integral to good programming! All local variables must be declared in the beginning of a function!!! 15

Integer Data Types ú C keyword: int, short, long ú Range: typically 32-bit (±2 billion), 16-bit, 64-bit Floating-point number ú C keyword: float, double ú Range: 32-bit (± 10 38 ), 64-bit In general, use double ú Examples: 0.67f, 123.45f, 1.2E-6f, 0.67, 123.45, 1.2E-6 16

Variables and Basic Operations Declaration (identify variables and type) int x; int y, z; Assignment (value setting) x = 1; y = value-returning-expression; Reference (value retrieval) y = x * 2; 17

Integer Constants ú const int year = 2002; Floating point number ú const double pi = 3.14159265; Constants are variables whose initial value can not be changed. Comparable to static final 18

Output characters Output Functions printf("text message\n"); Output an integer int x = 100; printf("value = %d\n", x); \n for new line Output: Value = 100 19

Variations Output a floating-point number double y = 1.23; printf("value = %f\n", y); Output multiple numbers int x = 100; double y = 1.23; 15 digits below decimal (excluding trailing 0 s) printf("x = %d, y = %f\n", x, y); Output: x = 100, y = 1.230000 20

printf Summary printf(" ", ); Text containing special symbols ú %d for an integer ú %f for a floating-point number ú \n for a newline List of variables (or expressions) ú In the order correspoding to the % sequence 21

Display Problem Problem ú Precision of double: 15 digits ú Precision of %f: 6 digits below decimal ú Cannot show all the significant digits Solution ú More flexible display format possible with printf 22

% Specification %i int, char (to show value) %d same as above (d for decimal) %f double (floating-point) %e double (exponential, e.g., 1.5e3) 23

Formatting Precision %.#f Width %#f, %#d ú Note: Entire width Zero-padding %0#d Left-justification %-#d Various combinations of the above Replace # with digit(s) 24

Formatting Example (1) %f with 1.23456789 >1.234568< %.10f with 1.23456789 >1.2345678900< %.2f with 1.23456789 >1.23< %d with 12345 >12345< %10d with 12345 > 12345< %2d with 12345 >12345< %f with 1.23456789 >1.234568< %8.2f with 1.23456789 > 1.23< 25

Formatting Example (2) %d:%d with 1 and 5 >1:5< %02d:%02d with 1 and 5 >01:05< %10d with 12345 > 12345< %-10d with 12345 >12345 < 11-formatting.c 26

Arithmetic Operators Unary: +, - (signs) Binary: +, -, * (multiplication), / (division), % (modulus, int remainder) Parentheses: ( and ) must always match. ú Good: (x), (x - (y - 1)) % 2 ú Bad: (x, )x( 27

Types and Casting Choose types carefully An arithmetic operation requires that the two values are of the same type For an expression that involves two different types, the compiler will cast the smaller type to the larger type Example: 4 * 1.5 = 6.0 28

Mixing Data Types int values only int ú 4 / 2 2 ú 3 / 2 1 ú int x = 3, y = 2; x / y 1 Involving a double value double ú 3.0 / 2 1.5 29

Assignment of Values int x; ú x = 1; ú x = 1.5; /* x is 1 */ double y; ú y = 1; /* y is 1.0 */ ú y = 1.5; ú y = 3 / 2; /* y is 1.0 */ warning int evaluation; warning 30

Example int i, j, k, l; double f; mixingtypes.c i = 3; j = 2; k = i / j; printf("k = %d\n", k); f = 1.5; l = f; /* warning */ printf("l = %d\n", l); /* truncated */ 31

sizeof and Type Conversions sizeof(type) ú The sizeof operator returns the number of bytes required to store the given type Implicit conversions ú arithmetic ú assignment ú function parameters ú function return type ú promotion if possible Explicit conversions ú casting int x; x = (int) 4.0; 32

Use of char (character) Basic operations ú Declaration: char c; ú Assignment: c = 'a'; ú Reference: c = c + 1; Constants ú Single-quoted character (only one) ú Special characters: '\n', '\t' (tab), '\"' (double quote), '\'' (single quote), '\ \' (backslash) 33

Characters are Integers A char type represents an integer value from 0 to 255 (1 byte) or 128 to 127. A single quoted character is called a character constant. C characters use ASCII representation: 'A' = 65 'Z' = 'A' + 25 = 90 'a' = 97 'z' = 'a' + 25 = 122 '0'!= 0 (48), '9' - '0' = 9 Never make assumptions of char values ú Always write 'A' instead of 65 34

ASCII Table American Standard Code for Information Interchange A standard way of representing the alphabet, numbers, and symbols (in computers) wikipedia on ASCII 35

Input char Input/Output ú char getchar() receives/returns a character ú Built-in function Output ú printf with %c specification int main() { chartypes.c char c; c = getchar(); printf("character >%c< has the value %d.\n", c, c); return 0; } 36

scanf Function scanf(" ", ); Format string containing special symbols ú %d for int ú %f for float ú %lf for double ú %c for char ú \n for a newline List of variables (or expressions) ú In the order correspoding to the % sequence 37

scanf Function The function scanf is the input analog of printf Each variable in the list MUST be prefixed with an &. Ignores white spaces unless format string contains %c 38

scanf Function int main() { int x; printf("enter a value:\n"); scanf("%d", &x); printf("the value is %d.\n", x); return 0; } 39

scanf with multiple variables int main() { scanf.c int x; char c; printf("enter an int and a char:"); scanf("%d %c", &x, &c); printf("the values are %d, %c.\n", x, c); return 0; } 40

scanf Function Each variable in the list MUST be prefixed with an &. Read from standard input (the keyboard) and tries to match the input with the specified pattern, one by one. If successful, the variable is updated; otherwise, no change in the variable. The process stops as soon as scanf exhausts its format string, or matching fails. Returns the number of successful matches. 41

scanf Continued White space in the format string match any amount of white space, including none, in the input. Leftover input characters, if any, including one \n remain in the input buffer, may be passed onto the next input function. ú Use getchar() to consume extra characters ú If the next input function is also scanf, it will ignore \n (and any white spaces). 42

scanf Notes Beware of combining scanf and getchar(). Use of multiple specifications can be both convenient and tricky. ú Experiment! Remember to use the return value for error checking. 43

if-else Statement int main() { int choice; scanf("%d", &choice); //user input } if (choice == 1) { printf("the choice was 1.\n"); } else { printf("the choice wasn't 1.\n"); } return 0; menu.c 44

Expressions Numeric constants and variables E.g., 1, 1.23, x Value-returning functions E.g., getchar() Expressions connected by an operator E.g., 1 + 2, x * 2, getchar()-1 All expressions have a type 45

Boolean Expressions C does not have type boolean False is represented by integer 0 Any expression evaluates to non-zero is considered true True is typically represented by 1 however 46

Conditional Expressions Equality/Inequality ú if (x == 1) ú if (x!= 1) Relation ú if (x > 0) > ú if (x >= 0) ú if (x < 0) < ú if (x <= 0) == (equality) = (assignment) The values are internally represented as integer. true 1 (not 0), false 0 47

Assignment as Expression Assignment ú Assignments are expressions ú Evaluates to value being assigned Example int x = 1, y = 2, z = 3; x = (y = z); 3 3 3 evaluates to 3 evaluates to 3 (true) if (x = 3) {... } 48

Complex Condition And Or if ((x > 0) && (x <= 10)) if ((x > 10) (x < -10)) Negation if (!(x > 0)) not (x > 0) x 0 0 < x 10 x > 10 Beware that & and are also C operators 49

Lazy Logical Operator Evaluation If the conditions are sufficient to evaluate the entire expression, the evaluation terminates at that point => lazy Examples ú if ((x > 0) && (x <= 10)) Terminates if (x > 0) fails ú if ((x > 10)&&(x < 20)) (x < -10)) Terminates if (x > 10) && (x < 20) succeeds 50

Use of Braces if (choice == 1) { printf("1\n"); } else { printf("other\n"); } if (choice == 1) printf("1\n"); else printf("other\n"); When the operation is a single statement, '{' and '}' can be omitted. 51

switch Statement switch (integer expression) { case constant: statements Multi-branching break; case constant: statements break; possibly more cases default: statements } 52

break Fall Through Omitting break in a switch statement will cause program control to fall through to the next case Can be a very convenient feature Also generates very subtle bugs switch statements only test equality with integers 53

Example int x, y, result = 0; scanf("%d %d", &x, &y); switch(x) { case 1: break; case 2: case 3: result = 100; case 4: switch(y) { case 5: result += 200; break; default: result = -200; break; } break; default: result = 400; break; } 54

while Loops while (true) { /* some operation */ } 55

while and Character Input EOF is a constant defined in stdio.h ú Stands for End Of File int main() { int nc = 0, nl = 0; char c; charloop.c while ((c = getchar())!= EOF) { nc++; if (c == '\n') nl++; } printf("number of chars is %d and number of lines is %d\n", nc, nl); return 0; } 56

Review:Assignment has value In C, assignment expression has a value, which is the value of the lefthand side after assignment. Parens in(c = getchar())!= EOF are necessary. c = getchar()!= EOF is equivalent to c = (getchar()!= EOF) c gets assigned 0 or 1. 57

Summary C and Java s conditionals and loops are very similar C does not support booleans, uses 0 and 1 (not 0) instead Learn how to use scanf and getchar, especially with input loops Learn how C handles characters Programming style is important! 58