Bài 1 : Những khái niệm cơ bản về ngôn ngữ C

-         Phần mềm là một tập hợp các chương tŕnh

-         Một chương tŕnh là một tập hợp các chỉ thị lệnh

-         Những đoạn mă lệnh là cơ sở cho bất kỳ một chương tŕnh C nào

-         Ngôn ngữ C có 32 từ khóa

1.Định nghĩa biến (variable):

Biến là đại lượng có giá trị luôn thay đổi trong chương tŕnh, Là một vùng bộ nhớ

1.2 Cách khai báo biến:

  kiểu tên_biến;

      + Quy tắc đặt tên biến :

-         không trùng với từ khóa

-         không viết chữ số ở phía trước tên biến

-         không có khoảng trắng

    + Kiểu gồm:

-         int , long : kiểu số nguyên

-         float,double : kiểu số thực

-         char : kiểu kư tự

VD : int a,b;

2. Cách khai báo hằng (const) :

     cú pháp : const a=12;

3. Các hàm toán học trong C:

 

-         sin(x) : Hàm sin  của x

-         cos(x) : Hàm cos của x

-         tan(x) : Hàm tang của x

-         log(x):

-         abs(x): trị tuyệt đối của x

-         round(x): làm tṛn số của x

-         sqrt(x) : Căn bậc hai của x

-         pow(x,n) : hàm x mũ n

 

4. Các thư viện trong C:

  #include<stdio.h> : thư viện chính khi dùng toán tử vào ra là : printf và scanf

  #include<conio.h> : Khi dùng lệnh xuốn dong getch()

  #include<string.h> : Khi dùng xâu kư  tự

  #include<algorithm.h> : Khi toán tử

  #include<math.h> : Khi dùng toán tử toán học như: sin(x)…..

 

5. Lệnh chú thích trong chương tŕnh :

// Chú thích cho 1 ḍng

/* nhiều ḍng */

 

6. Nhập xuất trong C:

 a, Xuất dữ liệu:

   cú pháp : printf(“xâu kư tự”);

b, Nhập dữ liệu :

   scanf(“%kiểu”&biến);

  kiểu gồm:

 + %d : nhập số nguyên kiểu int

 + %u : nhập số nguyên kiểu long

 + %f  : nhập số thực kiểu float

 + %lf : nhập số thực kiểu double

 + %c : nhập kư tự kiểu char

 + %s : nhập xâu kư tự kiểu string

 + ‘\t’ : Tab

 + \b   : Khoảng trống

7. Cấu trúc chương tŕnh :

  //khai báo thư viện

 // khai báo hàm

 void main()

 {

     // khai báo biến

    //  nhập xuất dữ liệu

   //   Thuật toán

   //  Đưa ra kết quả

 }

VD: Nhập từ bàn phím 2 số nguyên a,b . Tính tổng ,hiệu

 #include<stdio.h>

 #include<conio.h>

void main()

{

   int a,b,t;

   printf(“nhập hai so a,b:”);

   scanf(“%d%d”,&a,&b);

   t=a+b;

  printf(“tong=%d”t);

 }

8. phần  bài tập:

1,Tính hàm sau : f(x)=sin(x)+cos(x)

2, Giá vàng và ngoại tệ trên thị trường 1 dollar đổi được 5 yên nhật. Hỏi có 40000 vnd th́ đổi được bao nhiêu yên nhật? Biết 1 dollar= 16000 vnd.

 

 

Bài 2: Biểu thức và Cấu trúc điều kiện:

1.Biểu thức:

-         && : ĐK and

-         %    : ĐK chia hết

-         ||      : ĐK or

-         ==   : ĐK bằng nhau

-         !=    : ĐK phủ định

2.Cách định nghĩa hằng bằng define:

  cú pháp : #define Tên_hằng    giá trị

   VD : #define end  }

             #define pi  3.14

3. Ép kiểu :

  cú pháp: kiểu(biến)

   VD : float(b);

4.Biểu thức điều kiện :

 cú pháp: biểu thức ĐK? Bt1:bt2

 VD: Viết chương tŕnh t́m số lớn nhất của hai số a,b

 Void main()

 {

    int a,b,max;

    printf(“nhap hai so:”);

    scanf(“%d%d”,&a,&b);

    max=a>b?a:b;

   printf(“Max=%”,max);

 }

5.Cấu trúc điều kiện:

a, Câu lệnh đơn:

  if(đk)

    câu lệnh;

