Thảo luận  Góc Lập Trình

jablonec
Cũng là một người hơi hơi mê bên lập trình, mãi sau này mình mới có hướng đi và đang xây dựng nền tảng cho đam mê này mỗi ngày. Để hiểu thêm về lập trình và cần chia sẻ kinh nghiệm của mỗi người về lập trình. Mình lập topic này mong muốn trao đổi và học hỏi kiến thức.
1. Học lập trình có khó không?
2. Học lập trình có cần giỏi toán không?
3. Học lập trình nên bắt đầu từ đâu?
.....
Cảm ơn mọi người đã đọc topic.

JMZmsh.jpg
 
Trả lời

jablonec

Rìu Chiến
Sau khi ngâm cứu thì code lỗi tùm lum các bác ạ, trong phần mềm không cho dùng delay mà dùng Sleep, gotoxy phải khai báo thêm. Code dừ đúng là:

#include <iostream>
#include<conio.h>
#include<dos.h>
#include<windows.h>
#include<fstream>
#include<cstring>
#include<time.h>>

using namespace std;
void gotoxy(int x, int y) {
COORD pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
int main()
{
char qc[100]="Quang cao mien phi: Khong co tien thi khong co kem.";
int dd=strlen(qc);
char tam[100]; strcpy(tam,qc);
strcat(qc,tam); //Nhân đôi dòng quảng cáo
char hien[31]; //Chứa xâu dài 30 ký tự để hiện
int i=0;
while (!kbhit()) { //Trong khi chưa ấn phím bất kỳ
strncpy(hien,qc,30);
hien[30]='\0'; //Copy 30 ký ự từ qc sang hien
gotoxy(20,10); cout<<hien; //In hiện tại dòng 10 cột 20
Sleep(100); //Tạm dừng 1/10 giây
i++; if(i==dd) i=0; //Tăng i
}
}


Mà khi chạy không đúng với yêu cầu các bác ạ, lại ngâm cứu tiếp.
 

Nobika390

Búa Đá
Bắt đầu học đc 1 thời gian ngắn, có chút tư duy của chuyên toán, nhưng theo ngành kế toán, tiếp cận bằng VBA excel, cơ mà tại Tiếng Anh bật bẹ quá nên đã nản và chưa quay lại đc, {beat_shot}
 

Pham Cong

Rìu Sắt Đôi
Ở topic này cũng từng đề cập đến điều bạn đang quan tâm:
 

jablonec

Rìu Chiến
Nhập mật khẩu (không quá 10 kí tự). In ra "đúng" nếu là "HaNoi2000", "sai" nếu ngược lại. Chương trình cho phép nhập tối đa 3 lần. Nhập riêng rẽ từng kí tự (bằng hàm getch()) cho mật khẩu. Hàm getch() không hiện kí tự NSD gõ vào, thay vào đó chương trình chỉ hiện kí tự'X' để che giấu mật khẩu. Sau khi NSD đã gõ xong (9 kí tự) hoặc đã Enter, chương trình so sánh xâu vừa nhập với "HaNoi2000", nếu đúng chương trình tiếp tuc, nếu sai tăng số lần nhập (cho phép không quá 3 lần).

code:

#include<conio.h>
#include<string.h>
#include<windows.h>

using namespace std;
void gotoxy(int x, int y) {
COORD pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

int main()
{
char pw[11]; int solan=0;
do
{
gotoxy(30,12);
int i=0;
while ((pw=getch())!=13&& ++i<10) cout<<'X';
pw='\0';
cout<<endl;
if(!strcmp(pw,"Hanoi2000")) {cout <<"Moi Vao"; break;}
else{cout<<"Sai Mat Khau. Nhap lai"; solan++;}
}
while(solan<3);
}

 

jablonec

Rìu Chiến
Bắt đầu học đc 1 thời gian ngắn, có chút tư duy của chuyên toán, nhưng theo ngành kế toán, tiếp cận bằng VBA excel, cơ mà tại Tiếng Anh bật bẹ quá nên đã nản và chưa quay lại đc, {beat_shot}
Mình cũng giống như bạn, nhưng mãi đến năm 33 tuổi mình mới bắt đầu thấy đam mê, đang học mỗi ngày và thường xuyên nghe tiếng anh, hi vong mỗi ngày mỗi chút, tuy không thành công nhưng cũng thành nhân.
 

Pham Cong

Rìu Sắt Đôi
Toán học nói riêng cũng như các môn tự nhiên nói chung (Toán, Lý, Hóa) giúp con người ta xử lý công việc một cách LOGIC và NHANH CHÓNG mà lập trình viên thì rất cần 02 yếu tố này nên nếu bạn có thiên bẩm về các môn tự nhiên (Hay nếu bạn hiện đang đi các ngành nghề khác không liên quan gì đến các môn tự nhiên, nhưng trong con người bạn đã có sẵn tố chất để học tốt các môn học tự nhiên thì vẫn Oke) thì đây là điểm mạnh để bạn thử học lập trình.
Chúc bạn thành công!
 

dammage

Rìu Vàng Đôi
topic coi bộ xôm tụ vậy, tui cũng xin góp vài ý kiến dựa theo hiểu biết cá nhân (mặc dù mấy cái này tui cũng nói nhiều lần rồi)

1/học lập trình có khó không
không khó cũng không dễ, còn tùy lĩnh vực và mức độ, hồi trước có thằng nhóc mới lớp 7 lớp 8 gì đó viết cái trình duyệt web, bên Nhật cũng có 1 bà hình như 70 tuổi rồi cũng học lập trình rồi viết app điện thoại được

2/lập trình có cần toán hay không
lập trình chỉ là cách nói chung chung, thật ra nó rất rộng (giống bác sĩ vậy, răng hàm mặt, tai mũi họng, tim mạch, thần kinh...), tùy từng lĩnh vực và mức độ mà sẽ có cần toán nhiều hay ít, như tui đây có những lúc rất cần, nó giúp tối ưu chương trình, tính toán hiệu quả của các thuật giải hay hướng cài đặt... cũng có những khi tui chỉ copy công thức hay áp mấy hàm có sẵn vô rồi chạy thôi

3/học lập trình là học gì
như 1 bạn có nói ở trên, học lập trình là học kĩ năng, công cụ, tư duy, còn muốn viết ra cái gì thì cần phải có kiến thức chuyên về cái đó nữa, hồi trước bên vn-zoom cũ có 1 bạn (hình như là nữ) nói rằng muốn lập trình cái này cái nọ mà sao đọc biết bao nhiêu sách lập trình c rồi quanh đi quẩn lại cũng chỉ có mảng, cấu trúc, con trỏ, abcxyz... đơn giản vì sách c thì nó chỉ dạy về c thôi chứ còn cái gì khác nữa đâu, những bạn mới học lập trình dễ bị lạc lối giống vậy

4/học lập trình nên bắt đầu từ đâu
trước hết là bạn xác định coi bạn thích đi theo ngành nào, lĩnh vực nào đã, xong rồi sẽ có người hướng dẫn cho bạn học những kiến thức, ngôn ngữ, công cụ trong lĩnh vực đó, còn nếu chưa xác định được hướng đi rõ ràng thì cứ lấy đại 1 ngôn ngữ nào đó mà học lấy căn bản, lời khuyên của tui là nên học c/c++, còn nếu bạn thích 1 ngôn ngữ nào đó thì cứ học thẳng nó luôn

5/nên chọn ngôn ngữ lập trình nào để lấy nền tảng căn bản
các ngôn ngữ hiện đại đều phát triển tiệm cận lẫn nhau theo hướng thân thiện, giúp người mới dễ tiếp cận nắm bắt, ngôn ngữ nào cũng có thể làm nền tảng được

hồi năm 1 tui học turbo pascal, lên năm 2 học lập trình c vô lớp thầy giảng có đúng... 10 phút là làm bài tập, đơn giản vì nó chỉ khác nhau cái cú pháp với chút xíu đặc trưng, như mảng trong pascal thì bắt đầu từ 1 còn c thì bắt đầu từ 0 vậy thôi, mà bài tập thì quanh đi quẩn lại cũng nhiêu đó, giải phương trình bậc 2, duyệt mảng, duyệt ma trận, tìm số nguyên tố, số chính phương, số hoàn hảo...., abcxyz y chang, ngoại trừ 1 số phần như con trỏ là mới vì bên pascal không có thôi, rút ra 3 điều

thứ 1, trên mạng tui thấy nhiều người khuyên nên bắt đầu bằng những ngôn ngữ như pascal hay c, rồi tiến lên java c#, rồi tiến lên abcxyz... hồi đó tui cũng được dạy theo cái lộ trình này nhưng thực tế thấy nhiều bạn bắt đầu với java, visual basic, c#, actionscript... mà giờ vẫn code ầm ầm => kinh nghiệm của tui là không có cái lộ trình nào hết, bạn thích ngôn ngữ nào cứ bắt đầu thẳng với nó, học 1 ngôn ngữ để lấy nền tảng chứ không có ngôn ngữ nào gọi là ngôn ngữ nền tảng, nền tảng chắc chỉ có assembly,

thứ 2, nhiều bạn có thể lo lắng "học xong ngôn ngữ abc nào đó mốt chuyển qua ngôn ngữ khác có lãng phí thời gian không", học ngôn ngữ quan trọng nhất là nắm bắt tư duy, mà tư duy thì không lệ thuộc ngôn ngữ, bạn nắm được cách thức tư duy rồi thì chuyển qua 1 ngôn ngữ khác cũng sẽ dễ dàng nhanh chóng hơn, như tui kể ở trên, mấy khái niệm lập trình căn bản tui đã học hết ở bên pascal rồi, qua c chỉ có học sơ cú pháp rồi làm bài tập thôi, không có lập trình viên nào chỉ biết độc 1 ngôn ngữ duy nhất đâu

thứ 3, có 1 ngoại lệ đó là đừng chọn những ngôn ngữ lỗi thời, tui học pascal xong, qua năm 2 học c thì tất cả các môn đều cài đặt bằng c hết, kĩ thuật lập trình, giải thuật, hệ điều hành, đồ họa máy tính... bài tập, giáo án, code mẫu tất cả đều là code c, pascal đúng nghĩa học xong bỏ, đúng là nó ít nhất cũng có tác dụng giúp tui học c nhanh hơn nhưng như đã nói, bạn có thể học thẳng ngôn ngữ nào bạn thích không cần "bước đệm" gì hết, tui khuyến khích c/c++ vì nó là 1 ngôn ngữ thời thượng, hiện đại, tầm ứng dụng sâu rộng, là nguồn để cho nhiều ngôn ngữ sau tham khảo và phát triển (các ngôn ngữ hệ c), trong số những thứ tui học được hồi xưa thì cái pascal chắc là thứ vô dụng lãng phí nhất

6/các môn về kĩ năng và tư duy
ở trên cũng có bạn nhắc tới mấy môn như kĩ thuật lập trình, phong cách lập trình, giải thuật, nếu coi ngôn ngữ là công cụ diễn đạt thì những môn này chính là kĩ năng và tư duy diễn đạt, mà tư duy thì không lệ thuộc ngôn ngữ (như tui cực dốt tiếng mỹ mà thử đưa tiền mỹ đây coi biết xài hông
7L1XX2F.gif
), dù bạn học ngôn ngữ nào, lĩnh vực gì thì cũng nên biết qua mấy môn ở trên

7/sách ngôn ngữ lập trình căn bản
sách lập trình thì nhiều nhưng thật ra kiến thức cũng chỉ nhiêu đó, mỗi cuốn chỉ khác nhau cách tiếp cận vấn đề mà thôi, nói nôm na giống như tin tức sự kiện thì chỉ có 1 nhưng mỗi tờ báo tiếp cận khác nhau, bình luận theo góc nhìn khác nhau, mỗi cuốn sách như 1 con đường, cuối cùng rồi cũng về la mã vì rốt cuộc đều nói về cùng 1 đối tượng thôi (dĩ nhiên phải là sách đúng chứ lụm mấy cuốn xàm trôi nổi trên mạng tên tác giả còn hông có thì thua)

theo tui là cứ lướt qua hết 1 lượt, thấy cuốn nào ưng ý thì chọn cuốn đó, đọc xong rồi nếu muốn tìm hiểu thêm thì đọc qua cuốn khác, thời gian đọc cuốn sau sẽ nhanh hơn cuốn trước vì có những thứ đã biết từ cuốn trước rồi, tốt nhất nên đọc mấy sách tiếng anh, thứ 1 vì sách tiếng anh nhìn chung tốt hơn tiếng việt, thứ 2 là luyện ngoại ngữ, bạn cũng nên chọn sách nào càng mới càng tốt để update luôn các chuẩn ngôn ngữ và công cụ mới

8/công cụ lập trình
công cụ lập trình thì mỗi hãng mỗi khác nhau, thậm chí cùng 1 công cụ nhưng khác phiên bản thôi cũng khác luôn rồi, bởi vậy code viết trên trình này xong đem qua trình khác không chạy được là bình thường, những bạn mới học lập trình chưa có đủ kinh nghiệm hay kiến thức sẽ khó fix được, để tránh rắc rối không đáng có tốt nhất bạn học sách nào thì xài công cụ theo sách đó luôn (cùng phiên bản luôn nữa thì càng tốt)

8/tiếng anh trong học lập trình
không có tiếng anh bạn không thể tiến xa được trong ngành này, nhưng theo tui học tiếng anh để đi cào phím chửi lộn mới khó, chứ tiếng anh để đọc hiểu viết tài liệu khá dễ, có bao nhiêu đó thuật ngữ, chịu khó đọc nhiều là quen thôi
 
Sửa lần cuối:

jablonec

Rìu Chiến
Đã bao giờ bạn phải...
tốn thời gian cài đặt một thuật toán sai chưa?
sử dụng cấu trúc dữ liệu quá phức tạp? Kiểm chứng chương trình nhưng lại không nhận ra được một lỗi dễ dàng trông thấy?
tốn cả một ngày trời để tìm ra một lỗi mà lẽ ra chỉ cần trong vòng 5 phút?
cần cài đặt chương trình thực thi nhanh hơn gấp 3 lần và dùng ít bộ nhớ hơn?
cố gắng để chuyển một chương trình chạy trên máy tính lớn hơn sang máy tính cá nhân (hoặc ngược lại) chưa?
sửa chương trình của người khác?
viết lại một chương trình mà bạn không hiểu nó?
 
Sửa lần cuối:

duypk

Búa Đá
Lập trình có khó không?
Nói thực mình thấy rất là khó đối với 1 thằng dân kinh tế như mình.

Học lập trình từ đâu?
Học lập trình từ lòng đam mê, tự tìm tòi, tự khám phá là chính. Nếu có khả năng, nếu có tài chính thì nên theo trường lớp bài bản.

Hồi 2012 mình đi làm, gom góp mấy tháng trời mua dc cái máy tính msi 2nd. Về khám phá vọc vạch bú lu xu, sau đó mò excel vba, lọ mọ tập tành code và tìm hiểu về code.
Sau đó qua C++, rồi qua mấy thằng lai lai C

Mong mỏi có cơ hội được tự tay mình viết app đẩy lên google play store mà khó quá. Vì thế là mình quyết định thôi khó quá bỏ qua, chú tâm vào công việc hiện tại, rảnh rảnh có thời gian code mấy cái logic tính toán finance như viết model định giá doanh nghiệp trên excel, viết mấy cái hàm quét data ngành, viết vài con bot đánh forex. Lấy code logic làm niềm vui, dùng code vào để tự động hóa 1 phần công việc, để có thể nếu kiếm dc thêm đồng nào từ nó thì lại càng zui.
 

dammage

Rìu Vàng Đôi
Lập trình có khó không?
Nói thực mình thấy rất là khó đối với 1 thằng dân kinh tế như mình.

Học lập trình từ đâu?
Học lập trình từ lòng đam mê, tự tìm tòi, tự khám phá là chính. Nếu có khả năng, nếu có tài chính thì nên theo trường lớp bài bản.

Hồi 2012 mình đi làm, gom góp mấy tháng trời mua dc cái máy tính msi 2nd. Về khám phá vọc vạch bú lu xu, sau đó mò excel vba, lọ mọ tập tành code và tìm hiểu về code.
Sau đó qua C++, rồi qua mấy thằng lai lai C

Mong mỏi có cơ hội được tự tay mình viết app đẩy lên google play store mà khó quá. Vì thế là mình quyết định thôi khó quá bỏ qua, chú tâm vào công việc hiện tại, rảnh rảnh có thời gian code mấy cái logic tính toán finance như viết model định giá doanh nghiệp trên excel, viết mấy cái hàm quét data ngành, viết vài con bot đánh forex. Lấy code logic làm niềm vui, dùng code vào để tự động hóa 1 phần công việc, để có thể nếu kiếm dc thêm đồng nào từ nó thì lại càng zui.
tui có 2 người bạn cũng dân kinh tế sau này ra làm lập trình (mà mất liên lạc lâu rồi), đam mê đôi khi phải lượm lặt trên đường đi chứ hông có ngay từ đầu

một ông nữa học sư phạm ra dạy toán cấp 3, lúc đầu cũng nhờ tui hướng dẫn vẽ mấy cái đồ thị hàm số thôi, về sau tự tìm hiểu vb với cái c# viết mấy ứng dụng quản lí với cái chương trình xếp thời khóa biểu luôn, nghĩ lại mình dân cntt chính hiệu mà học lập trình chỉ để đi giải bài tập
7L1XX2F.gif
, tui vốn đề cao tính ứng dụng, như bạn vậy là hay rồi còn gì
7L1XX2F.gif
 

duypk

Búa Đá
tui có 2 người bạn cũng dân kinh tế sau này ra làm lập trình (mà mất liên lạc lâu rồi), đam mê đôi khi phải lượm lặt trên đường đi chứ hông có ngay từ đầu

một ông nữa học sư phạm ra dạy toán cấp 3, lúc đầu cũng nhờ tui hướng dẫn vẽ mấy cái đồ thị hàm số thôi, về sau tự tìm hiểu vb với cái c# viết mấy ứng dụng quản lí với cái chương trình xếp thời khóa biểu luôn, nghĩ lại mình dân cntt chính hiệu mà học lập trình chỉ để đi giải bài tập
7L1XX2F.gif
, tui vốn đề cao tính ứng dụng, như bạn vậy là hay rồi còn gì
7L1XX2F.gif
Programing nó có 1 cái rất hay, đó chính là tư duy logic.
Nó yêu cầu không chỉ hiểu chi tiết cặn kẽ, mà phải nhìn được cả cái bức tranh lớn tổng thể thì mới có thể fit được với nhau.
Tôi giờ viết cái gì cũng chia nhỏ thành nhiều module dưới dạng class hay struct hay include, sau đó ghép nó lại với nhau.
 

jablonec

Rìu Chiến
tui có 2 người bạn cũng dân kinh tế sau này ra làm lập trình (mà mất liên lạc lâu rồi), đam mê đôi khi phải lượm lặt trên đường đi chứ hông có ngay từ đầu

một ông nữa học sư phạm ra dạy toán cấp 3, lúc đầu cũng nhờ tui hướng dẫn vẽ mấy cái đồ thị hàm số thôi, về sau tự tìm hiểu vb với cái c# viết mấy ứng dụng quản lí với cái chương trình xếp thời khóa biểu luôn, nghĩ lại mình dân cntt chính hiệu mà học lập trình chỉ để đi giải bài tập
7L1XX2F.gif
, tui vốn đề cao tính ứng dụng, như bạn vậy là hay rồi còn gì
7L1XX2F.gif
Nỗi niềm của dân IT.{embarrassed}
Programing nó có 1 cái rất hay, đó chính là tư duy logic.
Nó yêu cầu không chỉ hiểu chi tiết cặn kẽ, mà phải nhìn được cả cái bức tranh lớn tổng thể thì mới có thể fit được với nhau.
Tôi giờ viết cái gì cũng chia nhỏ thành nhiều module dưới dạng class hay struct hay include, sau đó ghép nó lại với nhau.
Đúng là bạn có đam mê, đây đúng là phong cách lập trình.
 

jablonec

Rìu Chiến
Đang loay hoay với bài toán này các bác ạ, nó không đúng, kết quả không được in ra. Bài toán: Nhập vào và in ra một bài thơ.
Code:

#include <iostream>
#include<stdio.h>
#include<conio.h>

using namespace std;

int main()
{
system("cls");
char*dong[100]; //Khai bao 100 con tro ky tu (100 dong)
int i,n;
cout<<"So dong="; cin>>n; //Nhap so dong thuc su
cin.ignore(); // Loai dau cach trong trong lenh cin o tren
for(i=0;i<n;i++)

{
dong=new char[80]; //Cap bo nho cho dong i
cin.getline(dong,80); //Nhap dong i
}
for(i=0;i<n;i++) cout <<dong<<endl; // In ket qua
getch();
}

 

lenhan555

Búa Gỗ Đôi
Mình học bachelor về accounting còn master về machine learning thấy rằng học lập trình thì dễ nhưng để đi sâu và xa cần cố gắng rất nhiều.
 

thaolegend

Búa Đá
quan trọng là bạn đến với lập trình với mục đích gì học chơi hay muốn ra nghề và trước đó có kiến thức nền về máy tính k đã
học chơi thì sao cũng dc
còn ra nghề nó có nhiều dạng tự học ở nhà mì ăn liền hay vô mấy trường đh-cđ hay các
trung tâm để chuyên sâu vô trường thì cái này nó k có gì để nói trường dạy gì học đó

tay ngang mì ăn liền thì nên vào mảng web html-css với plugin javascript (mấy cái này k cần quá nhiều kiến thức lập trình như oop hay database) phù hợp cho tay ngang tự học ở nhà tầm 1 năm r trong thời gian đó cố kiếm mấy web nào đó về bán hàng hay đặt phòng khách sạn gì ấy cố gắng mà làm giống y chang nó làm tầm 4-5 web là bạn có thể xin vô làm front-end dev junior cho mấy công ty outsource lương tầm 8 max là 20 tùy khả năng .. thị trường mảng này việc nhiều lắm k thiếu đâu nhất là bên nhật tới đây nếu muốn thì chuyên tu thêm k thì hoàn toàn có thể an phận chả sao cả
làm tầm 1 thời gian thì học thêm mấy cái như cms wordpress hoặc php hay ajax gì ấy để nâng trình nâng lương k thì chuyên sâu thêm javascript để viết các plugin hay theme gì ấy r bán trên các chợ
 

jablonec

Rìu Chiến
Mình đang học về phần hàm trong C++. Ví dụ : Dưới đây là một dạng đơn giản của hàm giải phương trình bậc 2.

Code:

#include <iostream>
#include<math.h>
#include<stdio.h>
#include<conio.h>

using namespace std;
int gptb2(float a,float b, float c, float*p, float*q)
{
float d;
d=(b*b)-4*a*c;
if(d<0) return 0;
else if(d==0){*p=-b/(2*a); return 1;}
else {
*p=(-b+sqrt(d))/(2*a);
*q=(-b-sqrt(d))/(2*a);
return 2;
}

}
Chạy mà bị báo lỗi này các bác ạ:
error: undefined reference to 'winmain'
ld returned 1 exit status

Mấy ngày nay seach google để sửa lỗi mà chưa được. {ah}
 

dammage

Rìu Vàng Đôi
Mình đang học về phần hàm trong C++. Ví dụ : Dưới đây là một dạng đơn giản của hàm giải phương trình bậc 2.

Code:


Chạy mà bị báo lỗi này các bác ạ:
error: undefined reference to 'winmain'
ld returned 1 exit status

Mấy ngày nay seach google để sửa lỗi mà chưa được. {ah}
bạn thiếu cái hàm main rồi, mỗi chương trình phải có ít nhất 1 hàm main mới được

theo tui bạn nên kiếm 1 cuốn sách rồi học theo, kiến thức được hệ thống lại và sắp xếp hợp lí, mấy bài tut rải rác trên mạng chỉ có tác dụng tham khảo thôi
 

jablonec

Rìu Chiến
bạn thiếu cái hàm main rồi, mỗi chương trình phải có ít nhất 1 hàm main mới được

theo tui bạn nên kiếm 1 cuốn sách rồi học theo, kiến thức được hệ thống lại và sắp xếp hợp lí, mấy bài tut rải rác trên mạng chỉ có tác dụng tham khảo thôi
Mình cũng nghĩ như bạn, nhưng mỗi nỗi đọc cuốn này nó bảo khai báo trên thay thế hàm main(), mà khi bổ sung thêm hàm main() thì lại báo lỗi.

C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|12|error: 'b' was not declared in this scope|