Причин, по которой в школах на информатике изучают именно PascalABC, а не Python (Ладно хоть не JS), в общем говоря две - Адекватная и не очень.
Адекватная причина заключается в том, что в отличии от пайтона, паскаль - компилируемый язык со статической типизацией. Такие языки не прощают ошибок, если ты что то сделал не так - ты сразу же получаешь ошибку компиляции и идёшь перепиливать, а не обнаруживаешь свой косяк, когда кое-что уже попало на вентилятор.
Паскаль познакомит юного маслёнка с основными понятиями программирования в достаточно понятной форме. Программные блоки в языке Pascal выделяются ключевыми словами begin-end, что при минимальных знаниях английского будет восприниматься человеком намного проще, чем операторные скобки С-подобных языков, или питоньи отступы. Так же у паскаля в описаниях циклов присутствуют дополнительные ключевые слова, опять же более ясно дающие понять, что дальше будет происходить. Вот сравни, что понятнее (цикл for):
C/C++:
for (int i = 1; i < some_counter; i++) { //Code }
PascalABC.NET:
for var i := 1 to some_counter do begin
//code
end;
Паскалевский "фор" как то более подробно себя описывает, не так ли?
Или вот например чтение входного потока:
Читаем переменную i:
C++:
cin >> i;
PascalABC.NET
var i := ReadInteger();
Ну и куча других мелочей.
А вот почему в школах учат именно Турбо Pascal, А не, например, его современную версию PascalABC.NET - Проблема вероятно в программах обучения, составленных ещё в далёкие годы, и с тех пор не менявшихся. Да и большинство преподавателей информатики в школах мало знакомы с какими либо языками кроме древнючего турбопаскаля и сурового и беспощадного С. И это печально. Надеюсь, я ответил на твой вопрос.
#include <iostream> // подключаем библиотеку потокового ввода/вывода (cout/cin/...);
#include <ctime> // подключем библиотеку для возможности изменения стандартного генератора чисел (srand(...));
int main()
{
using namespace std; // используем пространство имен std;
setlocale(LC_ALL, "ru"); // возможность использования русского текста в консоли;
srand(time(NULL)); // генератор случайных числе;
const int N = 10; // константный размер массива;
int A[N][N]; // обьявление двумерного массива;
cout << "Исходный двумерный массив: " << endl;
for (int i = 0; i < N; i++) // проходим по двумерному массиву используя 2 цикла;
{
for (int j = 0; j < N; j++)
{
A[i][j] = rand() % 50; // заполняем двумерный массива случайными числами от 0 до 50;
cout << A[i][j] << '\t'; // и сразу выводим его на экран;
}
cout << endl;
}
// ищем минимальное значение в массиве:
int min = A[0][0]; // предположим, что первый элемент массива это минимальный элемент;
for (int i = 0; i < N; i++) // проходим по двумерному массиву используя 2 цикла;
{
for (int j = 0; j < N; j++)
{
// если текущий элемент массива меньше min, тогда присваиваем переменной min это значение. Таким образом мы найдем минимальный элемент;
if (min > A[i][j]) // если в теле условия/цикла ожидается 1 инструкция, то { } можно не ставить;
min = A[i][j];
}
}
// обнуляем все элементы массива, кроме элементов, расположеных на главной диагонали:
for (int i = 0; i < N; i++) // проходим по двумерному массиву используя 2 цикла;
{
for (int j = 0; j < N; j++)
{
// если i будет равен j, то получится что мы идем по глвной диагонали: i=1:j=1, i=2:j=2, i=3:j=3 ...
// поэтому, если i не равен j обнуляем элемент;
if (i != j)
A[i][j] = 0;
}
}
cout << "\nРезультат: " << endl;
for (int i = 0; i < N; i++) // проходим по двумерному массиву используя 2 цикла;
{
for (int j = 0; j < N; j++)
{
cout << A[i][j] << '\t'; // выводим то что получилось в консоль;
}
cout << endl;
}
cout << "\nМинимальный элемент в двумерном массиве = " << min << endl;
return 0;
}