b, Câu lệnh kép :

  if(đk)

   {

      câu lệnh 1;
      câu lệnh 2;

    }

c,Cấu trúc lồng IF và ELSE IF :

   if(đk1)

    {

      lệnh 1;

    }

   else if(đk2)

    {

         lệnh2;

    }

   else

     Câu lệnh;

  VD: giải phương tŕnh bậc II:

    Void main()

    {

        float a,b,x1,x2,d;

        printf(“nhap a,b,c:”);

        scanf(“%f%f%f,”&a,&b,&c);

        d=b*b-4*a*c;

        if(d>0)

         {

           x1=(-b-sqrt(d))/2*a;

           x2=(-b-sqrt(d))/2*a;

           printf(“x1=%”,x1);

           printf(“x2=%”,x2);

         }

          else if(d==0)

             {

                   printf(“x=%”,-b/2*a);

              }

              else

                  printf(“vn”);

        }

 

6.Bài tập :

1, T́m giá trị lớn nhất của 3 số a,b,c

2, Nhập vào từ bàn phím một số nguyên dương. Kiểm tra xem số đó có chia hết cho 10 không?

 

 

Bài 3 : Lệnh Rẽ nhánh Switch case

 

1.Định nghĩa:

Lệnh rẽ nhánh sử dụng khi mà chúng ta muốn chia chương tŕnh thành nhiều nhánh công việc

Cú pháp:

   Switch(biểu thức)

    {

      case 1:

              công viêc1;

              break;

     case  2:

              công viêc 2;

              break;

     case n:

              công viêc n;

              break;

     default:

              công viêc mặc định;

              break;

  }

    

 VD : viết  chương tŕnh hiển thị thời khoá biểu

  Void main()

  {

     int a;

    printf(“nhap thu:”);

    scanf(“%d”,&a);

    switch(a)

    {

        case 1:

               printf(“Toan,ly, hoa”);

                break;

         case 2:

               printf(“Anh,van, hoa”);

                break;

         default :

              printf(“nhap lai”);

    }

}

2.Câu lệnh goto và nhăn:

Nhăn có dạng như tên biến và có dấu (:) viết sau nhăn có thể gán cho câu lệnh bất kỳ theo cú pháp:

  Tên_nhăn :

         Câu lệnh;

  Goto Tên_nhăn; 

3. Bài tập:

Viết chương tŕnh nhập tháng và năm hiển thị ra màn h́nh ngày của tháng và năm đó. Biết : Các tháng 4,6,9,11 có 30 ngay. Các tháng 1,3,5,7,8,10,12 có 31 ngày. Tháng 2 năm nhuận la năm chia hết cho 4 có 29 ngay năm không nhuận có 28 ngày.

 

Bài 4 : Cấu trúc lặp For

 

1.Định nghĩa:

Là cấu trúc lặp với số lần lặp xác định. sử dụng for khi một câu lệnh đơn giản mà ta phải thực hiện nhiều lần.

2.Cú pháp:

      for(bt1,bt2,bt3)

          câu lệnh lặp;

   Trong đó:

-         bt1: Là biểu thức gán giá trị ban đầu cho biến điều khiển

-         bt2 : Là biểu thức điều kiện

-         bt3: Là biểu thức gán để thay đổi giá trị cho biểu thức đk

VD: Viết chương tŕnh in ra màn h́nh dăy ố từ 1 đến 10

     A, Tính tổng của dăy số trên

     B,  Tính tổng các số chẵn , lẻ

     C,  Tính giai thừa

  Void main()

   {

      int i,s=0,tc=0,tl=0,gt=1;

          for(i=1;i<=10;i++)

            {

                s=s+i;

                if(i%2==0)

                tc=tc+i;

                else

                tl=tl+i;

             }

            printf(“s=%d”,s);    

            printf(“TC=%d”,tc);

            printf(“TL=%d”,tl);

   }

3. bài tập:

1, Viết chương tŕnh in ra tam giác sau:

   1

   12

   123

2, Viết chương tŕnh in ra tam giác Pascal sau:

                1

             1 2 1

         1 2  3  2 1

 

 

Bài 5: Cấu trúc lặp while và Do while

 

1.Cấu trúc lặp while : là cấu trúc lặp với số lần lặp không xác định . Có nghĩa là Nó phải thoả măn một điều kiện nào đó th́ mới kết thúc chương tŕnh.

Cú pháp:

  While (đk)

  {

    câu lệnh;

  }

