Bài 4: Mảng Trong Pascal

--- Bài mới hơn ---

  • Pascal: Các Kiểu Dữ Liệu Cơ Bản
  • Một Số Lưu Ý Về Chương Trình Con
  • Bài 3 (Tiếp Theo): Biến Toàn Cục, Biến Cục Bộ Và Phạm Vi Của Biến
  • Pascal Cơ Bản – Chủ Đề Ii: Một Số Kiểu Dữ Liệu Chuẩn
  • Câu Lệnh Điều Khiển Vòng Lặp Break, Continue, Goto
  • 1. Mảng 1 chiều:

    – Có thể hiểu nôm na: Mảng 1 chiều là dãy số hữu hạn.

    vd: nhiệt độ mỗi ngày trong tuần (tháng/năm), cấp số cộng, cấp số nhân…

    – Chỉ số của mảng:

    vd: Xét mảng: 10 20 30 5 6 7

    là một dãy các số tự nhiên bất kì có 6 phần tử mà

    phần tử thứ 1 là 10

    phần tử thứ 2 là 20

    phần tử thứ 3 là 30

    phần tử thứ 4 là 5

    phần tử thứ 5 là 6

    phần tử thứ 6 là 7

    Lưu ý!

    Xét dãy: Ti Suu Dan Mao Thin Ti Ngo Mui Than Dau Tuat Hoi

    cũng được coi là mảng 1 chiều, trong đó:

    • Phần tử 1 là Ti
    • Phần tử 2 là Suu
    • Phần tử 3 là Dan
    • Phần tử 4 là Mao
    • Phần tử 5 là Thin

    Xét dãy:cũng được coi là mảng 1 chiều, trong đó:

    – Cách tham chiếu đến mảng: A=10; A=30; A=6; A of integer;

    b,c:array of integer;

    var a,b,c:mang;

    – Cách nhập/xuất mảng 1 chiều:

    vd:- Cách nhập/xuất mảng 1 chiều:

    var a:array=’); readln(A);

    end.

    2. Mảng 2 chiều:

    – Khái niệm: Nếu mảng 1 chiều là dãy thì mảng 2 chiều là bảng các phần tử cùng kiểu (bảng các số).

    – Tham chiếu: Vì mảng 2 chiều là bảng nên sẽ cần chỉ số hàng và chỉ số cột: A of Integer;

          i,j,N,Max,k,c,M:Integer;

    begin

         write(‘So hang cot:’);readln(N,M);Max:=0;

         for i:=1 to N do

          for j:=1 to M do

           begin

                write(‘A);

           end;

         for i:=1 to N do

           begin

                for j:=1 to M do

                write(A[i,j]);

           end;

    end.

    Tổng hợp và biên tập

    Mảng 1 chiều,

    Mảng 2 chiều,

    Pascal cơ bản

    --- Bài cũ hơn ---

  • Dữ Liệu Kiểu Mảng (Array)
  • Làm Việc Với File Trong Pascal
  • Tin Học Cho Người Việt
  • Cùng Nhau Khám Phá, Cùng Nhau Học Tập
  • Phương Thức Thanh Toán D/a
  • Làm Việc Với Mảng (Array) Trong Javascript

    --- Bài mới hơn ---

  • Ethereum, Một Nền Tảng Blockchain Đầy Triển Vọng!
  • Xây Dựng Dapp Đầu Tiên Của Bạn Với Web3.js
  • Xây Dựng Front End Tương Tác Với Smart Contract
  • Cùng Khám Phá Sức Mạnh Của Es6 Generators
  • Bạn Có Hiểu Biết Về Stand Trong Jojo’s Bizarre Adventure?
  • Chào các bạn,

    Trong lập trình javascript, chúng ta thường xuyên phải làm việc với array (mảng), vì vậy nếu biết cách vận dụng thành thạo các hàm xử lý mảng thì bạn sẽ code nhanh hơn và dễ dàng hơn.

    Bài viết sau đây mình sẽ gửi tới bạn tất cả các phương thức, thuộc tính của đối tượng Array trong Javascript, mời các bạn cùng theo dõi.

    Các phương thức, thuộc tính của Array trong Javascript

    concat()

    concat() được sử dụng khi bạn muốn gộp nhiều mảng lại với nhau, phương thức này sẽ trả về một mảng mới.

    Cú pháp: array1.concat(array2, array3, ..., arrayX). Trong đó array2, array3, ..., arrayX là các mảng bạn muốn gộp lại với mảng array1.

    var iphonePhones = ; var nokiaPhones =

    copyWithin()

    copyWithin() được sử dụng khi bạn muốn trích một đoạn trong mảng và ghi đè vào một đoạn khác trong chính mảng đó.

    Cú pháp: array.copyWithin(target, start, end). Trong đó:

    • target: Vị trí bắt đầu ghi đè.
    • start: Không bắt buộc, là vị trí bắt đầu của mảng muốn trích, mặc định là 0.
    • end: Không bắt buộc, là vị trí kết thúc của mảng muốn trích, mặc định là độ dài của mảng.

    Lưu ý: copyWithin() sẽ không bao giờ làm thay đổi số lượng phần tử có trong mảng.

    // Copy toàn bộ mảng và ghi đè từ vị trí thứ 2 var fruits = // Copy các phần tử từ vị trí 2 tới vị trí 4 sau đó ghi đè từ vị trí 0 var samsungPhones =

    entries()

    entries() sẽ trả về một Array iterator từ mảng ban đầu, có giá trị là một cặp ; var f = fruits.entries(); for (let pair of f) { console.log(pair); } /* Output: */

    every()

    every() được sử dụng khi bạn muốn kiểm tra xem tất cả các phần tử trong mảng có thỏa mãn một điều kiện do bạn đặt ra hay không. Phương thức trả về true khi tất cả các phần tử đều thỏa mãn, trả về false khi một trong số các phần tử không thỏa mãn.

    Điều kiện bạn đặt ra được thể hiện dưới dạng một callback, callback trả về true có nghĩa là thỏa mãn, trả về false là không thỏa mãn.

    Cú pháp: array.every(function(currentValue, index, arr), thisValue). Trong đó:

    • function(currentValue, index, arr): function callback chạy cho mỗi phần tử mảng.
      • currentValue: Giá trị của phần tử hiện tại
      • index: Không bắt buộc, là vị trí của phần tử hiện tại
      • arr: Không bắt buộc, là mảng mà chứa phần tử hiện tại
    • thisValue: Không bắt buộc, nếu truyền vào thì nó sẽ được làm giá trị this của function, nếu không truyền this sẽ là undefined.

    // Kiểm tra mảng numbers có phải toàn số lẻ hay không? let numbers = ; let isDescArray = numbers.every(function (item, index, arr) { if (index == 0) { return true } else { return item < arr; fruits.fill("Kiwi", 2, 4); // var doneTasks = tasks.filter(function (task) { return task.status == 'done'; }); console.log(doneTasks); /* Output: ; // Tìm user có id là 2 var myId = 2; var myInfo = users.find(function (user) { return chúng tôi == myId; }); console.log(myInfo); // {id: 2, name: "Trang"} // Tìm phần tử đầu tiên trong mảng có giá trị lớn hơn 2 var numbers = ; // Tìm vị trí của user có id là 2 var myId = 2; var myIndex = users.findIndex(function (user) { return chúng tôi == myId; }); console.log(myIndex); // 1 // Tìm vị trí của phần tử đầu tiên trong mảng có giá trị lớn hơn 2 var numbers = ; users.forEach(function (user) { console.log(user.name); }); /* Output: Binh Trang Minh */

    from()

    from() được sử dụng khi bạn muốn tạo ra một mảng mới từ một đối tượng dạng mảng.

    Đối tượng dạng mảng là đối tượng có thuộc tính length và các phần tử thì được đánh vị trí (đánh index) hoặc các đối tượng khả duyệt như Map, Set

    Cú pháp: Array.from(object, mapFunction(currentValue, index), thisValue). Trong đó:

    • object: Bắt buộc, là đối tượng bạn muốn chuyển sang dạng mảng.
    • mapFunction(currentValue, index): Không bắt buộc, là một function hoạt động tương tự như array.map, sẽ duyệt lần lượt trên từng phần tử mảng.
      • currentValue: Giá trị của phần tử hiện tại đang xét.
      • index: Vị trí của phần tử hiện tại đang xet.
    • thisValue: Không bắt buộc, là giá trị this khi thực hiện mapFunction

    var myArr = Array.from("123456", function (item, index, arr) { return item * 2; }); console.log(myArr); // ; var n = fruits.includes("Mango"); // true

    indexOf()

    indexOf() được sử dụng khi bạn muốn tìm vị trí (đầu tiên) của một phần tử trong mảng. Phương thức sẽ trả về -1 nếu không tìm thấy.

    Cú pháp: array.indexOf(item, start). Trong đó:

    • item: Bắt buộc, giá trị của phần tử muốn tìm kiếm vị trí.
    • start: Không bắt buộc, là vị trí bắt đầu tìm kiếm, mặc định là 0.

    var fruits = ; var isArray = Array.isArray(fruits); // true

    join()

    join() được sử dụng khi bạn muốn nối các phần tử của mảng thành một string.

    Cú pháp: array.join(separator). Trong đó separator là giá trị sẽ nằm giữa các phần tử mảng sau khi được chuyển trành string, tham số này không bắt buộc, mặc định sẽ là dấu phẩy “,”.

    var fruits = ; var fk = fruits.keys(); for (x of fk) { console.log(x); } /* Output: 0 1 2 3 */

    length

    length sẽ trả về số lượng phần tử có trong mảng, hoặc bạn có thể thay đổi số lượng phần tử trong mảng bằng cách gán giá trị mới cho thuộc tính này.

    var fruits =

    lastIndexOf()

    lastIndexOf() được sử dụng khi bạn muốn tìm kiếm vị trí cuối cùng của một phần tử trong mảng mà bạn truyền vào. Phương thức trả về -1 nếu không tìm thấy.

    Cú pháp: array.lastIndexOf(item, start). Trong đó:

    • item: Bắt buộc, giá trị của phần tử muốn tìm kiếm vị trí.
    • start: Không bắt buộc, là vị trí bắt đầu tìm kiếm, mặc định là 0.

    var fruits = ; var doubleNumbers = numbers.map(function(num) { return num * 2; }); console.log(doubleNumbers); //  ; var item = fruits.pop(); console.log(item); // Mango console.log(fruits); // ; var length = fruits.push("Kiwi"); console.log(fruits); // ; var sum = numbers.reduce(function (total, number) { return total + number; }, 0); console.log(sum); // 21

    reduceRight()

    phương thức reduceRight() tương tự như reduce(), tuy nhiên reduceRight() sẽ thực thi callback lên từng phần tử theo thứ tự từ phải qua trái.

    Cú pháp: array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue). Trong đó:

    • function(total, currentValue, index, arr): Bắt buộc, là callback sẽ thực thi trên từng phần tử mảng.
      • total: Bắt buộc, là giá trị của tham số initialValue trong lần chạy đầu tiên, hoặc là giá trị trả về của callback này ở phần tử trước.
      • currentValue: Bắt buộc, là giá trị của phần tử hiện tại
      • index: Không bắt buộc, là vị trí của phần tử hiện tại.
      • arr: Không bắt buộc, là mảng mà phần tử hiện tại thuộc về.
    • initialValue: Không bắt buộc, là giá trị ban đầu cho biến total trong callback.

    // Tính hiệu các phần tử trong mảng numbers theo chiều từ phải qua trái var numbers = ; fruits.reverse(); console.log(fruits); // ; var item = fruits.shift(); console.log(fruits); // ; // Mảng citrus được trích từ mảng fruits, trích từ phần tử index 1, tới phần tử index 3 var citrus = fruits.slice(1, 3); console.log(citrus); //

    some()

    Phương thức some() sẽ giúp bạn kiểm tra một mảng có thỏa mãn điều kiện hay không. Điều kiện được thể hiện dưới dạng một callback duyệt lần lượt các phần tử mảng, nếu kết quả callback của một trong số các phần tử mảng trả về true, thì phương thức some() trả về true, nếu callback của tất cả các phần tử mảng trả về false, phương thức some trả về false.

    Cú pháp: array.some(function(currentValue, index, arr), thisValue). Trong đó:

    • function(currentValue, index, arr): function callback chạy cho mỗi phần tử mảng.
      • currentValue: Giá trị của phần tử hiện tại
      • index: Không bắt buộc, là vị trí của phần tử hiện tại
      • arr: Không bắt buộc, là mảng mà chứa phần tử hiện tại
    • thisValue: Không bắt buộc, nếu truyền vào thì nó sẽ được làm giá trị this của function, nếu không truyền this sẽ là undefined.

    // Kiểm tra mảng numbers có số nào là số lẻ hay không? var numbers = ; fruits.sort(); console.log(fruits); // ; numbers.sort(); console.log(numbers); // ; numbers.sort(function (a, b) { return b - a; }); console.log(numbers); // ; fruits.splice(2, 1, "Lemon", "Kiwi"); console.log(fruits); // ; fruits.splice(2, 2); console.log(fruits); // ; var x = fruits.toString(); console.log(x); // "Banana,Orange,Apple,Mango"

    unshift()

    unshift() được sử dụng khi bạn muốn thêm một hoặc một số phần tử vào đầu mảng. Phương thức sẽ trả về số lượng phần tử trong mảng sau khi thêm.

    Cú pháp: array.unshift(item1, item2, ..., itemX). Trong đó item1item2, …, itemX là các phần tử bạn muốn thêm vào đầu mảng.

    var fruits = console.log(length); // 6

    valueOf()

    Phương thức này hơi vô nghĩa, nó sẽ trả về y hệt như mảng ban đầu.

    Cú pháp: array.valueOf(). Phương thức này không có tham số.

    var fruits =

    Tổng kết

    Trên là toàn bộ các phương thức (hàm) xử lý mảng trong JavaScript. Trong đó có một số phương thức tương tự nhau mà mình có thể gom nhóm lại như sau:

    Nhóm thêm, xóa vào đầu, cuối mảng

    • pop(): Xóa phần tử cuối mảng
    • push(): Thêm vào cuối mảng
    • shift(): Xóa phần tử đầu mảng
    • unshift(): Thêm phần tử vào đầu mảng

    Nhóm check mảng:

    • every(): Kiểm tra tất cả phần tử mảng phải thỏa mãn điều kiện
    • some(): Kiểm tra một trong số các phần tử mảng có phần tử nào thỏa mãn điều kiện.
    • includes(): Kiểm tra trong mảng có phần tử bạn cần tìm hay không?

    Nhóm tìm cái gì đó trong mảng:

    • find(): Tìm phần tử mảng đầu tiên thỏa mãn điều kiện
    • findIndex(): Tìm vị trí của phần tử mảng đầu tiên thỏa mãn điều kiện
    • indexOf(): Tìm vị trí đầu tiên của phần tử xuất hiện trong mảng.
    • lastIndexOf(): Tìm vị trí cuối cùng của phần tử xuất hiện trong mảng.

    --- Bài cũ hơn ---

  • Chuyển Đổi Một Value Sang String Trong Javascript * Gsviec
  • Vài Ghi Chép Về V8 Và Garbage Collection
  • Tại Sao Không Code “Chay” Javascript Mà Phải Dùng Framework?
  • Cung Ứng Nguồn Nhân Lực Thuyền Viên Chất Lượng Cho Lĩnh Vực Vận Tải Biển
  • Tăng Sức Mạnh Cho Javascript Với Lodash
  • Lệnh If .. Then Trong Pascal

    --- Bài mới hơn ---

  • Dữ Liệu Kiểu Tệp: Giới Thiệu Và Sử Dụng (P2) Mở Tệp Và Đọc Tệp
  • Ý Nghĩa Thủ Tục Fillchar Trong Pascal
  • Cách Viết Hàm (Function) Trong Pascal
  • Thủ Tục Trong Pascal, Định Nghĩa Và Cách Khai Báo
  • Vòng Lặp Repeat .. Until Trong Pascal
  • Trong bài này chúng ta sẽ học lệnh rẻ nhánh if .. then trong Pascal, đây là lệnh dùng để đổi hướng chương trình dựa vào một điều kiện nào đó. Kể từ bài lệnh if này ta sẽ bắt đầu học những kiến thức nâng cao hơn.

    Trước khi học bài này bạn cần phải hiểu được khái niệm về giá trị của biểu thức. Chúng ta có hai giá trị đó là đúng ( TRUE) – sai ( FALSE), và mỗi biểu thức đặt trong điều kiện if phải trả về một trong hai giá trị này, vì vậy ta phải sử dụng các toán tử mà mình đã giới thiệu ở bài trước.

    I. Lệnh if .. then trong Pascal

    Giả sử bạn cần viết một chương trình tính tổng của hai số được nhập vào từ bàn phím, sau đó in ra màn hình tổng đó là số chẵn hay số lẻ. Lúc này bạn phải sử dụng lệnh if.

    Cú pháp như sau:

    if (condition) then begin // statement end;

    Trong đó:

    • condition là điều kiện xảy ra
    • statement là đoạn code sẽ được chạy nếu condition có giá trị TRUE, ngược lại nếu giá trị FALSE thì sẽ bỏ qua.

    Ví dụ: Viết chương trình kiểm tra một số có phải là số chẵn hay không

    program IfThenPascal; var a : integer; begin writeln('HOC PASCAL TAI FREETUTS.NET'); writeln('Nhap vao so can kiem tra'); readln(a); if ( a mod 2 = 0 ) then begin writeln(a, ' la so chan'); end; readln; end.

    Chạy chương trình bnạ sẽ thu được kết quả như sau:

    Lưu ý: Nếu bên trong begin và end chỉ có một lệnh duy nhất thì ta có thể bỏ begin và end. Như ví dụ trên ta có thể viết lại như sau:

    begin writeln('HOC PASCAL TAI FREETUTS.NET'); writeln('Nhap vao so can kiem tra'); readln(a); if ( a mod 2 = 0 ) then writeln(a, ' la so chan'); readln; end.

    II. Lệnh if .. then .. else trong Pascal

    Ở lệnh if .. then ta chỉ cho chương trình chạy được một nhánh duy nhất, nhưng thực tế thì ta cần rẻ rất nhiều nhánh nên lúc này phải sử dụng lệnh if .. then .. else.

    Giả sử mình cần viết một chương trình kiểm tra một số xem nó số chẵn hay số lẻ, sau đó in ra màn hình là số chẵn hoặc số lẻ.

    if (condiiton) then begin // statement1 end else begin // statement2 end;

    Ok, bây giờ mình sẽ giải bài toán trên như sau:

    program IfThenPascal; var a : integer; begin writeln('HOC PASCAL TAI FREETUTS.NET'); writeln('Nhap vao so can kiem tra'); readln(a); if ( a mod 2 = 0 ) then begin writeln(a, ' la so chan'); end else begin writeln(a, ' la so le'); end; readln; end.

    Kết quả:

    Ở bài giải trên mình đã sử dụng khối lênh begin và end, tuy nhiên điều đó là dư thừa bởi đoạn code bên trong chỉ có một lệnh duy nhất. Ta có thể viết lại như sau:

    if ( a mod 2 = 0 ) then writeln(a, ' la so chan'); else writeln(a, ' la so le');

    III. Lệnh if .. then .. else lồng nhau trong Pascal

    Lệnh lồng nhau tức là bên trong một lệnh có chứa nhiêu lệnh con. Điều này có nghĩa trong chương trình có sử dụng các lệnh if .. then, và bên trong đoạn code xử lý lại chứ thêm những đoạn code if .. then khác, ta gọi là lồng nhau.

    if (condition1) then if (condition2) then // statement

    Nghe có ve khó phải không nào? Thực ra nó cũng rất dễ nếu như bạn biên dịch tuân theo thứ tự từ trên xuống và từ trái qua phải. Nếu điều kiện thỏa thì chạy code bên trong điều kiện đó, cứ như vậy cho đến hết tất cả các lệnh if lồng nhau.

    Ví dụ: Viết chương trình kiểm tra một số, nếu là số chẵn thì kiểm tra số đó lớn hơn 100 không, nếu số lẻ thì kiểm số đó lớn hơn 20 không.

    program IfThenPascal; var a : integer; begin writeln('HOC PASCAL TAI FREETUTS.NET'); writeln('Nhap vao so can kiem tra'); readln(a); if ( a mod 2 = 0 ) then begin writeln(a, ' la so chan'); writeln(a, ' lon hon 100'); end else begin writeln(a, ' la so le'); writeln(a, ' lon hon 20'); end; readln; end.

    Chạy lên và nhập số 25 thì ta có được kết quả sau:

    --- Bài cũ hơn ---

  • 13 Sai Lầm Thường Gặp Khi Học Tin 11 Và Cách Khắc Phục
  • Ngôn Ngữ Lập Trình Pascal (Bổ Trợ Tin 11)
  • Một Số Hàm Và Lệnh Pascal Cơ Bản
  • Kinh Nghiệm Khi Thi Hsg Môn Tin Học Bằng Pascal
  • Khối Lệnh Begin … End Trong Pascal
  • Hàm Pascal, Tổng Hợp Các Hàm Phổ Biến, Thường Gặp Trong Pascal

    --- Bài mới hơn ---

  • Câu 1: Cho Biểu Thức Trong Pascal: Abs(X+1) 3
  • Aptomat ! Phân Loại, Cách Sử Dụng Và Báo Giá
  • Hạt Nhựa Tiếng Anh Là Gì? Những Về Hạt Nhựa Bạn Cần Biết
  • Hệ Thống Phanh Abs: Khái Niệm, Cấu Tạo, Phân Loại Và Nguyên Lý Hoạt Động
  • Abs, Ebd Và Ba, 3 Trang Bị An Toàn Ô Tô ‘tối Thiểu’
  • Pascal là ngôn ngữ lập trình cấp thấp với những câu lệnh đơn giản để xử lý những bài toán cơ bản, thường được sử dụng làm ngôn ngữ lập trình trong chương trình học phổ thông để học sinh có thể hình thành tư duy lập trình cơ bản. Tuy nhiên trong chương trình học mới chỉ mang đến một số câu lệnh đơn giản, Taimienphi sẽ đưa đến cho các bạn một số hàm Pascal với nhiều công dụng khác nhau.

    Các hàm nhập và xuất dữ liệu

    write() – in ra màn hình liền sau kí tự cuối.

    writeln() – in ra màn hình xuống một hàng.

    read() – đọc biến.

    readln(‘ ‘) – đọc biến và xuống dòng.

    clrscr – xoá toàn bộ màn hình.

    textcolor() – in chữ màu.

    textbackground() – tô màu cho màn hình.

    sound() – tạo âm thanh.

    delay() – làm trễ.

    nosound – tắt âm thanh.

    windows(x1,y1,x2,y2) – thay đổi cửa sổ màn hình.

    highvideo – tăng độ sáng màn hình.

    lowvideo – giảm độ sáng màn hình.

    normvideo – màn hình trở lại chế độ sáng bình thường.

    gotoxy(x,y) – đưa con trỏ đến vị trí x,y trên màn hình.

    deline – xoá một dòng đang chứa con trỏ.

    clreol – xoá các ký tự từ vị trí con trỏ đến cuối mà không di chuyển vị trí con trỏ.

    insline – chèn thêm một dòng vào vị trí của con trỏ hiện hành.

    exit – thoát khỏi chương trình.

    textmode(co40) – tạo kiểu chữ lớn.

    randomize – khởi tạo chế độ ngẫu nhiên.

    move(var 1,var 2,n) – sao chép trong bộ nhớ một khối n byte từ biến Var 1 sang biến Var 2.

    halt – Ngưng thực hiện chương trình và trở về hệ điều hành.

    Abs(n) – Giá trị tuyệt đối.

    Arctan(x) – cho kết quả là hàm Arctan(x).

    Cos(x) – cho kết quả là cos(x).

    Exp(x) – hàm số mũ cơ số tự nhiên ex.

    Frac(x) – cho kết quả là phần thập phân của số x.

    int(x) – cho kết quả là phần nguyên của số thập phân x.

    ln(x) – Hàm logarit cơ số tự nhiên.

    sin(x) – cho kết quả là sin(x), với x tính bằng Radian.

    Sqr(x) – bình phương của số x.

    Sqrt(x) – cho kết quả là căn bậc hai của x.

    pd(x) – cho kết quả là số nguyên đứng trước số nguyên x.

    Suuc(x) – cho kết quả là số nguyên đứng sau số nguyên x.

    odd(x) – cho kết quả là true nếu x số lẻ, ngược lại là false.

    chr(x) – trả về một kí tự có vị trí là x trong bảng mã ASCII.

    Ord(x) – trả về một số thứ tự của kí tự x.

    round(n) – Làm tròn số thực n.

    Random(n) – cho một số ngẫu nhiên trong phạm vi n.

    upcase(n) – đổi kí tự chữ thường sang chữ hoa.

    assign(f,) – tạo file.

    rewrite(f) – khởi tạo.

    append(f) – chèn thêm dữ liệu cho file.

    close(f) – tắt file.

    erase(f) – xóa.

    rename() – đổi tên cho file.

    length(s) – cho kết quả là chiều dài của chuỗi.

    copy(s,a,b) – copy chuỗi.

    insert(,s,a) – chèn thêm cho chuỗi.

    delete(s,a,b) – xoá chuỗi.

    Unit GRAPH (Các hàm đồ họa)

    initgraph(a,b,) – khởi tạo chế độ đồ hoạ.

    closegraph ; – tắt chế độ đồ hoạ.

    setcolor(x) – chọn màu.

    outtext() – in ra màn hình tại góc trên bên trái.

    outtextxy(x,y,); – in ra màn hình tại toạ độ màn hình.

    rectangle(x1,y1,x2,y2) – vẽ hình chữ nhật.

    line(x1,y1,x2,y2) – vẽ đoạn thẳng.

    moveto(x,y) – lấy điểm xuất phát để vẽ đoạn thẳng.

    lineto(x,y) – lấy điểm kết thúc để vẽ doạn thảng.

    circle(x,y,n) – vẽ đường tròn.

    ellipse(x,y,o1,o2,a,b) – vẽ hình elip.

    floodfill(a,b,n) – tô màu cho hình.

    getfillpattern(x) – tạo biến để tô.

    setfillpattern(x,a) – chọn màu để tô.

    cleardevice; – xoá toàn bộ màn hình.

    settextstyle(n,a,b) – chọn kiểu chữ.

    bar(a,b,c,d) – vẽ thanh.

    bar3d(a,b,c,d,n,h) – vẽ hộp.

    arc(a,b,c,d,e) – vẽ cung tròn.

    setbkcolor(n) – tô màu nền.

    putpixel(x,y,n) – vẽ điểm.

    setfillstyle(a,b) – tạo nền cho màn hình.

    setlinestyle(a,b,c) – chọn kiểu đoạn thẳng.

    getmem(p,1) – chuyển biến để nhớ dữ liệu.

    getimage(x1,y1,x2,y2,p) – nhớ các hình vẽ trên vùng cửa sổ xác định.

    putimage(x,y,p,n) – in ra màn hình các hình vừa nhớ

    Unit DOS

    getdate(y,m,d,t) – lấy các dữ liệu về ngày trong bộ nhớ.

    gettime(h,m,s,hund) – lấy các dữ liệu về giờ trong bộ nhớ.

    findnext(x) – tìm kiếm tiếp.

    Findfirst($20,dirinfo) – tìm kiếm

    --- Bài cũ hơn ---

  • Abs Trên Xe Máy Hoạt Động Thế Nào?
  • Maknae Là Gì? Bỏ Túi 30+ Thuật Ngữ Chuyên Dùng Của Fan K
  • 14 Thuật Ngữ Tiếng Anh Mà Fan Kpop Phải Biết
  • Bảo Ôn Là Gì? Bảo Ôn Quan Trọng Hay Không Quan Trọng?
  • Thuốc Bảo Vệ Thực Vật Là Gì
  • Chuẩn Kết Nối Vga (Video Graphic Array) Là Gì?

    --- Bài mới hơn ---

  • Cách Cài Đặt, Nâng Cấp Driver Card Màn Hình Máy Tính Cực Chuẩn
  • Gỡ Bỏ Driver Vga, Uninstall Card Màn Hình Máy Tính
  • Cách Cập Nhật Driver Cho Card Màn Hình Nvidia
  • Cách Cập Nhật Driver Card Màn Hình Cho Máy Tính Nhanh Nhất
  • Đánh Giá Công Nghệ Amd Dual Graphics.
  • Phúc Gia® – Cung Cấp Thông Tin Về Chuẩn Kết Nối VGA Tới Người Tiêu Dùng. Chuẩn Kết Nối VGA Do Nhà Sản Xuất Ghi Trên Sản Phẩm. Đây Là Một Thông Số Kỹ Thuật Rất Quan Trọng Và Cần Lưu Ý Khi Sử Dụng Các Thiết Bị Màn Hình Và Để Hiểu Rõ Hơn Về Chuẩn Kết Nối VGA Các Bạn Hãy Theo Dõi Bài Viết Dưới Đây Của Phúc Gia® Nhé!

    Định Nghĩa VGA Là Gì?

    Video Graphic Array (VGA) là một trong những chuẩn kết nối lâu đời nhất, nó vẫn đang được tìm thấy trên nhiều thiết bị. Nó được phát triển bởi IBM và được giới thiệu lần đầu vào năm 1987. Nó được sử dụng rộng rãi cho card video, TV, màn hình máy tính và laptop.

    VGA có thể hỗ trợ độ phân giải lên đến 640×480 và 16 màu, bạn cũng có thể tăng lên 26 màu nếu hạ độ phân giải xuống 320×200. Điều này được biết đến là Mode 13h và thường được sử dụng khi boot máy và Safe Mode. Đây cũng là chế độ dùng trong việc chơi game cuối những năm 1980 đầu những năm 1990.

    Cáp VGA có thể vận chuyển tín hiệu RGBHV (Red, Green, Blue, Horizontal Sync và Vertical Sync). Socket của VGA có tổng cộng 15 chân (3 hàng, mỗi hàng 5 chân). Đui của dây cáp cũng được cố định vào thiết bị được kết nối bằng 2 con vít 2 bên.

    Hiện nay, VGA đã không còn được ưa chuộng và sử dụng rộng rãi như trước nữa. VGA chỉ còn xuất hiện trên các thiết bị cũ. Vị trí dẫn đầu của VGA đã được thay thế bằng DVI và HDMI.

    ĐIỀU GÌ TẠO NÊN THƯƠNG HIỆU PHÚC GIA®:

    Phúc Gia® – Đơn Vị Hàng Đầu Cung Cấp Các Dịch Vụ Hải Quan:

    Tại Sao Với Giá Dịch Vụ Ở Phân Khúc Cao, Phúc Gia® Vẫn Được Các Doanh Nghiệp Lựa Chọn Là Đơn Vị Tin Cậy Hàng Đầu Với Các Dịch Vụ Hải Quan?

    BÀI VIẾT LIÊN QUAN ĐẾN DỊCH VỤ DÁN NHÃN NĂNG LƯỢNG:

    ” Chúng tôi mong muốn mang lại nhiều ” Mọi chi tiết xin vui lòng liên hệ:

    CÔNG TY CỔ PHẦN LIÊN MINH PHÚC GIA ( – Nhấn vào đây để xem thông tin Cty)

    Liên Minh Phúc Gia – Vì cuộc sống tiện nghi”

    GIÁ TRỊ TỐT NHẤT” cho bạn!

    --- Bài cũ hơn ---

  • Chuẩn Tín Hiệu Vga Là Gì, Khái Niệm, Cách Phân Biệt Vga 3+4, 3+6 Và 3+9 Như Thế Nào?
  • Không Còn Chối Cãi Gì Nữa, Crossfire 2 Chiếc Rx480 Chắc Chắn Mạnh Hơn Gtx 1080
  • Chơi Game Cần Công Nghệ Sli Hay Crossfire
  • Cách Cập Nhật Vga, Update Driver Card Màn Hình, Đồ Họa Cho Máy Tính, L
  • Cách Bật Tắt Card Vga Rời Trên Laptop Để Chơi Game, Làm Đồ Họa …
  • Các Mã Lỗi Trong Pascal

    --- Bài mới hơn ---

  • Các Lỗi Thường Gặp Trong Pascal
  • Kiểu Tập Tin Trong Pascal
  • Dữ Liệu Kiểu Tệp Trong Pascal
  • Chương Trình Con : Hàm Và Thủ Tục Trong Pascal
  • Pascal: Hằng, Biến, Biểu Thức
  • In trang này

    Khi làm việc với bất cứ một ngôn ngữ lập trình nào, việc hiểu biết rõ các thông báo lỗi rất quan trọng. Đối với người đang học ngôn ngữ đó, trong quá trình làm việc không thể tránh khỏi thao tác sai sinh lỗi. Việc biết rõ ý nghĩa các thông báo lỗi sẽ giúp cho việc sửa chưng trình được nhanh hơn, giúp cho người học hiểu rõ hơn công việc mình làm. Đối với những người viết ứng dụng, ý nghĩa các lỗi sinh ra trong quá trình chạy chưng trình cũng rất quan trọng. Người lập trình cần phải bắt các lỗi trong chương trình để có thể thông báo kịp thời cho người sử dụng, tránh việc chưng trình bị ngắt, không thực hiện tiếp được.

    Việc học ngôn ngữ PASCAL

    trong nhà trường đã trở nên rộng rãi, do đó một tài liệu mô tả chi tiết các

    lỗi mà người dùng có thể gặp khi làm việc với môi trường PASCAL.

    Các lỗi sinh ra trong

    quá trình chạy chương trình (Runtime error)

    Mã lỗi ý nghĩa

    1 Invalid function number Sai số hiệu hàm

    2 File not found Không tìm thấy file

    3 Path not found Không tìm thấy đường dẫn

    4 Too many open files Mở quá nhiều

    file

    5 File access denied Không truy

    nhập được file

    6 Invalid file handle Số hiệu

    file không hợp lệ

    12 Invalid file access code Mã truy nhập file

    không hợp lệ

    15 Invalid drive number Số hiệu thiết

    bị không hợp lệ

    16 Cannot remove current directory Không thể xoá hoặc chuyển thư

    mục hiện hành

    17 Cannot rename across drives Không thể đổi tên các

    thiết bị chéo nhau

    100 Disk read error Lỗi khi đọc đĩa

    101 Disk write error Lỗi khi ghi đĩa

    102 File not assigned File chưa được chỉ định

    103 File not open File chưa được mở

    104 File not open for input File chưa được

    mở để lấy dữ liệu

    105 File not open for output File chưa đựoc mở

    để xuất dữ liệu

    106 Invalid numeric format Định dạng số

    không hợp lệ

    150 Disk is write-protected Đĩa đang được bo vệ chống ghi

    151 Bad drive request struct length Độ lớn cấu yêu cầu cấu trúc

    thiết bị sai

    152 Drive not ready Thiết bị chưa sẵn sàng

    154 CRC error in data Lỗi kiểm tra độ dư vòng trong

    dữ liệu

    156 Disk seek error Lỗi tìm kiếm trên đĩa

    157 Unknown media type Không biết kiểu thiết bị

    158 Sector Not Found Không tìm thấy sector được yêu

    cầu

    159 Printer out of paper Hết giấy

    trên máy in

    160 Device write fault Lỗi ghi thiết bị

    161 Device read fault Lỗi đọc thiết bị

    162 Hardware failure Lỗi phần cứng

    200 Division by zero Lỗi chia cho 0

    201 Range check error Lỗi tràn bộ nhớ

    202 Stack overflow error Lỗi tràn ngăn

    xếp

    203 Heap overflow error Lỗi tràn vùng

    nhớ Heap

    208 Overlay manager not installed Quản lí tràn chưa được cài

    đặt

    209 Overlay file read error Lỗi tràn khi đọc

    file

    210 Object not initialized Đối tượng

    chưa được khởi tạo

    211 Call to abstract method Lỗi gọi một phưng

    thức trừu tượng

    212 Stream registration error Lỗi đăng kí dòng

    xuất nhập

    204 Invalid pointer operation Con trỏ phép toàn

    không hợp lệ

    205 Floating point overflow Tràn dấu phẩy

    động

    206 Floating point underflow Tràn dấu phẩy động

    207 Invalid floating point operation Phép toàn với số dấu phẩy

    động không hợp lệ

    Các lỗi biên dịch

    (Compiler error)

    --- Bài cũ hơn ---

  • Chuyên Đề: Làm Quen Với Pascal–Khai Báo, Sử Dụng Biến
  • Exp Là Gì Giải Đáp Exp Ý Nghĩa Trong Từng Lĩnh Vực Cụ Thể
  • Bài 2. Các Thành Phần Cơ Bản
  • Cầu Tên Trong Ngôn Ngữ Lập Trình Là…
  • Lập Trình Pascal – Tin Học Không Khó
  • Vòng Lặp For .. Do Trong Pascal

    --- Bài mới hơn ---

  • Kiểu Bản Ghi (Record) Trong Pascal
  • Kiểu Dữ Liệu Xâu Kí Tự (String) Trong Pascal
  • Cho Biểu Thức Trong Pascal: Sqrt(Sqr(X)
  • Con Trỏ Trong Pascal, Cấu Trúc Và Ví Dụ Minh Họa
  • Tìm Hiểu Khái Niệm Winword
  • Trong bài này chúng ta sẽ tìm hiểu về vòng lặp For .. Do trong Pascal, đây là vòng lặp cơ bản và được sử dụng nhiều nhất trong lập trình Pascal.

    1. Vòng lặp For .. do trong Pascal

    Vòng lặp for .. do là một cấu trúc điều khiển cho phép bạn viết một chương trình có tính lặp đi lặp lại với số lần cụ thể. Cú pháp của nó như sau:

    Trong đó:

    • variable-name là tên biến điều khiển vòng lặp
    • initial_value là lần lặp đầu tiên
    • final_value là lần lặp cuối, tổng số lần lặp được tính từ initial_value đến final_value
    • S là những lệnh sẽ được chạy trong vòng lặp. Nếu có nhiều lệnh thì phải đặt trong khối BEGIN … END

    HÌnh: internet

    Giả sử bạn muốn in ra các số từ 1 đến 5 thì có thể viết theo cách thông thường như sau:

    program forLoop; begin writeln('1'); writeln('2'); writeln('3'); writeln('4'); writeln('5'); end.

    Nhưng nếu mình muốn in ra từ 1 đến 1000, thậm chí là 1.000.000 lần thì phải làm sao? Nếu viết thủ công như vậy thì là điều rất khó, mất khá nhiều thời gian.

    Áp dụng cấu trúc vòng lặp for thì mình sẽ viết lại bài này như sau:

    program forLoop; var a: integer; begin for a := 1 to 5 do begin writeln('Gia tri cua a la: ', a); end; end.

    Các bước thực hiện như sau:

    • Bước 1: Lặp lần thứ nhất, a bắt đầu từ 1, vì nó nằm trong khoảng từ 1 đến 5 nên khối lệnh bên trong được thực hiện.
    • Bước 2, 3, 4, 5: Tương tự, a sẽ có giá trị lần lượt là 2, 3, 4, 5 và nó nằm trong khoảng 1 – 5 nên vẫn thực hiện.
    • Bước 6: Lúc này a = 6, nằm ngoài phạm vi lặp nên vòng lặp hết thúc.

    Kết quả in ra màn hình các số từ 1 đến 5.

    Gia tri cua a la: 1 Gia tri cua a la: 2 Gia tri cua a la: 3 Gia tri cua a la: 4 Gia tri cua a la: 5

    2. Vòng lặp for .. do lồng nhau

    Trong pascal bạn có thể đặt vòng lặp for này nằm trong vòng lặp for khác để tạo ra cấu trúc lồng nhau. Lúc này tổng số lần lặp sẽ là cấp số nhân giữa vòng lặp ngoài (cha) và vòng lặp trong (con).

    Ví dụ vòng lặp cha lặp từ 1 đến 5, vòng lặp con lặp từ 1 đến 10 thì tổng số lần lặp là 5 x 10 = 50.

    Cấu trúc cú pháp cơ bản như sau:

    for a := 1 to 5 do begin for b := 1 to 10 do begin ... end; end;

    Trong đó các số điều khiển vòng lặp có thể thay đổi theo yêu cầu của bài toán bạn cần lập trình.

    Ví dụ: Mình cần in ra bảng cửu chương thì có thể viết như sau:

    program IfThenPascal; var a: integer; b: integer; begin for a := 2 to 9 do begin for b := 1 to 9 do begin writeln(a, ' x ', b, ' = ', (a * b)); end; end; readln; end.

    Chạy chương trình này bạn sẽ thu được kết quả như sau:

    Trên là kiến thức cơ bản của vòng lặp for trong Pascal. Đây là một vòng lặp rất quan trọng không chỉ ở Pascal mà ở bất kì một ngôn ngữ khác, vì vậy bạn cần phải hiểu ý nghĩa của nó để áp dụng, cũng như sau này sẽ phân biệt với các vòng lặp while và repeat.

    --- Bài cũ hơn ---

  • Giới Thiệu Tổng Quan Stored Procedure Là Gì Trong Sql Server
  • Chương Trình Con (Procedure Và Function) Trong Pascal
  • Pascal : Bài Tập Mảng 1 Chiều Hot Nhất Nên Xem
  • Tổng Hợp Bài Tập Pascal Có Giải, Từ Dễ Đến Khó
  • Lỗi Cú Pháp Trong Pascal Loi Cu Phap Pascal Doc
  • Lỗi Cú Pháp Trong Pascal Loi Cu Phap Pascal Doc

    --- Bài mới hơn ---

  • Tổng Hợp Bài Tập Pascal Có Giải, Từ Dễ Đến Khó
  • Pascal : Bài Tập Mảng 1 Chiều Hot Nhất Nên Xem
  • Chương Trình Con (Procedure Và Function) Trong Pascal
  • Giới Thiệu Tổng Quan Stored Procedure Là Gì Trong Sql Server
  • Vòng Lặp For .. Do Trong Pascal
  • MỘT SỐ LỖI CÚ PHÁP THƯỜNG GẶP TRONG PASCAL

    1. Lỗi cú pháp là những lỗi phát sinh do lập trình viên viết sai những quy định về văn phạm của hệ thống hoặc ngôn ngữ. Thí dụ các lỗi sau đây là những lỗi cú pháp: (a + b * 2: thiếu dấu đóng ngoặc BEGIM: định viết BEGIN, sai N 2. Xử lý lỗi. Lỗi cú pháp được phát hiện trong quá trình dịch. Turbo Pascal báo lỗi cú pháp theo nguyên tắc “Mỗi lần chỉ báo một lỗi”. Nếu gặp lỗi ta cần trở về chế độ soạn thảo, tìm vị trí xuất hiện lỗi, sửa lại lỗi đó rồi dịch lại chương trình. Sau khi báo lỗi, Turbo Pascal sẽ chờ ta bấm phím ESC để trở về chế độ soạn thảo. Con trỏ của màn hình soạn thảo sẽ đặt ở cạnh vị trí xuất hiện lỗi, thông thường quá đi 1 ký tự. 3. Các thông báo lỗi thường gặp và gợi ý khắc phục. Lỗi 2. Identifier expected: mong gặp định danh (có thể do chưa khai báo biến, hằng…) Lỗi 3. Unknown identifier: định danh chưa được khai báo. Hãy khai báo định danh này ở đầu thủ tục hoặc chương trình.( có thể do sai chính tả một tên, từ khoá nào đó) Lỗi 4. Duplicate identifier: định danh được khai báo 2 lần trở lên. Lỗi 5. Syntax error: Lỗi cú pháp. Gặp một ký tự sai hoặc viết sai một hằng. Lỗi 6. Error in real constant: Viết sai hằng thực. Lỗi 7. Error in integer constant: Viết sai hằng nguyên. Chú ý rằng khai báo CONST c = 1234 sẽ cho ta một hằng c kiểu nguyên. Muốn có một hằng kiểu thực, ta viết CONST c = 1234.0. Những hằng có giá trị nằm ngoài khoảng -2147483648..2147483647 cần được khai báo theo kiểu thực, thí dụ: CONST c = 12345678912.0; Lỗi 8. String constant exceeds line: giá trị của xâu ký tự quả dài, xem lại có thiếu dấu đóng/mở (dấu nháy đơn) hằng văn bản không? Lỗi 10. Unexpected end of file: Cần gặp dấu kết tệp. Lỗi 10 có thể xuất hiện trong các trường hợp sau: – Trong trương trình các cặp BIGIN và END không cân đối. – Tệp khác được gọi lồng tại một vị trí không hợp lệ. – Chú thích chưa được đóng bằng dấu } hoặc * ). Lỗi 11. Line too long: Dòng dài quá Bộ soạn thảo cho phép phát sinh các dòng dài tối đa 249 ký tự trong khi khi chương trình dịch chỉ làm việc với các dòng dài tối đa 126 ký tự. Lời khuyên: Không nên viết các dòng dài quá 60 ký tự. Lỗi 12. Type identifier expected: Cần có định danh kiểu Lỗi 20. Variable identifier expected: Cần một định danh cho biến Thí dụ FOR = 4 TO 20 DO sẽ sinh lỗi 20. Lỗi 25. Invalid string length: Chiều dài xâu không hợp lệ. Chiều dài hợp lệ nằm trong khoảng 0 .. 255.

    Lỗi 26. TYPE mismatch: Kiểu không tương thích. các nguyên nhân sinh lỗi có thể là: – Biểu thức được gán cho biến không đúng kiểu. Thí dụ VAR x: char; BEGIN x: = 127 * 8 END. Lỗi 29. Ordinal type expected: Cần một kiểu thứ bậc. Trong trường hợp này không được dùng các kiểu Real, string, Record, PROCEDURE hoặc pointer. Lỗi 30. Integer constant expected: Cần một hằng nguyên Lỗi 31. Constant expected: Cần một hằng

    Lỗi 33. Type identifier expected: Cần một định danh kiểu Lỗi 36. BEGIN expected: Thiếu BEGIN

    Lỗi 37. END expected: Thiếu END Lỗi 38. Integer expssion expexted: Cần biểu thức nguyên Lỗi 39. Ordinal expssion expected: Cần biểu thức thứ bậc Lỗi 40. Boolean expssion expected: Cần biểu thức kiểu BOOLEAN Lỗi 41. Operand types do not match operator: Kiểu toán hạng không phù hợp với toán tử Lỗi 42. Error in expssion: Biểu thức sai. Thường gặp trường hợp sử dụng ký tự lạ hoặc quên viết dấu phép toán trong biểu thức. Lỗi 43. Illegal assigment: Gans Gán không hợp lệ. Không được gán trị cho biến tệp hoặc biến không định kiểu. Không được gán trị cho định danh hàm ở ngoài thân của hàm đó. Lỗi 44. Field identifier expected: Cần một định danh thường. Lỗi phát sinh khi sử dụng bản ghi (RECORD) không có trường hợp đi kèm. Lỗi 54. OF expected:Thiếu OF trong TYPE, CASE, FILE, SET, ARRAY Lỗi 57. THEN expected:Thiếu THEN trong IF Lỗi 58. TO or DOWN TO expected: Thiếu To hoặc DOWN TO trong FOR Lỗi 66. String variable expected: Cần một biến string. Lỗi 67. String expssion expected; Cần một biểu thức string.

    --- Bài cũ hơn ---

  • Cấu Trúc Một Chương Trình Pascal, Khai Báo Biến, Khai Báo Hàm
  • Các Thành Phần Cơ Bản Trong Pascal
  • Biến Toàn Cục Và Biến Cục Bộ Trong Javascript
  • Biến Toàn Cục Và Biến Địa Phương
  • Ý Nghĩa Tham Số, Tham Trị, Tham Biến
  • Dữ Liệu Kiểu Mảng (Array)

    --- Bài mới hơn ---

  • Bài 4: Mảng Trong Pascal
  • Pascal: Các Kiểu Dữ Liệu Cơ Bản
  • Một Số Lưu Ý Về Chương Trình Con
  • Bài 3 (Tiếp Theo): Biến Toàn Cục, Biến Cục Bộ Và Phạm Vi Của Biến
  • Pascal Cơ Bản – Chủ Đề Ii: Một Số Kiểu Dữ Liệu Chuẩn
  • I. KHAI BÁO MẢNG

    Cú pháp:

    hoặc khai báo trực tiếp:

    Ví dụ:

    TYPE  Mangnguyen = Array of Integer;

    MangKytu = Array of Integer;

    C: Array.

    – Để truy cập đến phần tử (i,j) trong mảng hai chiều M, ta sử dụng cú pháp: M.

    Uses Crt; Type Mang = ARRAY=’); Readln(A; For i:=2 To N Do If Max&lt;A; {In kết quả ra màn hình} Writeln(‘Phan tu lon nhat cua mang: ’, Max); Readln; End.

    Bài tập 5.2:     Viết chương trình tính tổng bình phương của các số âm trong một mảng gồm N phần tử.

    Ý tưởng:

    Duyệt qua tất cả các phần tử A<0 thì cộng dồn (A Of Integer; Var    A:Mang; N,i,S:Integer; Begin {Nhập mảng} Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A); End; {Tính tổng} S:=0; For i:=1 To N Do If A*A Of Integer; Var    A:Mang; N,i,j,Tam:Integer; Begin {Nhập mảng} Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A); End; {Sắp xếp} For i:=1 To N-1 Do For j:=i+1 To N Do If A Then Begin Tam:=A:=A:=Tam; End; {In kết quả ra màn hình} Writeln(‘Ket qua sau khi sap xep:’); For i:=1 To N Do Write(A thì vị trí cần tìm là i, ngược lại thì kết quả tìm là 0 (không tìm thấy).

    Uses Crt; Type Mang = ARRAY) do I:=I+1; If I &lt;= N Then Timkiem:=I  Else Timkiem:=0; End; Begin {Nhập mảng} Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A); End; Write(‘Nhap X=’); Readln(x); {Kết quả tìm kiếm} If TimKiem(X,N,A)&lt;&gt;0 Then Writeln(‘Vi tri cua X trong mang la:’, TimKiem(X,N,A)) Else Writeln(‘X khong co trong mang.’); Readln; End.

    Bài tập 5.5: Giả sử mảng A đã được sắp xếp theo thứ tự tăng dần. Viết hàm để kiểm tra xem phần tử X có trong mảng A hay không?

    Ý tưởng:

    Sau đây là hàm cài đặt cho thuật toán này:

    Function TimKiemNhiPhan(X, N: Integer; A: Mang):Integer; Var    dau,cuoi,giua:Integer; Found:Boolean; Begin dau:=1; {điểm mút trái của khoảng tìm kiếm} cuoi:=N; {điểm mút phải của khoảng tìm kiếm} Found:=False; {chưa tìm thấy} While (dau &lt;=cuoi) and (Not Found) Do Begin giua:=(dau + cuoi) Div 2; If  X = A Then dau:=giua+1 Else cuoi:=giua-1; End; If Found Then TimKiemNhiPhan:= giua Else TimKiemNhiPhan:=0; End;

    Bài tập 5.6: Viết chương trình tìm ma trận chuyển vị của ma trận A.

    Ý tưởng:

    Dùng mảng 2 chiều để lưu trữ ma trận. Gọi B là ma trận chuyển vị của ma trận A, ta có: Bij = Aji.

    Uses Crt; Type Mang = ARRAY=’); Readln(A:=A:5); Writeln; End; Readln; End.

    Bài tập 5.7: Cho một mảng 2 chiều A cấp mxn gồm các số nguyên và một số nguyên x. Viết chương trình thực hiện các công việc sau:

    a/ Đếm số lần xuất hiện của x trong A và vị trí của chúng.

    b/ Tính tổng các phần tử lớn nhất của mỗi dòng.

    Uses Crt; Type Mang = ARRAY=’); Readln(A Then Begin Write(i,j,’ ; ‘); dem:=dem+1; End; Writeln(‘So lan xuat hien cua x trong mang A la: ‘,dem); {Tính tổng các phần tử lớn nhất của mỗi dòng} S:=0; For i:=1 To m Do {duyệt qua từng dòng} Begin {Tìm phần tử lớn nhất của dòng thứ i} Max:=A Then max:=A với y=f(x) đồng biến và đơn trị trên đoạn . Nếu f(m)*f(a)<0 thì giới hạn đoạn tìm nghiệm thành . Quá trình này lặp lại cho đến khi f(m)<e, lức này ta có 1 nghiệm gần đúng là m.

    Giả sử f(x) là một đa thức: f(x) = a0 + a1x + a2x2 + … + anxn. Lúc này, ta có thể dùng mảng một chiều để lưu trữ các hệ số ai của đa thức.

    Uses Crt; Type HESO=Array='); Readln(a'); Write('a= '); Readln(Min); Write('b= '); Readln(Max); Write('Nhap sai so cua phuong trinh: '); Readln(epsilon); End; {Tính giá trị của đa thức} Function f(x:Real):Real; Var    S,tam:Real; i:Byte; Begin S:=a*tam; End; f:=S; End; Procedure TimNghiem(Min,Max:real); Var m:Real; Begin If f(Min)*f(Max)&gt;0 Then Writeln('Phuong trinh vo nghiem.') Else If abs(f(Min))&lt;epsilon Then Writeln('Nghiem la x=',min:0:2) Else If abs(f(Max))&lt;epsilon Then Writeln('Nghiem la x=',max:0:2) Else Begin m:=(Min+Max)/2; If abs(f(m))&lt;=epsilon Then Writeln('Nghiem la x=',m:0:2) Else If f(Min)*f(m)&lt;0 Then TimNghiem(Min,m) Else TimNghiem(m,Max); End; End; Begin NhapDaThuc; TimNghiem(Min,Max); Readln; End.

    Bài tập 5.9: Viết chương trình nhập vào số tự nhiên N (N lẻ), sau đó điền các số từ 1 đến n2 vào trong một bảng vuông sao cho tổng các hàng ngang, hàng dọc và 2 đường chéo đều bằng nhau (bảng này được gọi là Ma phương).

    Ví dụ: Với N=3 và N=5 ta có

    Xuất phát từ ô bên phải của ô nằm giữa. Đi theo hướng đông bắc để điền các số 1, 2, …

    Khi điền số, cần chú ý một số nguyên tắc sau:

    – Nếu vượt ra phía ngoài bên phải của bảng thì quay trở lại cột đầu tiên.

    – Nếu vượt ra phía ngoài bên trên của bảng thì quay trở lại dòng cuối cùng.

    – Nếu số đã điền k chia hết cho N thì số tiếp theo sẽ được viết trên cùng một hàng với k nhưng cách 1 ô về phía bên phải.

    Uses Crt; Var A:Array:=k; If k MOD n=0 Then j:=j+2 Else Begin {Đi theo hướng đông bắc} j:=j+1; i:=i-1; End; If j&gt;n Then j:=j MOD n; If i=0 Then i:=n; End; {In kết quả ra màn hình} For i:=1 To n Do Begin For j:=1 To n Do write(a Of Integer; Var A,B:Mang; n,m:Byte; Function KiemTra(x:Integer; n:Byte; A:Mang):Boolean; Var i:Byte; Found:Boolean; Begin Found:=False; i:=1; While (i&lt;=n) AND (not Found) Do If x=A:=x; End; Writeln('An ESC de ket thuc nhap!'); ch:=Readkey; Until ch=#27; End; Procedure GiaoAB(n:Byte; A:Mang;m:Byte; B:Mang); Var i:Byte; Begin For i:=1 To n Do If KiemTra(A:4); End; Begin Clrscr; Writeln('Nhap mang A: '); NhapMang(n,A); Writeln('Nhap mang B: '); NhapMang(m,B); Writeln('Giao cua 2 mang A&amp;B la: '); GiaoAB(n,A,m,B); Readln; End.

    Bài tập 5.11: Cho một mảng số nguyên gồm n phần tử. Tìm dãy con gồm m phần tử  (m£n) sao cho dãy con này có tổng lớn nhất. (Dãy con là dãy các phần tử liên tiếp nhau trong mảng).

    Uses Crt; Type Mang=ARRAY='); Readln(a; {Tìm các dãy con khác} For i:=2 To n-m+1 Do Begin {Tính tổng của dãy con thứ i} S:=0; For j:=i To i+m-1 Do S:=S+A:5); Readln; End.

    Bài tập 5.12: Viết chương trình in ra màn hình tam giác Pascal. Ví dụ, với n=4 sẽ in ra hình sau:

    1

    1          1

    1          2          1

    1          3          3          1

    1          4          6          4          1

    Ý tưởng:

    Tam giác Pascal được tạo ra theo qui luật sau:

    + Mỗi dòng đều bắt đầu và kết thúc bởi số 1.

    + Phần tử thứ j ở dòng k nhận được bằng cách cộng 2 phần tử thứ j-1 và j ở dòng thứ k-1.

    Uses Crt; Var Dong:Array:=1; Writeln(Dong:=0; {Voi moi dong i} For i:=1 To n Do Begin For j:=i DownTo 1 Do Begin Dong+Dong:4); End; Writeln(Dong=x;

    Bài tập 5.15: Cho 2 mảng số nguyên: Mảng A có m phần tử, mảng B có n phần tử.

    a/ Sắp xếp lại các mảng đó theo thứ tự giảm dần.

    b/ Trộn 2 mảng đó lại thành mảng C sao cho mảng C vẫn có thứ tự giảm dần (Không được xếp lại mảng C).

    Gợi ý:

    – Dùng 2 chỉ số i,j để duyệt qua các phần tử của 2 mảng A, B và k là chỉ số cho mảng C.

    – Trong khi (i<=m) và (j<=n) thì:

    {Tức là khi đồng thời cả 2 dãy A, B đều chưa duyệt hết}

    + Ngược lại: C; j:=j+1;

    – Nếu dãy nào hết trước thì đem phần còn lại của dãy kia bổ sung vào cuối dãy C.

    Bài tập 5.16: Viết chương trình tính tổng và tích 2 ma trận vuông A, B cấp n.

    Gợi ý:

    Công thức tính tổng 2 ma trận: Cij = Aij + Bij

    Công thức tính tích 2 ma trận: Cij =

    Bài tập 5.17: Viết chương trình nhập vào 2 dãy số nguyên (a)n và (b)m, m£n. Kiểm tra xem dãy {b} có phải là dãy con của dãy {a} không?

    Bài tập 5.18: Viết chương trình nhập vào một dãy số nguyên a1, a2, …, an. Tìm trong dãy {a} một dãy con tăng dần dài nhất (có số phần tử lớn nhất) và in ra màn hình dãy con đó.

    Bài tập 5.19: Cho mảng 2 chiều A cấp mxn. Viết chương trình sắp xếp lại mảng A theo yêu cầu sau:

    a/ Các phần tử trên mỗi dòng được sắp xếp theo thứ tự giảm dần.

    b/ Các dòng được sắp xếp lại theo thứ tự tăng dần của tổng các phần tử trên mỗi dòng.

    Bài tập 5.20: Viết chương trình để kiểm tra một dãy các số nguyên được nhập vào từ bàn phím đã được sắp theo thứ tự tăng dần hay chưa theo 2 cách: Đệ qui và không đệ qui.

    Gợi ý:

    – Nếu dãy có 1 phần tử thì dãy tăng dần.

    – Ngược lại:

    + Ngược lại: Gọi đệ qui với dãy có n-1 phần tử (bỏ bớt đi phần tử cuối cùng).

    Bài tập 5.21: Viết chương trình nhập vào 2 mảng số nguyên A, B đại diện cho 2 tập hợp (không thể có 2 phần tử trùng nhau trong một tập hợp). Trong quá trình nhập, phải kiểm tra: nếu phần tử vừa nhập vào đã có trong mảng thì không bổ sung vào mảng.

    a/ In ra màn hình hợp của 2 tập hợp A, B.

    b/ In ra màn hình hiệu của 2 tập hợp A, B.

    Gợi ý:

    a/

    – In ra màn hình tất cả các phần tử của  tập hợp A.

    – Duyệt qua tất cả các phần tử b­i­ÎB. Nếu biÏA thì in bi ra màn hình.

    b/ Duyệt qua tất cả các phần tử a­i­ÎA. Nếu aiÏB thì in ai ra màn hình.

    Bài tập 5.22: Viết chương trình tính tổng của 2 đa thức h(x) = f(x) + g(x). Trong đó, mỗi đa thức có dạng: a0 + a1x + a2x2 + … + anxn.

    Gợi ý:

    Dùng các mảng A, B, C để lưu trữ các hệ số ai của các đa thức f(x), g(x) và h(x).

    Bài tập 5.23: Viết chương trình để tìm các phương án đặt 8 quân hậu trên bàn cờ vua (ma trận 8×8) sao cho các quân hậu không ăn được nhau.

    Gợi ý:

    Dùng giải thuật quay lui.

    Bài tập 5.24: Viết chương trình tính định thức của ma trận vuông cấp n.

    Gợi ý:

    Dùng cách tính định thức theo phương pháp GAUSE.

    ‹ CHƯƠNG TRÌNH CON: THỦ TỤC VÀ HÀM

    XÂU KÝ TỰ (STRING) ›

    --- Bài cũ hơn ---

  • Làm Việc Với File Trong Pascal
  • Tin Học Cho Người Việt
  • Cùng Nhau Khám Phá, Cùng Nhau Học Tập
  • Phương Thức Thanh Toán D/a
  • T Là Gì ?, Thanh Toán D
  • Chương Trình Con Trong Pascal

    --- Bài mới hơn ---

  • Bài 3: Câu Lệnh Vòng Lặp Trong Pascal (For, While, Repeat)
  • Từ Pascal Đến C/c++ (P2) – Vòng Lặp
  • Phần 3: Record Trong Pascal
  • Nội Dung Ôn Tập Tin Học 11
  • Chuyên Đề Xử Lí Bit
  • Phần này do Thạc sỹ Nguyễn Văn Linh viết và phát hành theo giấy phép CC-BY

    Đây là một phần của Ngôn ngữ Pascal

    Khái niệm : chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện ( được gọi ) từ nhiều vị trí trong chương trình (SGK tin học lớp 11 trang 91)

    Procedure Ten_thu_tuc(Danh sách các tham số cùng với kiểu dữ liệu tương ứng)

    Ví dụ:

    Trong sự đặc tả này, tham số có tên đứng sau VAR biểu thị một kết quả hoặc một tham số có thể bị thay đổi. Cú pháp của sự đặc tả này trong Ada là:

    <s

    Các phép toán nguyên thuỷ được cài đặt bằng cách dùng cấu trúc dữ liệu và các phép toán được cung cấp bởi máy tính ảo bên dưới ngôn ngữ lập trình. Chương trình con biểu diễn một phép toán được xây dựng bởi người lập trình và do đó chương trình con được cài đặt bằng cách dùng cấu trúc dữ liệu và các phép toán được cung cấp bởi chính bản thân ngôn ngữ lập trình đó. Sự cài đặt được xác định bởi thân chương trình con, bao gồm cả việc khai báo dữ liệu cục bộ xác định cấu trúc dữ liệu được dùng cho chương trình con và các lệnh xác định hành động sẽ làm khi chương trình con thực hiện.

    Sự khai báo và các lệnh thường được bao gói, người sử dụng chương trình con không thể truy xuất được tới dữ liệu cục bộ và các lệnh bên trong chương trình con. Người sử dụng chỉ có thể gọi chương trình con với một tập hợp các tham số và nhận lại các kết quả đã được tính toán. Cú pháp của Pascal đối với chương trình con là điển hình:

    FUNCTION

    FN

    (

    x

    :

    REAL

    ;

    y

    :

    INTEGER

    )

    :

    REAL

    ;

    (

    M

    ô

    t

    )

    VAR

    m

    :

    ARRAY

    [

    1

    ..

    10

    ]

    OF

    REAL

    ;

    (

    Khai

    b

    á

    o

    c

    á

    c

    đố

    i

    n

    :

    INTEGER

    ;

    t

    ượ

    ng

    d

    li

    u

    c

    c

    b

    )

    BEGIN

    .

    (

    D

    ã

    y

    c

    á

    c

    l

    nh

    x

    á

    c

    đị

    nh

    .

    h

    à

    nh

    độ

    ng

    c

    a

    ch

    ươ

    ng

    .

    tr

    ì

    nh

    con

    )

    END

    ;

    --- Bài cũ hơn ---

  • Pascal: Hằng, Biến, Biểu Thức
  • Chương Trình Con : Hàm Và Thủ Tục Trong Pascal
  • Dữ Liệu Kiểu Tệp Trong Pascal
  • Kiểu Tập Tin Trong Pascal
  • Các Lỗi Thường Gặp Trong Pascal