c basics course material_version1.3_updated.pdf

Upload: abdelrahman-saad

Post on 06-Jul-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    1/147

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    2/147

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    3/147

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    4/147

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    5/147

    1. Tell the students why we need to know about programming ( machine language )

    2. Show them a simple compilation flow from c file to hex file ( IDE integrated

    development environment)

    preprocessor (txt.c) – compiler (txt.o , .asm) – linker ( txt.exe , .hex)

    1. Show them the Structure of the C file from #include to functions bodies if any

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    6/147

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    7/147

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    8/147

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    9/147

    In windows:

    int 4 bytes

    Short 2 bytes

    char 1 byte

    float 4 bytes

    long 4 bytes

    double 8 bytes

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    10/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    11/147

    Naming Convention: You have to stick to a clear naming convention in order to make

    your code readable, for example:

    Char u8NumOfEmployess

    Long u16Salary

    int _myAge

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    12/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    13/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    14/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    15/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    16/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    17/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    18/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    19/147

    For Example

    If (x==y) depends on if x really equals to y, but in the other hand if (x=y) it will depend

    on the value of y if it is equal to 0 so the evaluation is false else it is true.

    int x = 1; int y = 0; if (x=y) False,

    int x = 1; int y = 10; if (x=y) True.

    1

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    20/147

    Short circuit: The evaluation of an expression is discontinued if the value of a

    conditional expression can be determined early. Be careful of any side effects in the

    code.

    Examples:

    (3==3) || ((c=getchar())==’y’). The second expression is not evaluated.

    (0) && ((x=x+1)>0) . The second expression is not evaluated.

    2

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    21/1472

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    22/147

    Notes:

    - AND is true only if both operands are true.

    - OR is true if any operand is true.

    - XOR is true if only one of the operand is true.

    - Shift Left by x equal multiplication by 2 power to x

    - Shift Right by x equal divide by 2 power to x

    2

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    23/1472

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    24/1472

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    25/147

    As a rule, the compiler promotes each term in an binary expression to the highest

    precision operand.

    2

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    26/1472

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    27/1472

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    28/1472

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    29/1472

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    30/1473

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    31/1473

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    32/1473

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    33/1473

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    34/1473

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    35/147

    Show the student a simple program that takes a number from the Keyboard and then

    display it back on the screen (Echo)

    3

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    36/147

    Show the student a simple program that takes a number from the Keyboard and then

    display it back on the screen (Echo)

    3

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    37/147

    Show the student a simple program that takes a number from the Keyboard and then

    display it back on the screen (Echo)

    3

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    38/147

    A common pattern in C (and in most programming) languages is the following: if (

    cond ) x=;

    else

    x=;

    3

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    39/1473

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    40/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    41/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    42/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    43/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    44/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    45/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    46/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    47/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    48/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    49/1474

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    50/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    51/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    52/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    53/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    54/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    55/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    56/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    57/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    58/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    59/1475

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    60/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    61/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    62/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    63/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    64/147

    Give the Students a program that has al logical error and tell them to debug and

    know the error source :

    #include

    #include

    int main()

    {

    int value,i;

    printf("value before for loop is %d \n",value);

    for(i=0;i

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    65/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    66/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    67/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    68/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    69/1476

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    70/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    71/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    72/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    73/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    74/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    75/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    76/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    77/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    78/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    79/1477

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    80/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    81/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    82/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    83/147

    Give the student a simple initialization example

    8

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    84/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    85/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    86/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    87/147

    Give the student a simple initialization example

    8

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    88/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    89/1478

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    90/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    91/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    92/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    93/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    94/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    95/147

    U can repeat any of the prev examples using functions

    9

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    96/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    97/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    98/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    99/1479

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    100/147

    What is the scope of each variable in this example?

    10

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    101/147

    The compiler always reference the variable from the private scope first then the outer

    scope

    So first it will print 10, and then 25 line is printed.

    10

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    102/14710

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    103/147

    Use multiple files in the project

    10

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    104/14710

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    105/14710

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    106/14710

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    107/14710

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    108/14710

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    109/14710

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    110/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    111/1471

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    112/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    113/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    114/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    115/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    116/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    117/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    118/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    119/14711

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    120/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    121/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    122/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    123/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    124/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    125/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    126/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    127/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    128/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    129/14712

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    130/14713

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    131/14713

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    132/14713

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    133/14713

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    134/147

    St_employee : St stands for structure type (to increase readability)

    13

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    135/147

    S_employee : S stands for structure type (to increase readability)

    13

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    136/147

    S_employee : S stands for structure type (to increase readability)

    13

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    137/14713

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    138/14713

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    139/147

    Exercise on all typedefs

    13

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    140/14714

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    141/147

    The preprocessor operation : is a stage before compilation to handle the preprocess

    keywords like #define, #include, #ifdef, and #ifndef.

    Simply it does some text replacement, addition, deletion on the code depending of

    the used keywords before the compilation.

    Other keywords will be explained later with the convenient context.

    14

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    142/14714

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    143/14714

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    144/14714

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    145/14714

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    146/14714

  • 8/17/2019 C Basics Course Material_Version1.3_updated.pdf

    147/147