VD1: t́m USCLN và BSCNN của hai số a,b

    Void main()

     {

         int a,b,bs;

         printf(“nhap hai so:”);

         scanf(“%d%d”,&a,&b);

         bs=a*b;

         while(a!=b)

              {

                 if(a>b)

                     a=a-b;

                  else

                      b=b-a;

              }

           printf(“USCNN la:%d”,a);

           printf(“BSCLN la:%d”,bs/a);

     }

   VD2 : Viết chương tŕnh nhập dăy  số n âm và dương. In ra màn h́nh tồng các số âm, tổng các số dương

               Đếm xem có bao nhiêu số âm, bao nhiêu số dương. Điều kiện dừng  khi n là 0.

    Void main()

     {

         int a=0,d=0,n,ta=0,td=0;

         printf(“nhap hai so:”);

         scanf(“%d%d”,&a,&b);

         bs=a*b;

         while(n!=0)

              {

                 if(n>0)

                     {

                         d++;

                         td=td+n;

                      }

                   else

                      {

                       a=a+n;

                       ta=ta+n;

                       }

              }

           printf(“co:%d so duong voi tong duong la : %d”,d,td);

           printf(“co:%d so am voi tong am la : %d”,a,ta);

     }

   2. Cấu trúc lặp do … while :    

         cú pháp :

                    do

                       {

                         câu lệnh;

                       }

                        while (đk);

 

        Bài 6 : Chương tŕnh con (function) và con trỏ

 

  1. Định nghĩa hàm :

      Hàm là một chương tŕnh được Modul hóa nhỏ thành các chương tŕnh nhỏ.

Sử dụng hàm khi một chương tŕnh đơn giản được lặp đi lặp lại nhiều lần. Chương tŕnh con nay được

Gọi ra từ chương tŕnh chính.

 

  1. Biến toàn cục :

Là biến được khai báo ở đầu chương tŕnh chính. Nó có tác dụng trong toàn bộ chương tŕnh.

  1. Biến cục bộ:

Là biến được khai báo ở đầu chương tŕnh con. Nó có tác dụng trong toàn bộ chương tŕnh con này và chương tŕnh con khác nằm trong nó..

  1. Cấu trúc hàm:

Hàm được chia thành 3 phần như sau :

a)      khai báo hàm : kiểu tên_hàm (tham biến);

b)      gọi hàm  : tên_hàm(tham số thực sự);

c)      Định nghĩa hàm : kiểu tên_biến (biến số)

  1. Hàm không trả về : Hàm không trả về là hàm có kiểu void

               VD: tính tổng, hiệu bàng hai hàm

                Void tong(int,int);

                Void hieu(int,int);

                Void main()

                    {

                       int a,b;

                       printf(“nhap hai so:”);

                       scanf(“%d%d”,&a,&b);

                       tong(a,b);

                       hieu(a,b);

                     }

                  void tong(int a,int b)

                       {

                          printf(“tong=%d”,a+b);      

                       }

                  void hieu(int a,int b)

                       {

                          printf(“Hieu=%d”,a-b);      

                       }

 

  1. Con trỏ hàm:

Con trỏ là mmột biến dùng để chứa địa chỉ. MỗI 1 loạI địa chỉ sẽ có một loại con trỏ

Tương ứng. VD con trỏ kiểu int sẽ lưu giữ địa chỉ của biến nguyên,Con trỏ kiểu float

lưu giữ địa chỉ của kiểu số thực.

Cú pháp : kiểu tên_biến=giá trị;

                            biến_trỏ=&tên_biến;

                             VD : int a=10;

                                     int *b=&a;

 

                VD: tính tổng, hiệu bàng hai hàm

                Void tong(int *a,int *b);

                Void hieu(int *a,int *b);

                Void main()

                    {

                       int a,b;

                       printf(“nhap hai so:”);

                       scanf(“%d%d”,a,b);

                       tong(&a, &b);

                       hieu(&a, &b);

                     }

                  void tong(int a,int b)

                       {

                          printf(“tong=%d”,a+b);      

                       }

                  void hieu(int a,int b)

                       {

                          printf(“Hieu=%d”,a-b);      

                       }

                   

                    VD2: Viết chương tŕnh con hoán chuyển vị trí giữa 2 số    

                         Void hoan(int *a,int *b)

                            {

                               int tg;

                                  tg=*a;

                                  *a=*b;

                                  *b=tg;

                               }

                          void main()

                            {

                               int a=10,b=6;

                               printf(“a=%d va b=%d”,a,b);

                                 hoan(&a,&b);

                               printf(“a=%d va b=%d”,a,b);

                              }

 

  1.     Hàm trả về : Hàm trả về là hàm có kiểu không phảI là kiểu void

               VD: tính tổng, hiệu bàng hai hàm

                int tong(int,int);

                int hieu(int,int);

                Void main()

                    {

                       int a,b,t,h;

                       printf(“nhap hai so:”);

                       scanf(“%d%d”,&a,&b);

                       t=tong(a,b);

                       h=hieu(a,b);

                       printf(“tong=%d”,t);      

                       printf(“Hieu=%d”,h);      

 

                     }

                  void tong(int a,int b)

                       {

                          return a+b;                        

                        }

                  void hieu(int a,int b)

                       {

                        return a-b;

                        }

 

  1. bài tập :

 

