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
Bạn có thể chia sẻ thêm về bạn dc ko?
Hiện tại bạn có thể lên kênh toidicodedao để có thể có định hướng về ngành lập trình.
Lập trình nói chung là khó:
1. Tư duy logic - lúc nào cũng phải suy nghĩ để giải quyết vấn đề nên nếu toán bạn yếu thì hơi ko phù hợp. -> kiên trì thì vẫn được
2. Cần siêng năng + đọc nhiều tài liệu rất rất nhiều, công nghệ thay đổi từng ngày.
3. English là tiên quyết nếu bạn muốn có việc lương cao ở ngành này.

- Bắt đầu từ đâu thì mình nên nghĩ là bạn code python hay java
Python: dể học, dể code, sau này có thể làm AI kiểu nghiên cứu chơi vui thôi chứ muốn kiếm việc ở mảng này -> căng :v, hoặc làm web
Java: khó hơn cần có kiến thức OOP ngay lúc đầu nhưng có thể đi android và web nhu cầu tuyển cao mà chắc tầm senior
 
đừng nghe lời mấy thằng sinh viên kêu học C/ C++ chỉ phù hợp ở DH bạn cần tiết kiệm thời gian để còn áp dụng cái mình học ngay.
1 link cho bạn tham khảo bắt đầu nhiệp lập trình:
 

malemkhoang

Rìu Vàng
Học lập trình thì khó, nhưng lập trình thì không khó, cứ biết nấu súp hay nấu cháo gì đó là được.

[SOUP]

import requests
from bs4 import BeautifulSoup
url = 'https://www.dtv-ebook.com/sach-truyen-ebook-313/'
# lập mảng địa chỉ trang: 1.html - 126.html
a_dc = [] # khai báo một list (mảng)
for i in range(1, 127):
# s = str(i) + '.html'
dcweb = url + str(i) + '.html'
a_dc.append(dcweb) # nhập địa chỉ trang vào list [0] - [125], tức là có 126 phần tử

a_tenTP = []
a_dcTP = []
# mảng a_dc chứa 126 địa chỉ trang từ 1.html đến 126.html
# tải trang 1
tr1 = requests.get(a_dc[0]).text
soup = BeautifulSoup(tr1, 'lxml')
# súp đã nấu xong, chín rồi, nhanh quá
# lọc súp nào
# lấy thẻ a lớp th, radius
th_a = soup.find_all('a', class_='th')
# xem thử một cái nào
th_a[0]
# chính xác
# nhập địa chỉ trang vào mảng a_dcTP
# nhập tên truyện vào mảng a_tenTP
# trong vòng một nốt nhạc
for i in range(len(th_a)):
a_dcTP.append(th_a.get('href'))
a_tenTP.append(th_a.get('title'))

# thử xem
a_dcTP[0]
a_tenTP[0]
# làm nồi súp nữa
truyen = requests.get(a_dcTP[0]).text
soup = BeautifulSoup(truyen, 'lxml')
# đây là súp truyện
# dùng extract để xóa nội dung không cần thiết: lớp clearfix
diet = soup.find_all(class_='clearfix')
for i in range(len(diet)):
d = diet.extract()

# đã xóa xong
# lấy ra là đoạn text nội dung và địa chỉ tải
# nội dung nằm trong thẻ div có id là chitiet
chitiet = soup.find_all(id='chitiet')
# địa chỉ tải nằm trong thẻ div có id là download
download = soup.find(id='download')
# lọc ra địa chỉ download nằm trong thẻ a
# lấy các thẻ a
dc_download = download.find_all('a')
# xem các địa chỉ tải
for i in range(len(dc_download)):
print(dc_download.get('href'))


[/SOUP]

Mình cho là vừa lập trình vừa học sau khi đã học lập trình.
 

tigerbeer400

Rìu Sắt Đôi
Mình tóm cho bạn:
- Học lập trình -> học cú pháp, cấu trúc, tựa như bạn học chữ, học toán để biết đọc và cộng trừ nhân chia ấy. Nói trắng ra, học lập trình là học cách sử dụng tool - ngôn ngữ 1 cách chính xác, theo qui ước.
- Lập trình -> bạn sử dụng thuật toán, tư duy logic, dùng tool - ngôn ngữ lập trình, biến 1 cái yêu cầu của con người, thành 1 công cụ sài được.
 
Sửa lần cuối:

Teplice

Offline
Thành viên BQT
Muốn học đầu tiên bạn cần tìm hiểu một phần mềm để code, bên cạnh đó cần nguồn tài liệu và học thêm tiếng anh. Muốn học toán thì đến các lò đào tạo ôn thi đại học, ở đó bạn sẽ được nâng cao trình độ. Mình chỉ có góp ý với bạn vậy thôi. GOODLUCK.
Gửi bạn ít tài liệu:


 

