Lập trình là gì?

itis_vc

New Member
hehe...viết nhảm hoài...hôm nay đổi tông viết bài mang tính chất đóng góp vậy ....ngoài ra bài viết còn mang tính chất mở ...tức là hoan nghênh thắc mắc, ý kiến và tranh luận mang tính xây dựng và học hỏi...

So với các môn khoa học tự nhiên đàn anh của mình ( Toán học, vật lý học, hoá học v.v..) thì ngành khoa học vi tính (Computer Science) là một ngành học khá trẻ, nhưng không kém phần lí thú và thu hút những bộ óc đam mê tìm tòi. Một trong những đề tài quan trọng mà ngành học này bao trùm đó là: Lập Trình. Vậy lập trình là gì?

1.Lập trình là gì?

Trước khi trả lời câu hỏi này chúng ta hãy làm rỏ một số khái niệm.
a.Program: chương trình
b.Programming hay coding: viết chương trình ( lập trình)
c.Programmer: người viết chương trình( lập trình viên)

Chúng ta bắt đầu từ "Chương trình". Một "Chương trình" không gì khác hơn là một chuỗi các bước (cần được thực hiện theo thứ tự để hoàn thành mộ vấn đề) được viết bằng một thứ ngôn ngữ nào đó. "Chương trình" ở khắp mọi nơi xung quanh chúng ta. Hằng ngày khi bước ra khỏi nhà để đi làm hay đi học, chúng ta thực hiện một chương trình. Ví dụ: V muốn đến chổ làm nằm trên con đường C, anh ấy phải đi qua đường A, rồi quẹo vào đường B, và cuối cùng quẹo vào đường C. Một ví dụ rỏ ràng hơn là một công thức nấu ăn, để thành công nấu được món ăn thì chúng ta phải thực hiện các bước theo thứ tự được ghi trên tờ giấy có công thức nấu ăn( rửa thịt, băm tỏi ớt, ướp 15 phút v.v...). Một lần nữa chúng ta đang "chạy một chương trình". Nếu như công thức nấu ăn được viết bằng một ngôn ngữ mà chúng ta có thể hiểu được thì việc thực hiện các bước trong công thức là không thành vấn đề. Sau khi hiểu được "Chương trình" là gì thì việc định nghĩa "Lập trình" thất sự là không có gì khó khăn. Lập trình hay viết chương trình là hành động viết xuống những bước để giả quyết một vấn đề.

vd: chương trình để giải phương trình " 2x^2 + x -3 = 0"
1.Tìm delta
2.Ráp delta vào công thức để tìm nghiệm.

Và người viết chương trình không ai khác hơn là môt lập trình viên.

Bonus: "Lập trình là một nghệ thuật, và lập trình viên là một nghệ sĩ".

Bây giờ chúng ta áp dụng những lý thuyết trên vào thế giới vi tính. Để một cái máy tính thực hiện điều mình muốn thì chúng phải phải đưa cho nó một cái công thức chỉ nó một cách chính xác các bước, giúp nó thực hiện điều mà mình mong muốn. Nhưng có một vấn đề là, máy vi tính không hiểu tiếng người. Nó chỉ hiểu các dãy số nhị phân (0010011000) mà thôi. Và vì việc lập trình chỉ bằng : 0 và 1 là một việc thật sự khó khăn, chúng ta cần môt người thông dịch. Người thông dịch này sẽ có nhiệm vụ thông dịch môt công thức được viết bằng ngôn ngữ mà người này hiểu thành ngôn ngữ của máy vi tính. Người thông dịch đầu tiên mà bạn Vũ muốn nói đến là: "Assembler". Một Assembler có khả thông dịch "ngôn ngữ Assembly" thành ngôn ngữ máy vi tính. Ngôn ngữ Assembly khác nhau từ hệ thống này xang hệ thống khác, vd: ngôn ngữ Assembly cho hệ thống máy xài x86 processors khác với ngôn ngữ Assembly cho hệ thống máy xài Sparc processors.

So với các dãy nhị phân thì ngôn ngữ Assembly thật sự khá hơn rất nhiền. Trong ngôn ngữ Assembly chúng ta bắt gặp việc sự dụng tên cho các thuật toán và biến số. Nhưng một lần nữa, việc lập trình bằng ngôn ngữ Assembly thật sự rất là cực và mấy không khả quan. Chúng ta cấn một thức ngôn ngữ mà chúng ta có thể thoải mái học cũng như sử dụng, đó chính là ngôn ngữ cấp cao (high-level language). Môt số các ngôn ngữ lập trình cấp cao thông dụng hiện nay: C/C++, Java, Scheme, PHP, Perl v.v.....Những ngôn ngữ cấp cao này sẽ được biên dịch bằng "Compiler"(người thông dịch thứ 2) thành ngôn ngữ máy tính. Và các Compilers hoạt động hầu như độc lập với tất cả hệ thống, cho nên chúng ta không phải để ý đến sự khác nhau giữa các hệ thống.

Tóm tắt:
High-level languages ---(compiler)---> machine language.
Assembly languages--(assembler)--> machine language.

(to be continued --part II--Control structures)
 

babyskydragon2004