1)      Viết hai hàm không trả về để in ra hai chương tŕnh sau:

Hàm1 : Tính giai thừa

Hàm2 : Tính tổng của dăy số n.

2)      Dùng hàm trả về để giảI pt bậc II

   

 

Bài 7 : Mảng

  1. Định nghĩa:

Mảng là 1 dăy các biến có cùng kiểu. Nó được sử dụng để lưu trữ dữ liệu với số lượng lớn

Mà không phảI khai báo nhiều biến khác nhau.

Mảng được chia làm 2 loại chính đó là mảng 1 chiều và mảng 2 chiều. mảng 1 chiều c̣n gọI

Là véc tơ , mảng 2 chiều gọi là ma trận

  1. Mảng một chiều:

Là mảng dùng 1 chỉ số để khai báo các phần tử mảng . Khi đó chỉ số là 1 số ngẫu nhiên

A)Cách khai báo mảng 1 chiều:

         Kiểu tên_mảng[chir số];

          VD : int a[2];

    

0

1

  Mảng a chạy từ 0 đến n-1

B) Cách khởi tạo mảng :

           VD: int a[2]={10,20};

              VD : Viết chương tŕnh nhập mảng a gồm n phần tử

-         In mảng vừa nhập

-         Tính tổng các phần tử mảng

-         T́m tổng âm và tổng dương

-         T́m max và min

Giải:

      Void main()

        {

             int mang[4],i, n,max,min,tong=0,ta=0,td=0;

               printf(“Nhap do dai mang:”);

               scanf(“%d”,n);

               for(i=0;i<n;i++) 

                {

                   printf(“Nhap phan tu mang:”);

                   scanf(“%d”,mang[i]);

                    tong=tong+mang[i];

                    if(mang[i]>0)

                     ta=ta+mang[i];

                     td=td+mang[i];

                 }

           max=mang[0];  min=mang[0];

               for(i=0;i<n;i++) 

                  {

                      max=mang[i];

                       if(max<mang[i])

                            max= mang[i];

                         else

                            min= mang[i];

                     }

               for(i=0;i<n;i++)

                  {

                      printf(“%d”,mang[i]);

                   }

                      printf(“tong am=%d”,ta);

                      printf(“tong duong=%d”,td);

                      printf(“min=%d”,min);

                      printf(“max=%d”,max);

}

  1. Mảng hai chiều :

Là mảng dùng 2 chỉ số để xác định các phần tử mảng

      3.3) khai báo mảng hai chiều:

              kiểu tên_biến[chỉ số1] [chỉ số2];

               VD: int a[2][3]; // 2 hàng 3 cột

 

    Bai 8 :Xâu kư tự (string)

1)      Xâu sử dụng để lưu trữ một chuỗi các kư tự

2)      Cách khai báo xâu :

          Char tên_biến[độ dài];

           Vd : char a[10];

3)      Các thao tác nhập xuất chuỗi đơn giản:

a)      Nhập : gets(biến_xâu) hoặc scanf(“%s”,&biến);

b)      Xuất : puts(biến_xâu) hoặc printf(“%s”,&biến);

4)      Các hàm về chuỗi: để sử dụng các hàm trong chuỗi ta sử dụng thư viện: #include<string.h>

-         strlen(s[]) : trả lại độ dài  xâu

-         strcpy(s1,s2): Sao chép nội dung  s1 vào s2

-         strcat(s1,s2) : nối s1 vào s2

-         strlwr(s) : đổi chữ hoa sang thường

-         struppr(s) : đổi chữ thường  sang hoa