Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are...

37
Computers and Programming CPC The 1 st lecture Jiří Šebesta http://www.urel.feec.vutbr.cz/~sebestaj/ C PC Complete sources are available on the Web pages:

Transcript of Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are...

Page 1: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Computers and Programming CPC

The 1st lecture

Jiří Šebesta

http://www.urel.feec.vutbr.cz/~sebestaj/CPC

• Complete sources are available on the Web pages:

Page 2: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

TOPIC

1. Numeric systems

2. Basic structure of the program

3. Algorithms

4. Variables and data in C language

Page 3: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Numeric systems (1/3)

General expression of integer number :

Used systems :

Page 4: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Numeric systems (2/3)

Used symbols are 0 – 9 and letters from alphabet for systems with basis over 10: e.g. for hexadecimal system:

A = 10 B = 11 C = 12 D = 13 E = 14 F = 15

Example for hexadecimal number expression:

Hex. number 0x3CF0 represents decimal value:

3 · 4096 + 12 · 256 + 15 · 16 = 15600

Page 5: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Numeric systems (3/3)

- storage in memory (generally according to standard IEEE754)

mES M

xe

2121 12 1

S is sign bit (+ = 0; - = 1)

E is binary value of exponent

M is binary value of mantissa

General expression of rational (floating point) number:

Page 6: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (1/10)

What is a computer program? How to create a computer program?

Assembler = readable machine code using name abbreviations derived from instruction meaning, e.g. MOV, INC, ADD,and their operands (name of register, address in memory, numerical constant…

Page 7: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (2/10)

inserted header files (libraries)

#include <math.h> // precompiled header files#include <stdio.h>

int main(void) // header of main function{ // body of main function char c; // variable declaration

printf("ahoj"); // printing fuct. (stdio.h) scanf("%c", &c);// wait until key pressed

(stdio.h) return 0;}

notices

header of main

function

variable declaration

body of function

calling of library

functions command for comeback from function with return value (0)

Page 8: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (3/10)

• Application solutions in C:

• CONSOLE APPLICATION (independent on platform) – ANSI C

• APPLICATION DEPENDENT ON PLATFORM (for given OS with utilize offered functions, for given microcontroller with utilize its peripheral) – extensive libraries, e.g. API, MFC, Active X

• Integrated Development Environment IDE

– complete set of tools for application creation including wizards for project setting, e.g. MS Visual Studio

- open source environments, e.g. Code::Blocks or Eclipse or CodeLite (license is not required)

Page 9: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (4/10)

• Code::Blocks – our programming tool

• Projectnew project

open a previously

created project

console application = text output in

DOS box

projects for microcontrollers

AVR 8 bitsARM 32 bits

Page 10: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (5/10)

• Compiler language setting

Page 11: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (6/10)

• Project name setting

Page 12: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (7/10)• Kind of compiler setting

GNU – open free softwareGCC = GNU Compiler Collection

Page 13: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (8/10)• Debug version vs. release version

DEBUG – excellent debugging, final code is not optimizedRELEASE – final version – optimized code for distribution

Page 14: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (9/10)• debugging and executing of an application – menu DEBUG

start of debugging, program stops at

breakpoints

stepping in program including jumps to

functions, by Step out given function can be

early leaved

stepping in program according to the

source code without jumps to functions

breakpoint inserting to given row (where the cursor actually

is placed)

Příklad: Ex01.c

stop of debugging (program can be in

undefined cycle state)

Page 15: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Basic structure of the program (10/10)

• Where you can obtain Code::Blocks ??

Page 16: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Algorithms (1/6)

• Algorithms defines a procedure of operations with data

• Fundamental aspects of algorithm:

Finiteness – algorithm consists of elementary steps (of procedure or process), whereas their number must be finite

Necessatarianism – algorithm must be punctually and clearly defined

Inputs/outputs – algorithm has to defined unambiguous inputs and outputs (data, e.g. given structure of a file)

Effectiveness – algorithm must be effective and optimally used system capability (effectiveness in point of view operation time vs. occupation of operation memory or code length)

Page 17: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Algorithms (2/6)

Versatility – algorithm has to be able to work with required data set in required range

• Basic entities of algorithm:

• Variables

• Start of algorithm

• End of algorithm

• Steps of algorithm

• Subroutines

• Conditions (binary relations)

• Decision making

• Sequences

• Cycles

• Jumps (to use minimally)

Page 18: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Algorithms (3/6)

Resources for algorithm definition (description):

• Lexical – native form: textual (intellectual) guide, order, law – often not too exact definition, then transcription to programming language is impossible

• Graphical – flowchart – transparent visualization of complex algorithms including branching by using defined flowchart symbols with description and oriented flowlines

• Symbolic – algorithm description by exactly defined syntax (key word of programming language; meta-language – generative grammar)

Page 19: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Algorithms (4/6)

Flowchart - symbols:

Algorithm start or algorithm end

Common statement

Conditional branching

Cycle with defined number of repetitions

Cycle with condition in the end

Cycle with condition in the beginning

Manual input (e.g. from keyboard)

Output displaying

File processing

Data saving to a file

Subroutine

Joiner

Oriented flowline

Page 20: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Algorithms (5/6)

• Program that compute roots of any quadratic equation:

ax2 + bx + c = 0

Read coefficients from keyboard. If roots are complex, print error message.

a

acbby

2

42

2,1

Flowchart - example:

Page 21: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Algorithms (6/6)

float a, b, c, y1, y2, r;printf("a = "); scanf("%f", &a);printf("b = "); scanf("%f", &b);printf("c = "); scanf("%f", &c);getchar();

r = b*b-4*a*c;if(r>=0){ y1 = (-b+sqrt(fabs(r)))/(2*a); y2 = (-b-sqrt(fabs(r)))/(2*a); printf("\n 1st root: %.3f", y1); printf("\n 2nd root: %.3f", y2);}else printf("\n Result is not real");

Příklad: Ex02.c

Page 22: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (1/15)

• Data – I (Input), – O (Output) , auxiliary (used for internal results)

• Data sources a targets

– file (I/O – binary, text), keyboard (I), console (O), printer (O), communication port (I/O) – e.g. serial port, USB, LPT

- often the functions for programming with data sources and targets are defined as functions for files

• Kind of data (variables) – numerical (integer or rational), characters and strings (string is array of characters terminated by character NULL), arrays (one-dimensional = vectors, multidimensional = matrix, 3D matrix, tensor …), pointer (reference to position in memory), structure (defined encapsulated set of variables with different types)

Page 23: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (2/15)• Named place in memory with the desired size (in bytes)• GLOBAL – valid in whole program • LOCAL – valid in body of function (only)

Example: Ex03.c

// precompiled header files#include <stdio.h> // standard inputs and outputsint a = 5; // global variableint main(void) // main function{

int b = 10; // local variablechar c;printf("global: %d\r\n ", a);printf("local: %d\r\n ", b);scanf("%c ", &c);

return 0;}

Page 24: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (3/15)

Type Bits Range

unsigned char 8 X <0, +255>

char 8 X <-128, +127>

short int 16 X <-32.768; +32.767>

unsigned int 32 X <0; +4.294.967.295>

int 32 X <-2.147.483.648; +2.147.483.647>

float 32 1,18 10-38 < |X| < 3,40 10+38

double 64 2,23 10-308 < |X| < 1,79 10+308

long double 80 3,37 10-4932 < |X| < 1,18 10+4932

• Types of variables in ANSI C language – numeric types

Page 25: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (4/15)

• Numeric types – fixed point for integral numbers

- unsigned number - storing in memory

- signed number - storing in memory

Page 26: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (5/15)

• Example unsigned char (8 bits)

• Example signed char (8 bits) – standard expression

Page 27: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (6/15)

• Complementary code

• One is subtracted from absolu-te value of coded number and negated

• Example for signed char (8 bits) – complementary coded

• Simpler hardware implementation of ALU

Page 28: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (7/15)

• Numerical floating point types

- storage in memory (generally according to IEEE754 standard)

mES M

xe

2121 12 1

S is sign bit

E is binary value in exponent

M is binary value in mantissa

Page 29: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (8/15)

• Numerical floating point types

23127

2121M

x ES

521023

2121M

x ES

Float (4 bytes) Double (8 bytes)

Page 30: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (9/15)

• Float (4 bytes)

23127

2121M

x ES

Page 31: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (10/15)

• Double (8 bytes)

521023

2121M

x ES

Page 32: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (11/15)• Types of variables – array

Example: Ex04.c

#include "stdio.h"int main(void){

int A[5] = {0, 1, 2, 3, 4};int B[3][2] = {0, 1, 2, 3, 4, 5};int i,j; char c;for( i=0; i<5; i++)

printf("A[%d] = %d\r\n", i, A[i]);B[0][0] = A[4];for( i=0; i<3; i++){ for( j=0; j<2; j++) printf("B[%d,%d] = %d\r\n", i, j, B[i][j]);}scanf("%c", &c);

return 0;}

Page 33: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (12/15)

• String: an array of characters (in memory: 1 byte/character – ASCII coding)

• NTS (Null Terminated Strings) : the last character of string null – spec. notation v C/C++ ’\0’

• Array elements: pointers to characters

Page 34: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (13/15)

• String as an array of ASCII codes of characters in memory:

Page 35: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (14/15)

• Special characters:\b - backspace BS \f - form feed FF (also clear screen) \n - new line NL

\r - carriage return CR

\t - horizontal tab HT \v - vertical tab (not all versions) \“ - double quotes (not all versions) \' - single quote character '

\\ - backslash character \ \ddd - character ddd, where ddd is an ASCII code given in octal base

\xhhh - character hhh, where hhh is an ASCII code given in hexadecimal base

Page 36: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

Data and variables (15/15)

• Types of variables – pointer (= address of variable in memory)

Example: Ex05.c

#include "stdio.h"int main(void){ float x = 3.14, y = 2.27; float* p; // address of float variable

p = &x; // address of x to p *p = y; // content of y on address in p

return 0;}

Page 37: Computers and Programming CPC The 1 st lecture Jiří Šebesta sebestaj/CPC Complete sources are available on the Web pages:

TOPICS OF THE NEXT LECTURE

1. Expressions

2. Arithmetic conversions

3. Operators

4. Statements if-else and for

THANK YOU FOR YOUR ATTENTION