Super Moderator
Staff member
Dạo này code bậy, lỗi không , có hay ho gì đâu :((
Debug từng bước ra ba cái xàm , huhu
Học VC đầu tiên, mà về sau sợ VC quá :(
 

itis_vc

New Member
bâybi shạo nha
em cũng khoái lập trình lắm, nhưng mà học phí hơi cao + ko có time.

Em có thể tự học thông wa sách vở. Anh có kha khá tài liệu và không ngại chia sẽ -_*. Nhưng nói trước tài liệu của anh sẽ là = tiếng Anh. Và hiện nay các forum trao đổi về lập trình là không hiếm. Em có thể tham gia các forum này để trao đổi học tâp.
 

itis_vc

New Member
Tốt! Tốt ! như vậy mọi người đều có căn cơ cả .....anh sẽ bận trong 2 ngày tới ....đến tối thử 7 may ra mới viết được bài update topic này ...:(( ...hay mấy đứa viết phụ anh nhỉ?....môt mình anh post thì cũng chán lắm.....anh định bài viết kế viết về control structures ( if ....else, while loop, for loop ..) ..mấy đứa có thời gian thì post một bài về vấn đề này xem ....:-bd ...rồi chúng ta cùng "cãi lộn" ...sẽ dzui lắm...anh thề, anh hứa, anh đảm bảo đấy...
 

babyskydragon2004

Super Moderator
Staff member
Đầu năm nayhọc C#, học trong 2 ngày là biết làm bình thường, cái không đụng vô VC, tại C# thấy nó tiện dụng, đọc file cũng dễ, hôm wa thi lại VC, hết hồn :)) còn mỗi cái VC2005, đọc file nó báo lỗi tùm lum.
if else hả? nói theo kiểu nào ta :D
Thường xài switch(x)
case x:
1 số trường hợp dùng nếu, thì dùng if else :D Lệnh này xài giống như Excel =))
 

itis_vc

New Member
Có bài ASP.NET ko ;))

^O^||3^O^||3^O^||3

hiện tại là chưa.....em có thể là người mở màn mà.....ASP là ngôn ngữ lập trình web nếu em muốn viết bài liên quan tới lập trình web thì qua topic kia post.....còn nếu em muốn post bài tại đây về những khái niệm trong lập trình nói chung và xài ASP làm ví dụ thì tốt thôi em...
 

itis_vc

New Member
Đầu năm nayhọc C#, học trong 2 ngày là biết làm bình thường, cái không đụng vô VC, tại C# thấy nó tiện dụng, đọc file cũng dễ, hôm wa thi lại VC, hết hồn :)) còn mỗi cái VC2005, đọc file nó báo lỗi tùm lum.
if else hả? nói theo kiểu nào ta :D
Thường xài switch(x)
case x:
1 số trường hợp dùng nếu, thì dùng if else :D Lệnh này xài giống như Excel =))

cho anh một vài ví dụ đi em....

Hay lấy cái bài phương trình bậc 2 trên kia làm vd đi.....như chúnng ta biết ...ngoài tìm delta để tìm nghiệm...chúng ta có thể kiểm tra: a+b+c hoặc a+b-c ..trường hợp này nếu áp dụng xài if ..else thì như thế nào? Trường hợp này có xài switch được ko? ...những trường hợp nào mới có thể xài switch? ...v.v...

còn while/until loop và for loop nữa kìa ...quăng anh vài chữ đi...:-bd
 

babyskydragon2004

Super Moderator
Staff member
Bài đó chỉ xài được if else, nó tiện hơn, và có thể làm bật hết trường hợp, nếu sắp xếp hợp lý hàm (tất nhiên)

float delta;
if (a==0)
{

if (b==0)
{

if (c==0)

printf("pt vo so nghiem");
else printf("pt vo nghiem\n");
}


else printf("pt co nghiem la:%f\n",-c/b);
}
else
{


delta=b*b-4*a*c;
if (delta<=0)
printf("pt vo nghiem\n");
else
if (delta==0)
printf("pt co 1 nghiem la: %f\n",-b/(2*a));
else
printf("pt co 2 nghiem phan biet la x1=%.2f x2=%.2f\n",(-sqrt(delta)-b)/(2*a),(+sqrt(delta)-b)/(2*a));
}
 

[FireBoy]

New Member
Dim a,b,c,delta,kq
If a = 0 Then
If b = 0 Then
If c = 0 Then
msgbox("Vo so nghiem",vbOK,"Ket Qua")
Else
msgbox("Vo nghiem",vbOk,"Ket Qua")
End If
Else
msgbox("Ptrinh co nghiem x="&-c/b&".",vbOK,"Ket Qua")
End If
Else
delta = b*b-4*a*c
If delta < 0 Then
msgbox("Vo nghiem",vbOk,"Ket Qua")
Else If delta = 0 Then
msgbox("Ptrinh co nghiem kep x="&-b/(2*a)&".",vbOk,"Ket Qua")
Else
msgbox("Ptrinh co 2 nghiem phan biet: x1="&(-b-sqr(delta))/(2*a)&" va x2="&(-b+sqr(delta))/(2*a)&".",vbOk,"Ket Qua")
End If
viết = VB, em ko có VB chạy thử, k pik đúng k nữa
 
Top