1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài Ngôn Ngữ Lập Trình

18 574 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 117 KB

Nội dung

Đề tài Ngôn Ngữ Lập Trình

Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước Ý Kiến Của Giáo Viên 1 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước MỤC LỤC Trang Lời mở đầu 3 Phân tích thiết kế hệ thống! 4 1.1 Phân tích hệ thống 4 1.2 Các cấu trúc được khai báo trong chương trình 6 1.3 Các hàm và chức năng của hàm 6 1.4 Thuật toán cơ bản 7 1.5 Các kiểu dữ liệu trong ngôn ngữ 16 1.6 Bảng phân công công việc 17 2 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước 3 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước LỜI MỞ ĐẦU Ngôn ngữ lập trình là một môn học nền tảng,cung cấp cho sinh viên những kiến thức cơ bản của ngôn ngữ lập trình, qua đó sinh viên có thể hiểu rõ hơn về các ngôn ngữ lập trình cụ thể (C/C++,Pascal, C#, Java…), sử dụng chúng một cách tốt hơn và trên cơ sở kết hợp với lý thuyết chương trình dịch để tạo ra một ngôn ngữ mới. Đồng thời, cung cấp các xu hướng lập trình để sinh viên có thể tiếp cận nhanh với chúng và có được sự lựa chọn một ngôn ngữ lập trình phù hợp khi cần giải quyết các đề án tin học trong thực tế. Từ những điều trên, chúng em mong muốn viết ra một ngôn ngữ lập trình mới,sử dụng tiếng Việt, gần gũi và dễ sử dụng dựa trên ngôn ngữ lập trình C++. Tuy có thể còn một vài hạn chế, song ngôn ngữ mới xây dựng bộ biên dịch và thông dịch, đảm bảo độ chính xác trong các tính tóan, dễ viết và dễ đọc Chúng em xin chân thành cảm ơn! 4 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước PHÂN TÍCH, THIẾT KẾ HỆ THỐNG Mô tả chức năng chương trình : Chương trình là một ngôn ngữ lập trình cho phép người dùng có thể viết các thuật toán, các giải thuật… Ngoài ra, chương trình không phải là một trình biên dịch mà nó còn cung cấp cho người dùng một giao diện đồ họa, dễ hiểu, ngắn ngọn, xúc tích! 1.1. Phân tích hệ thống : Ngôn ngữ lập trình có hỗ trợ cả giao diện gôm có các thành phần: Các kiểu dữ liệu, xử lý dữ liệu, xử lý tô màu! a) Các kiểu dữ liệu  Kiểu số nguyên: dùng để lưu trữ các số nguyên, có thể âm!  Kiểu số thực: dùng để lưu trữ các số thực trong đó có cả các số nguyên! 5 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước  Kiểu ký tự: dùng để lưu các ký tự trong bảng mã ASCI, ngoài ra nó còn có thể lưu trữ các ký tự kiểu UNICODE  Kiểu chuỗi dùng để lưu một dãy ký tự liên tiếp nhau! Kiểu chuỗi thực sự là một mảng các ký tự liên tiếp nhau!  Kiểu logic: là kiểu dữ liệu dùng để lưu dạng đúng hoặc sai! b) Xử lý tô màu Dùng để tô màu các giá trị tr5ong c) Phân tích dữ liệu Đây là phần quan trọng nhất của bất cứ ngôn ngữ lập trình! Một ngôn ngữ lập trình có tốt hay không điều do phần này quyết định! 6 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước Bao gồm các phần sau!  Phân tích toàn bộ hệ thống: dùng để lưu trữ cấu trúc do người lập trình tạo nên! Tại đây nó có thể kiểm tra lỗi của chương trình!  Phân tích theo dòng dùng để phân tích cấu trúc của 1 dòng trong chương trình! Phân tích theo dòng là con của phân tích toàn bộ hệ thống!  Biến lưu trữ: dùng để lưu danh sách biến! 1.2. Các cấu trúc được khai báo trong chương trình!  TypeVar: dùng để định danh các kiểu dữ liệu là gì!  TypeLetter: dùng để định danh các loại từ là gì! o Ví dụ: Biến, Hàm, …  clsStrucLetter: Dùng để lưu cấu trúc của một từ, bao gồm: từ và TypeLetter  clsLine: Dùng để lưu cấu trúc của một dòng, bao gồm: danh sách các clsStrucLetter, số dòng, nội dung của dòng, nhãn của dòng (dùng trong những câu lệnh goto)  clsBuild: Tập hợp các clsLine lại với nhau  clsAnalysis: dùng trong việc tô màu các từ khóa! Mỗi khi thay đổi một ký tự trong editor thì việc tô màu sẽ bắt đầu nhiêm vụ của mình! 1.3. Các hàm và chức năng của hàm: 1.3.1. Các hàm tác động đến đối tượng: 7 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước  void _rct_KeyPress: dùng để cảm nhận sự thay đổi của Editor mà có những biện pháp tô màu thật hiệu quả!  Void to_mau: dùng đê tô màu toàn bô Editor 1.3.2. Hàm tạo xử lý 1.3.2.1. Public  public void Build(): dùng để kiểm tra dòng dữ liệu mà người lập trình vô có bị lỗi gì hay không!  public void Run(): dùng để thực thi câu lệnh! 1.3.2.2. Private  void Tinh() : Dùng để tính từng dòng dữ liệu  int GetNextNgoacDong(): dùng để trả về dấu “{“ kế tiếp nằm ở dòng nào!  void TinhDieuKien(): dùng để kiểm tra điều kiện if có đúng hay không!  string TinhLogic(): dùng để tính hai giá trị logic với nhau!  void TinhToan(): dùng để tính các giá trị của từng dòng!  bool TinhNgoac(): dùng để tính giá trị trong ngoặc sau đó mới tính các giá trị bình thường!  void AnalysisLetter(): dùng để cắt các ký tự ra và phân tích những ký tự đó thuộc loại nào! 1.4. Thuật tóan cơ bản : Chương trình tiến hành cắt hết tất cả các từ! Sau đó đi phân tích từ trên xuống với các cấu trúc từ mới vừa phân tích! * Code mô phỏng cho ý tưởng trên  Code tách các ký tự void AnalysisLetter(string LineContent) { int cutSart = -1; int cutLength = 0; for (int i = LineContent.Length - 1; i > -1; i ) { int c = LineContent[i]; if ((c > 96 && c < 123) || (c > 64 && c < 91) || (c > 47 && c < 58) || LineContent[i] == '.') { if (cutSart == -1) cutSart = i; cutLength++; 8 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước } else { if (cutLength > 0) { string st = LineContent.Substring(cutSart - cutLength + 1, cutLength); try { int a = Convert.ToInt32(st); _tmp.Add(new clsStrucLetter(st, TypeLetter.So)); } catch { try { Decimal a = Convert.ToDecimal(st); _tmp.Add(new clsStrucLetter(st, TypeLetter.SoThuc)); } catch { _tmp.Add(new clsStrucLetter(st, TypeLetter.Unkhown)); } } } switch (LineContent[i]) { case '{': _tmp.Add(new clsStrucLetter("{", TypeLetter.NgoacNhonMo)); break; case '}': _tmp.Add(new clsStrucLetter("}", TypeLetter.NgoacNhonDong)); break; case '(': _tmp.Add(new clsStrucLetter("(", TypeLetter.NgoacDonMo)); _sumNgoac++; break; case ')': _tmp.Add(new clsStrucLetter(")", TypeLetter.NgoacDonDong)); _sumNgoac ; break; case '+': _tmp.Add(new clsStrucLetter("+", TypeLetter.Cong)); break; case '-': _tmp.Add(new clsStrucLetter("-", TypeLetter.Tru)); break; case '*': _tmp.Add(new clsStrucLetter("*", TypeLetter.Nhan)); break; 9 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước case '/': _tmp.Add(new clsStrucLetter("/", TypeLetter.Chia)); break; case ',': _tmp.Add(new clsStrucLetter(",", TypeLetter.Phay)); break; case '=': _tmp.Add(new clsStrucLetter("=", TypeLetter.Gan)); break; case ';': _tmp.Add(new clsStrucLetter(";", TypeLetter.ChamPhay)); break; case '<': _tmp.Add(new clsStrucLetter(">", TypeLetter.NhoHon)); break; case '>': _tmp.Add(new clsStrucLetter(">", TypeLetter.LonHon)); break; } cutSart = -1; cutLength = 0; } } if (cutLength > 0) { string st = LineContent.Substring(cutSart - cutLength + 1, cutLength); _tmp.Add(new clsStrucLetter(st, TypeLetter.Unkhown)); } UpdateType(); for(int i = _tmp.Count - 1; i> -1; i ) { _letter.Add(_tmp[i]); } } void UpdateType() { for (int i = _tmp.Count - 1; i > -1; i ) { if (_tmp[i].TypeContent == TypeLetter.Unkhown) { if (i == _tmp.Count - 2 && _tmp[_tmp.Count - 1].TypeContent == TypeLetter.Ham) _tmp[i].TypeContent = TypeLetter.TenHam; else if (_tmp[i].Letter == "ham") _tmp[i].TypeContent = TypeLetter.Ham; else if (_tmp[i].Letter == "dieukien") _tmp[i].TypeContent = TypeLetter.DieuKien; else if (_tmp[i].Letter == "nguoclai") _tmp[i].TypeContent = TypeLetter.NguocLai; 10 [...]... GetNextNgoacDong(Index); Index = a; if (lst[Index + 1].LstLetter[0].Letter.IndexOf("nguoclai") > -1) _go[_go.Count - 1] = true; else _go.RemoveAt(_go.Count - 1); } } 16 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước 1.5 Các kiểu dữ liệu trong ngôn ngữ!  Các kiểu dữ liệu thông dụng :  -so (tương đương integer trong C#) : đây là kiểu rất thông dụng mà giá trị của nó là tất cả các số nguyên nằm trong phạm... C#)  -hoac ( tương đương || trong C#) 17 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước Bảng phân công công việc Tên thành viên Trần Thị Hồng Thắm Đinh Thị Bích Hằng Nguyễn Minh Thành Công việc Viết class dùng để bắt sự kiện xảy ra, tô màu các từ khóa cho chương trình Đảm nhận việc xử lý cho các Form Viết các class phân tích các từ và biên dịch chương trình 18 ... TypeVar.SoThuc); } } } catch (Exception ex) { Program.currLine = line.Line; throw new Exception(ex.Message + "\nỞ dòng số '" + line.Line + "'"); } break; } break; case TypeLetter.DieuKien: 12 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước case TypeLetter.NguocLaiDieuKien: int en = line.LstLetter.Count - 1; TinhToan(line, 1, ref en); for (i = 1; i < line.LstLetter.Count; i++) if (line.LstLetter[i].TypeContent... ReturnValuelstVar(line, end); if (_isBuild == false) _rctDetail.AppendText("Dòng số '" + line.Line + "', Biến '" + line.LstLetter[0].Letter + "' = " + lstVar[line.LstLetter[0].Letter].Value + "\n"); break; } 13 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước } void TinhDieuKien(clsLine line, ref int Index) { _go.Add(false); bool _Co = true; do { int i = GetLastIndexOfLineByChar(line, "(", 1); if (i == -1 && _Co) clsError.ErrorStruct(line.Line);... TypeLetter.NhoHon || line.LstLetter[i + 2].TypeContent == TypeLetter.Gan) st += line.LstLetter[i + 2].Letter; switch (st) { case "==": _flag = (n == m); break; case "": _flag = (n > m); break; case "=": _flag = (n >= m); break; case "!=": _flag = (n != m); break; default:... - 1].Letter = TinhLogic(line.LstLetter[a - 1].Letter, line.LstLetter[a + 1].Letter, TypeLetter.Hoac); line.LstLetter[a - 1].TypeContent = TypeLetter.Logic; line.LstLetter.RemoveAt(a + 1); 15 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước line.LstLetter.RemoveAt(a); } else break; } while (true); for (int i = line.LstLetter.Count - 1; i > -1; i ) if (line.LstLetter[i].TypeContent == TypeLetter.NgoacDonDong.. .Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước else if (_tmp[i].Letter == "lap") _tmp[i].TypeContent = TypeLetter.Lap; else if (_tmp[i].Letter == "dung") _tmp[i].TypeContent = TypeLetter.Logic; else if (_tmp[i].Letter... lst.Add(new clsLine(i + 1, arr[i])); } if (lst.Count > 2) { if (lst[1].LstLetter.Count != 1) clsError.ErrorStruct(1); } else { clsError.ErrorStruct(0); } int n = GetNextNgoacDong(0); try { 11 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước if (lst[0].LstLetter[0].Letter != "ham" || lst[0].LstLetter[1].TypeContent != TypeLetter.TenHam || lst[0].LstLetter[2].TypeContent != TypeLetter.NgoacDonMo || . Long Phước 3 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước LỜI MỞ ĐẦU Ngôn ngữ lập trình là một môn học nền tảng,cung cấp cho sinh viên những kiến thức cơ bản của ngôn ngữ lập trình, qua. Đây là phần quan trọng nhất của bất cứ ngôn ngữ lập trình! Một ngôn ngữ lập trình có tốt hay không điều do phần này quyết định! 6 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước Bao gồm. xin chân thành cảm ơn! 4 Đề tài: Ngôn Ngữ Lập Trình GVHD: Th.S Tôn Long Phước PHÂN TÍCH, THIẾT KẾ HỆ THỐNG Mô tả chức năng chương trình : Chương trình là một ngôn ngữ lập trình cho phép người dùng

Ngày đăng: 17/07/2015, 17:58

TỪ KHÓA LIÊN QUAN

w