Общие сведения о языках программирования Си, Паскаль и Python
Процессор понимает только двоичные коды, а человеку удобнее писать слова и формулы. Между ними стоит язык программирования: на нём человек записывает алгоритм, а специальная программа переводит запись в команды процессора.
В этой главе мы разбираем три языка сразу — Си, Паскаль и Python. Идеи у них общие: переменные, ввод и вывод, ветвления, циклы. Отличается только запись. Над каждым примером кода есть вкладки: выбери свой язык, и сайт запомнит выбор.
Язык, программа, транслятор
Язык программирования — формальный язык для записи алгоритмов, которые может выполнить компьютер. Запись алгоритма на таком языке называется программой.
Компьютер не выполняет текст программы напрямую. Его сначала переводит транслятор. Трансляторы бывают двух видов:
- компилятор переводит всю программу целиком и создаёт готовый исполняемый файл. Так работают Си и Паскаль;
- интерпретатор читает программу и сразу выполняет её, команду за командой. Так работает Python.
Кроме транслятора, в систему программирования входят редактор, в котором пишут текст программы, и отладчик, который помогает искать ошибки.
Три языка — три истории
| Язык | Автор и год | Зачем создавался |
|---|---|---|
| Паскаль | Никлаус Вирт, 1970 | для обучения программированию: строгий, с понятной структурой |
| Си | Деннис Ритчи, 1972 | для системного программирования — на нём написано ядро операционной системы UNIX |
| Python | Гвидо ван Россум, 1991 | чтобы программы были короткими и легко читались |
Паскаль назван в честь французского учёного Блеза Паскаля, который построил одну из первых механических счётных машин. Python — в честь комедийного шоу «Летающий цирк Монти Пайтона», а не змеи.
Алфавит и имена
Алфавит всех трёх языков — латинские буквы, цифры и специальные знаки: + - * / = < > ( ) ; , и другие. Русские буквы можно писать только внутри строк и комментариев.
Имена переменных строятся по общим правилам:
- состоят из латинских букв, цифр и знака подчёркивания
_; - не начинаются с цифры:
score2— можно,2score— нельзя; - не содержат пробелов: вместо
my scoreпишутmy_score; - не совпадают со служебными словами языка (
if,while,beginи т. п.).
Одно отличие важно запомнить: Си и Python различают большие и маленькие буквы, а Паскаль — нет. Для Си Score и score — две разные переменные, для Паскаля — одна и та же.
Типы данных
Переменная — это именованная ячейка памяти. Тип переменной говорит, что в ней хранится и какие действия с этим можно выполнять.
| Что хранится | Си | Паскаль | Python |
|---|---|---|---|
| целое число | int | integer | int |
| вещественное (дробное) число | double, float | real | float |
| один символ | char | char | строка из одного символа |
| строка | массив символов char[] | string | str |
| логическое значение | int: 0 — ложь, не 0 — истина; в новых версиях есть bool (<stdbool.h>) | boolean | bool |
В Си и Паскале каждую переменную нужно заранее объявить — назвать её имя и тип. В Python объявлять не нужно: переменная появляется, когда ей впервые присваивают значение, а тип определяется по этому значению.
Дробную часть числа во всех трёх языках отделяют точкой, а не запятой: 3.14.
Как устроена программа
Одна и та же задача: положить в переменную 10, увеличить на 5 и вывести результат.
#include <stdio.h>
int main(void) {
int score; // объявление переменной
score = 10;
score = score + 5;
printf("%d\n", score);
return 0;
}
program Score;
var
score: integer; { объявление переменной }
begin
score := 10;
score := score + 5;
writeln(score);
end.
score = 10 # объявлять не нужно
score = score + 5
print(score)
Во всех трёх случаях программа выведет 15. Разберём, из чего состоит каждая запись.
- Си. Строка
#include <stdio.h>подключает библиотеку ввода-вывода. Программа — это функцияmain, её тело заключено в фигурные скобки{ }. Каждая команда заканчивается точкой с запятой.return 0сообщает системе, что программа завершилась без ошибок. - Паскаль. Заголовок
program, раздел описания переменныхvar, затем тело программы междуbeginиend. После последнегоendобязательно ставится точка. - Python. Ни заголовка, ни объявлений: программа — это просто команды, по одной на строке. Точка с запятой не нужна.
Присваивание и сравнение
Присваивание — команда «вычисли выражение справа и положи результат в переменную слева». Запись score = score + 5 не уравнение, а действие: взять старое значение, прибавить 5, записать обратно.
Знаки присваивания и сравнения в языках разные — это частая причина ошибок:
| Си | Паскаль | Python | |
|---|---|---|---|
| присвоить | x = 5 | x := 5 | x = 5 |
| проверить на равенство | x == 5 | x = 5 | x == 5 |
| проверить на неравенство | x != 5 | x <> 5 | x != 5 |
Синтаксис коротко
| Си | Паскаль | Python | |
|---|---|---|---|
| конец команды | ; | ; | конец строки |
| блок команд | { … } | begin … end | отступ |
| объявление переменных | обязательно | обязательно, в разделе var | не нужно |
| комментарий | // … или /* … */ | { … } или // … | # … |
| большие и маленькие буквы | различаются | не различаются | различаются |
Комментарий — пояснение для человека. Транслятор его пропускает, поэтому писать в комментариях можно что угодно, в том числе по-русски.
🎯 Самое главное
- Программа — запись алгоритма на языке программирования. Выполнить её помогает транслятор: компилятор (Си, Паскаль) или интерпретатор (Python).
- Имена переменных: латинские буквы, цифры и
_, первой идёт не цифра. - Тип переменной определяет, что в ней хранится: целое, дробное, символ, строка, логическое значение.
- В Си и Паскале переменные объявляют заранее, в Python — нет.
- Присваивание:
=в Си и Python,:=в Паскале.
🤔 Проверь себя
1. Чем компилятор отличается от интерпретатора?
Компилятор переводит всю программу сразу и создаёт исполняемый файл; интерпретатор выполняет программу команду за командой, не создавая отдельного файла.
2. Какие из имён допустимы: total, 2nd, max_value, my name?
Допустимы total и max_value. 2nd начинается с цифры, в my name есть пробел.
3. Почему в Паскале x := 5, а x = 5 — это другое?
:= — присваивание, оно меняет значение переменной. = в Паскале — сравнение, оно только проверяет, равно ли x пяти.
4. Для Си Count и count — одна переменная или две? А для Паскаля?
Для Си — две разные: он различает регистр. Для Паскаля — одна.
Дальше научим программу разговаривать с пользователем: спрашивать данные и выводить ответ.
Проверь себя
5 случайных вопросов по этому уроку — при следующем открытии будут другие. Ответы проверяются сразу, без регистрации.