jablonec

Rìu Chiến
Bạn có thể chia sẻ thêm về bạn dc ko?
Cảm ơn bạn đã quan tâm, trước mình có học bên Điện Tử - Viễn Thông, sau đó ra trường học 6 tháng học nghề bên CNTT, sau đó đi nước ngoài, mãi đến bây giờ 33 mình cảm thấy vẫn đam mê theo code nên mình muốn bắt đầu lại. Đam mê theo CNTT mà học ĐTVT và dòng đời nó xô đẩy đi làm shipper.
Hóng ké.. Em cũng tập tành học hành lập trình cho có với thời 4.0 @@ .. Mà em lập trình kiểu lẩu thập cẩm.. Lượm code này 1 chút, code kia 1 chút rồi về xào nấu thành cái của mình.. Chưa học bài bản cho lắm..
Có tài liệu nào không bạn?
 

jablonec

Rìu Chiến
Mình đang code bên c++. Đang học bài Thống kê số chữ 'a' xuất hiện trong xâu s.
Code:

#include <iostream>
#include<string.h>
using namespace std;

int main()
{
const int MAX=100;
char s[MAX+1];
cout<<"Cho biet so phan tu: ";
int sokitu=0;
cin.getline(s,MAX+1);
for(int i=0;i<strlen(s);i++) if(s='a') sokitu++;
cout<<"So ki tu="<<sokitu<<endl;
}



Khi mình biên dịch chương trình thì chương trình chỉ thực hiện đếm số ký tự trong xâu, chứ không phải là đếm số kí tự a trong xâu, loay hoay mà chưa tìm ra lỗi các bác ạ.
 

jablonec

Rìu Chiến
Khi mình biên dịch chương trình thì chương trình chỉ thực hiện đếm số ký tự trong xâu, chứ không phải là đếm số kí tự a trong xâu, loay hoay mà chưa tìm ra lỗi các bác ạ.
Sau một ngày lên các trang mạng tìm kiếm và suy nghĩ rất nhiều. Lỗi nằm ở phía này các bác ạ. Cũng có tý gọi là khởi sắc, chỉ cần không bỏ cuộc.
for(int i=0;i<strlen(s);i++) if(s=='a') sokitu++; Chỗ dòng if(s có 2 dấu ==, chứ không phải 1 dấu)
 

jablonec

Rìu Chiến
Chạy dòng chữ quảng cáo vòng tròn từ phải sang trái giữa màn hình. Giả sử hiện 30 kí tựcủa xâu quảng cáo. Ta sử dụng vòng lặp. Cắt 30 kí tự đầu tiên của xâu cho vào biến hien, hiện biến này ra màn hình. Bước lặp tiếp theo cắt ra 30 kí tự của xâu nhưng dịch sang phải 1 kí tự cho vào biến hien và hiện ra màn hình. Quá trình tiếp tục, mỗi bước lặp ta dịch chuyển nội dung cần hiện ra màn hình 1 kí tự, do hiệu ứng của mắt ta thấy dòng chữ sẽ chạy từ biên phải về biên trái của màn hình. Để quá trình chạy theo vòng tròn (khi hiện đến kí tự cuối của xâu sẽ hiện quay lại từ kí tự đầu của xâu) chương trình sử dụng biến i đánh dấu điểm đầu của xâu con cần cắt cho vào hien, khi i bằng độ dài của xâu chương trình đặt lại i = 0 (cắt lại từ đầu xâu). Ngoài ra, để phần cuối xâu nối với phần đầu (tạo thành vòng tròn) ngay từ đầu chương trình, xâu quảng cáo sẽ được nối thành gấp đôi.
code:

#include <iostream>
#include<conio.h>
#include<dos.h>
#include<string>
#include<windows.h>
#include<fstream>
using namespace std;

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);
char hien[31];
i=0;
while (!kbhit()) {
strncpy(hien,s+i,30);
hien[30]='\0';
gotoxy(20,10); cout<<hien;
delay(100);
i++; if(i==dd) i=0;
}
}


Chạy mà báo lỗi thế này các bác ạ. Đang loay hoay tìm cách mà chưa được. Em chạy chương trình trên phần mềm code:: block

C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|16|error: 'i' was not declared in this scope|
C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|18|error: 's' was not declared in this scope|
C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|20|error: 'gotoxy' was not declared in this scope|
C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|21|error: 'delay' was not declared in this scope|
 
Chạy dòng chữ quảng cáo vòng tròn từ phải sang trái giữa màn hình. Giả sử hiện 30 kí tựcủa xâu quảng cáo. Ta sử dụng vòng lặp. Cắt 30 kí tự đầu tiên của xâu cho vào biến hien, hiện biến này ra màn hình. Bước lặp tiếp theo cắt ra 30 kí tự của xâu nhưng dịch sang phải 1 kí tự cho vào biến hien và hiện ra màn hình. Quá trình tiếp tục, mỗi bước lặp ta dịch chuyển nội dung cần hiện ra màn hình 1 kí tự, do hiệu ứng của mắt ta thấy dòng chữ sẽ chạy từ biên phải về biên trái của màn hình. Để quá trình chạy theo vòng tròn (khi hiện đến kí tự cuối của xâu sẽ hiện quay lại từ kí tự đầu của xâu) chương trình sử dụng biến i đánh dấu điểm đầu của xâu con cần cắt cho vào hien, khi i bằng độ dài của xâu chương trình đặt lại i = 0 (cắt lại từ đầu xâu). Ngoài ra, để phần cuối xâu nối với phần đầu (tạo thành vòng tròn) ngay từ đầu chương trình, xâu quảng cáo sẽ được nối thành gấp đôi.
code:

#include <iostream>
#include<conio.h>
#include<dos.h>
#include<string>
#include<windows.h>
#include<fstream>
using namespace std;

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);
char hien[31];
i=0;
while (!kbhit()) {
strncpy(hien,s+i,30);
hien[30]='\0';
gotoxy(20,10); cout<<hien;
delay(100);
i++; if(i==dd) i=0;
}
}


Chạy mà báo lỗi thế này các bác ạ. Đang loay hoay tìm cách mà chưa được. Em chạy chương trình trên phần mềm code:: block

C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|16|error: 'i' was not declared in this scope|
C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|18|error: 's' was not declared in this scope|
C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|20|error: 'gotoxy' was not declared in this scope|
C:\Users\TC\OneDrive\Documents\TSLN\main.cpp|21|error: 'delay' was not declared in this scope|
Làm bị lỗi thì cứ theo command line báo lỗi gì thì fix theo thôi bạn. Code của bạn mình đang thấy là i và s chưa được khai báo mà đã đem đi sử dụng rồi.

gotoxy và delay là function mà bạn cũng chưa khai báo luôn, hoặc import sai từ lib nên chương trình không nhận được
 
Theo mình học lập trình vừa dễ lại vừa khó.
- Dễ ở chỗ hiện tại gần như bất kì logic nào cũng có thể search được trên internet và copy về sử dụng. Nếu chịu khó tìm sẽ ra, mình thấy đa số các bạn học trái ngành khi bắt đầu thường sử dụng cách này.
- Khó ở chỗ là mình học chuyên sâu về lập trình, những dòng code được thực thi như thế nào, code nào được execute trước, code nào sau. Đi từ những thứ cơ bản lên trước.


Nếu các bạn có đam mê muốn học lập trình. Theo kinh nghiệm của mình, các bạn nên học từ theo thứ tự như sau
1. Nhập môn lập trình.
2. Kĩ thuật lập trình.
3. Lập trình hướng đối tượng, Toán rời rạc(Có lợi cho các phép so sánh trong lập trình)
4. Cấu trúc dữ liệu.

Khi học xong thì các bạn sẽ trở thành Coder.

Về ngôn ngữ lập trình mình nghĩ các bạn nên học C/C++ hoặc Java. Vì 2 ngôn ngữ này sẽ xây dựng cho mình kiến thức nền về lập trình rất tốt. Khi mình chuyển qua bất kì ngôn ngữ nào khác thì cũng sẽ vững hơn những bạn không bắt đầu từ 2 ngôn ngữ này
- C/C++: Chưa bao giờ lỗi thời, dùng để code application, server, socket, mircosoft service, gaming, mobile, ...
- Java: 1 trong những ngôn ngữ ưa chuộng để code server
- Python: Cách viết code tựa như ngôn ngữ tự nhiên của tiếng Anh nên cũng có cộng đồng đông đảo. Nhưng nếu bạn muốn học python để tiếp cận về AI thì mình khuyên các bạn cũng nên có kiến thức cực kì vững chắc về các môn Toán Cao Cấp, Khoa Học Máy tính. Nếu không thì mình cũng chỉ có thể xài những model mà người khác đã build sẵn, chứ không chuyên sâu được.
 

jablonec

Rìu Chiến
Làm bị lỗi thì cứ theo command line báo lỗi gì thì fix theo thôi bạn. Code của bạn mình đang thấy là i và s chưa được khai báo mà đã đem đi sử dụng rồi.

gotoxy và delay là function mà bạn cũng chưa khai báo luôn, hoặc import sai từ lib nên chương trình không nhận được
Khi code mình đã khai báo biến cho i và s là kiểu nguyên int nhưng nó lại gây lỗi với biến char hien[31], còn gotoxy và delay, ở trên đã khai báo trong tệp (#include<dos.h> và #include<windows.h>). Theo mình đọc thì khi code bên phần mềm code:: block, hàm delay không có thì phải thay vào đó là hàm sleep.