Примеры кода
Примеры кода
Эта глава посвящена демонстрации типичных, часто встречающихся задач программирования на четырёх популярных языках: Python, JavaScript, Java и C#. Цель — показать, как одна и та же логическая операция может быть реализована в разных экосистемах, с учётом их синтаксических особенностей, идиом и стилей.
Вывод текста на экран
Одна из самых первых задач при изучении любого языка — научиться выводить информацию. Это позволяет проверять работу программы и отлаживать логику.
Python
print("Привет, мир!")
Функция print() принимает строку или любое другое значение и выводит его в стандартный поток вывода (обычно консоль). Она автоматически добавляет символ новой строки в конец.
JavaScript
console.log("Привет, мир!");
В среде Node.js или браузера используется метод console.log(). Он выводит значение в консоль разработчика. Для вывода в HTML-документ применяются другие методы, например document.write() или манипуляции с DOM.
Java
public class Main {
public static void main(String[] args) {
System.out.println("Привет, мир!");
}
}
В Java требуется определение класса и метода main, который является точкой входа. System.out.println() выводит строку и завершает её символом новой строки.
C#
using Система;
class Program
{
static void Main()
{
Console.WriteLine("Привет, мир!");
}
}
Аналогично Java, программа начинается с метода Main. Класс Console предоставляет метод WriteLine() для вывода с переходом на новую строку.
Объявление переменных и простые вычисления
Хранение и обработка данных — основа программирования.
Python
a = 10
b = 3
summa = a + b
product = a * b
quotient = a / b # результат — число с плавающей точкой: 3.333...
integer_div = a // b # целочисленное деление: 3
remainder = a % b # остаток от деления: 1
print(f"Сумма: {summa}, Произведение: {product}")
print(f"Целочисленное деление: {integer_div}, Остаток: {remainder}")
Python динамически типизирован: тип переменной определяется автоматически. Оператор f"" позволяет вставлять значения переменных прямо в строку.
JavaScript
let a = 10;
let b = 3;
const sum = a + b;
const product = a * b;
const quotient = a / b; // 3.333...
const integerDiv = Math.floor(a / b); // 3
const remainder = a % b; // 1
console.log(`Сумма: ${sum}, Произведение: ${product}`);
console.log(`Целочисленное деление: ${integerDiv}, Остаток: ${remainder}`);
let объявляет изменяемую переменную, const — неизменяемую. JavaScript также динамически типизирован. Для целочисленного деления используется Math.floor().
Java
int a = 10;
int b = 3;
int sum = a + b;
int product = a * b;
double quotient = (double) a / b; // приведение к double: 3.333...
int integerDiv = a / b; // 3 (целочисленное деление по умолчанию)
int remainder = a % b; // 1
System.out.println("Сумма: " + sum + ", Произведение: " + product);
System.out.println("Целочисленное деление: " + integerDiv + ", Остаток: " + remainder);
Java статически типизирована: тип указывается явно. При делении целых чисел результат тоже целый. Чтобы получить дробное число, нужно привести один из операндов к типу double.
C#
int a = 10;
int b = 3;
int sum = a + b;
int product = a * b;
double quotient = (double)a / b; // 3.333...
int integerDiv = a / b; // 3
int remainder = a % b; // 1
Console.WriteLine($"Сумма: {sum}, Произведение: {product}");
Console.WriteLine($"Целочисленное деление: {integerDiv}, Остаток: {remainder}");
C# также статически типизирован. Интерполяция строк через $"" аналогична Python и JavaScript.
Условные конструкции
Проверка условий позволяет программе принимать решения.
Python
age = 18
if age >= 18:
print("Совершеннолетний")
elif age >= 14:
print("Подросток")
else:
print("Ребёнок")
Ключевые слова: if, elif, else. Отступы определяют блоки кода.
JavaScript
let age = 18;
if (age >= 18) {
console.log("Совершеннолетний");
} else if (age >= 14) {
console.log("Подросток");
} else {
console.log("Ребёнок");
}
Скобки {} ограничивают блоки. Условия заключаются в круглые скобки.
Java
int age = 18;
if (age >= 18) {
System.out.println("Совершеннолетний");
} else if (age >= 14) {
System.out.println("Подросток");
} else {
System.out.println("Ребёнок");
}
Снтаксис идентичен JavaScript.
C#
int age = 18;
if (age >= 18)
{
Console.WriteLine("Совершеннолетний");
}
else if (age >= 14)
{
Console.WriteLine("Подросток");
}
else
{
Console.WriteLine("Ребёнок");
}
То же самое, но с принятой в C# стилистикой фигурных скобок на новых строках.
Циклы
Повторение действий — частая задача.
Python (цикл for)
for i in range(5):
print(f"Итерация {i}")
range(5) генерирует последовательность от 0 до 4.
JavaScript
for (let i = 0; i < 5; i++) {
console.log(`Итерация ${i}`);
}
Классический цикл for с инициализацией, условием и шагом.
Java
for (int i = 0; i < 5; i++) {
System.out.println("Итерация " + i);
}
Аналогично JavaScript.
C#
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"Итерация {i}");
}
То же самое с интерполяцией.
Работа со списками / массивами
Хранение коллекций данных.
Python
fruits = ["яблоко", "банан", "апельсин"]
fruits.append("манго") # добавление
print(fruits[0]) # доступ по индексу
for fruit in fruits: # перебор
print(fruit)
Списки в Python динамические и гибкие.
JavaScript
let fruits = ["яблоко", "банан", "апельсин"];
fruits.push("манго"); // добавление
console.log(fruits[0]); // доступ
fruits.forEach(fruit => console.log(fruit)); // перебор
Массивы в JS также динамические.
Java
import java.util.ArrayList;
ArrayList<String> fruits = new ArrayList<>();
fruits.add("яблоко");
fruits.add("банан");
fruits.add("апельсин");
fruits.add("манго");
System.out.println(fruits.get(0)); // доступ
for (String fruit : fruits) {
System.out.println(fruit);
}
Используется ArrayList для динамического массива. Тип элементов указывается через дженерики (<String>).
C#
using Система.Collections.Generic;
List<string> fruits = new List<string>();
fruits.Add("яблоко");
fruits.Add("банан");
fruits.Add("апельсин");
fruits.Add("манго");
Console.WriteLine(fruits[0]); // доступ
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
List<T> — стандартный динамический список в .NET.
Функции / методы
Инкапсуляция логики в повторно используемые блоки.
Python
def greet(name):
return f"Привет, {name}!"
message = greet("Алиса")
print(message)
Функция объявляется через def, возвращает значение через return.
JavaScript
function greet(name) {
return `Привет, ${name}!`;
}
const message = greet("Алиса");
console.log(message);
Можно также использовать стрелочные функции: const greet = (name) => ....
Java
public static String greet(String name) {
return "Привет, " + name + "!";
}
// вызов
String message = greet("Алиса");
System.out.println(message);
Метод должен быть частью класса. Здесь он статический для простоты вызова.
C#
static string Greet(string name)
{
return $"Привет, {name}!";
}
// вызов
string message = Greet("Алиса");
Console.WriteLine(message);
Метод также статический и объявлен внутри класса.
Чтение ввода от пользователя
Взаимодействие с пользователем.
Python
name = input("Введите ваше имя: ")
print(f"Здравствуйте, {name}!")
input() читает строку из стандартного ввода.
JavaScript (Node.js)
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Введите ваше имя: ', (name) => {
console.log(`Здравствуйте, ${name}!`);
rl.close();
});
Используется модуль readline для асинхронного чтения.
Java
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Введите ваше имя: ");
String name = scanner.nextLine();
System.out.println("Здравствуйте, " + name + "!");
scanner.close();
Scanner считывает ввод из System.in.
C#
Console.Write("Введите ваше имя: ");
string name = Console.ReadLine();
Console.WriteLine($"Здравствуйте, {name}!");
Console.ReadLine() читает строку до нажатия Enter.
Работа со строками
Обработка текстовых данных — одна из самых частых задач в программировании. Ниже показаны базовые операции: конкатенация, извлечение подстроки, замена, разбиение и проверка содержимого.
Python
text = "Привет, мир!"
upper_text = text.upper() # "ПРИВЕТ, МИР!"
substring = text[0:7] # "Привет,"
replaced = text.replace("мир", "Вселенная") # "Привет, Вселенная!"
words = text.split(", ") # ["Привет", "мир!"]
has_hello = "Привет" in text # True
print(f"Верхний регистр: {upper_text}")
print(f"Подстрока: {substring}")
print(f"Замена: {replaced}")
print(f"Слова: {words}")
print(f"Содержит 'Привет': {has_hello}")
Python предоставляет богатый набор методов для работы со строками. Все строки неизменяемы.
JavaScript
let text = "Привет, мир!";
let upperText = text.toUpperCase(); // "ПРИВЕТ, МИР!"
let substring = text.substring(0, 7); // "Привет,"
let replaced = text.replace("мир", "Вселенная"); // "Привет, Вселенная!"
let words = text.split(", "); // ["Привет", "мир!"]
let hasHello = text.includes("Привет"); // true
console.log(`Верхний регистр: ${upperText}`);
console.log(`Подстрока: ${substring}`);
console.log(`Замена: ${replaced}`);
console.log(`Слова: ${words}`);
console.log(`Содержит 'Привет': ${hasHello}`);
Строки в JavaScript также неизменяемы. Метод replace() заменяет только первое вхождение, если не используется регулярное выражение с флагом g.
Java
String text = "Привет, мир!";
String upperText = text.toUpperCase(); // "ПРИВЕТ, МИР!"
String substring = text.substring(0, 7); // "Привет,"
String replaced = text.replace("мир", "Вселенная"); // "Привет, Вселенная!"
String[] words = text.split(", "); // {"Привет", "мир!"}
boolean hasHello = text.contains("Привет"); // true
System.out.println("Верхний регистр: " + upperText);
System.out.println("Подстрока: " + substring);
System.out.println("Замена: " + replaced);
System.out.println("Слова: " + java.util.Arrays.toString(words));
System.out.println("Содержит 'Привет': " + hasHello);
В Java строки неизменяемы. Класс String предоставляет множество методов для манипуляций.
C#
string text = "Привет, мир!";
string upperText = text.ToUpper(); // "ПРИВЕТ, МИР!"
string substring = text.Substring(0, 7); // "Привет,"
string replaced = text.Replace("мир", "Вселенная"); // "Привет, Вселенная!"
string[] words = text.Split(new string[] { ", " }, StringSplitOptions.None); // ["Привет", "мир!"]
bool hasHello = text.Contains("Привет"); // true
Console.WriteLine($"Верхний регистр: {upperText}");
Console.WriteLine($"Подстрока: {substring}");
Console.WriteLine($"Замена: {replaced}");
Console.WriteLine($"Слова: [{string.Join(", ", words)}]");
Console.WriteLine($"Содержит 'Привет': {hasHello}");
C# также использует неизменяемые строки. Метод Split() требует явного указания разделителя как массива.
Работа с файлами
Чтение и запись данных в файл — стандартная задача при работе с внешними источниками.
Python
# Запись
with open("example.txt", "w", encoding="utf-8") as f:
f.write("Привет из Python!")
# Чтение
with open("example.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
Конструкция with гарантирует закрытие файла даже при возникновении ошибки.
JavaScript (Node.js)
const fs = require('fs');
// Запись
fs.writeFileSync("example.txt", "Привет из Node.js!", "utf8");
// Чтение
const content = fs.readFileSync("example.txt", "utf8");
console.log(content);
Можно использовать асинхронные версии (writeFile, readFile) для неблокирующего ввода-вывода.
Java
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
// Запись
Files.write(Paths.get("example.txt"), "Привет из Java!".getBytes(StandardCharsets.UTF_8));
// Чтение
String content = Files.readString(Paths.get("example.txt"), StandardCharsets.UTF_8);
System.out.println(content);
Начиная с Java 11, доступен удобный метод readString. Для более сложных задач используются BufferedReader и FileWriter.
C#
using Система.IO;
// Запись
File.WriteAllText("example.txt", "Привет из C#!", Система.Text.Encoding.UTF8);
// Чтение
string content = File.ReadAllText("example.txt", Система.Text.Encoding.UTF8);
Console.WriteLine(content);
Класс File предоставляет статические методы для простых операций с файлами.
Обработка исключений
Обработка ошибок позволяет программе корректно реагировать на непредвиденные ситуации.
Python
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Ошибка деления на ноль: {e}")
finally:
print("Блок finally всегда выполняется")
JavaScript
try {
let result = 10 / 0;
// В JS деление на ноль даёт Infinity, но для демонстрации:
throw new Error("Искусственная ошибка");
} catch (e) {
console.log(`Ошибка: ${e.message}`);
} finally {
console.log("Блок finally всегда выполняется");
}
Java
try {
int result = 10 / 0; // вызовет ArithmeticException
} catch (ArithmeticException e) {
System.out.println("Ошибка: " + e.getMessage());
} finally {
System.out.println("Блок finally всегда выполняется");
}
C#
try
{
int result = 10 / 0; // вызовет DivideByZeroException
}
catch (DivideByZeroException e)
{
Console.WriteLine($"Ошибка: {e.Message}");
}
finally
{
Console.WriteLine("Блок finally всегда выполняется");
}
Во всех четырёх языках используется похожая структура try-catch-finally.
Создание класса и объекта
Объектно-ориентированное программирование — ключевая парадигма во многих языках.
Python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
return f"Меня зовут {self.name}, мне {self.age} лет."
alice = Person("Алиса", 30)
print(alice.introduce())
JavaScript
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
introduce() {
return `Меня зовут ${this.name}, мне ${this.age} лет.`;
}
}
const alice = new Person("Алиса", 30);
console.log(alice.introduce());
Java
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String introduce() {
return "Меня зовут " + name + ", мне " + age + " лет.";
}
}
Person alice = new Person("Алиса", 30);
System.out.println(alice.introduce());
C#
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public string Introduce()
{
return $"Меня зовут {Name}, мне {Age} лет.";
}
}
Person alice = new Person("Алиса", 30);
Console.WriteLine(alice.Introduce());
Все примеры демонстрируют инкапсуляцию данных и поведения в одном объекте.
Работа с датой и временем
Обработка временных меток — частая задача в логировании, планировании и анализе данных.
Python
from datetime import datetime, timedelta
now = datetime.now()
print(f"Сейчас: {now}")
# Добавить 7 дней
next_week = now + timedelta(days=7)
print(f"Через неделю: {next_week.strftime('%Y-%m-%d %H:%M')}")
# Разбор строки
date_str = "2025-12-31"
parsed = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Разобранная дата: {parsed}")
JavaScript
const now = new Date();
console.log(`Сейчас: ${now}`);
// Добавить 7 дней
const nextWeek = new Date(now);
nextWeek.setDate(now.getDate() + 7);
console.log(`Через неделю: ${nextWeek.toLocaleDateString()}`);
// Разбор строки
const dateStr = "2025-12-31";
const parsed = new Date(dateStr);
console.log(`Разобранная дата: ${parsed}`);
Java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
LocalDateTime now = LocalDateTime.now();
System.out.println("Сейчас: " + now);
// Добавить 7 дней
LocalDateTime nextWeek = now.plus(7, ChronoUnit.DAYS);
System.out.println("Через неделю: " + nextWeek.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
// Разбор строки
String dateStr = "2025-12-31";
LocalDateTime parsed = LocalDateTime.parse(dateStr + "T00:00");
System.out.println("Разобранная дата: " + parsed);
C#
using Система;
DateTime now = DateTime.Now;
Console.WriteLine($"Сейчас: {now}");
// Добавить 7 дней
DateTime nextWeek = now.AddDays(7);
Console.WriteLine($"Через неделю: {nextWeek:yyyy-MM-dd HH:mm}");
// Разбор строки
string dateStr = "2025-12-31";
DateTime parsed = DateTime.Parse(dateStr);
Console.WriteLine($"Разобранная дата: {parsed}");
HTTP-запрос (получение данных с API)
Взаимодействие с внешними сервисами — ключевая часть современных приложений.
Python
import requests
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
if response.status_code == 200:
Данные = response.json()
print(f"Заголовок: {Данные['title']}")
else:
print("Ошибка запроса")
JavaScript (Node.js)
const axios = require('axios');
axios.get('https://jsonplaceholder.typicode.com/posts/1')
.then(response => {
console.log(`Заголовок: ${response.Данные.title}`);
})
.catch(error => {
console.error('Ошибка запроса');
});
Java
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(body -> {
// Для простоты не парсим JSON
System.out.println("Ответ получен (длина): " + body.length());
})
.join();
C#
using System.Net.Http;
using Система.Text.Json;
using var client = new HttpClient();
var response = await client.GetAsync("https://jsonplaceholder.typicode.com/posts/1");
if (response.IsSuccessStatusCode)
{
string json = await response.Content.ReadAsStringAsync();
var post = JsonSerializer.Deserialize<Dictionary<string, object>>(json);
Console.WriteLine($"Заголовок: {post["title"]}");
}
else
{
Console.WriteLine("Ошибка запроса");
}
Параллельное выполнение (простейший пример)
Выполнение нескольких задач одновременно повышает производительность.
Python
import threading
import time
def task(name):
time.sleep(1)
print(f"Задача {name} завершена")
thread1 = threading.Thread(target=task, args=("A",))
thread2 = threading.Thread(target=task, args=("B",))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("Все задачи завершены")
JavaScript
function task(name) {
return new Promise(resolve => {
setTimeout(() => {
console.log(`Задача ${name} завершена`);
resolve();
}, 1000);
});
}
Promise.all([task("A"), task("B")])
.then(() => console.log("Все задачи завершены"));
Java
Thread thread1 = new Thread(() -> {
try {
Thread.sleep(1000);
System.out.println("Задача A завершена");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
Thread thread2 = new Thread(() -> {
try {
Thread.sleep(1000);
System.out.println("Задача B завершена");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
System.out.println("Все задачи завершены");
C#
using Система.Threading.Задачи;
async Task RunTask(string name)
{
await Task.Delay(1000);
Console.WriteLine($"Задача {name} завершена");
}
await Task.WhenAll(RunTask("A"), RunTask("B"));
Console.WriteLine("Все задачи завершены");
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Проблема — Пользователи должны иметь возможность регистрироваться, входить в систему и получать доступ к персонализированному контенту или функционалу. Простой консольный чат на C — это учебное приложение, демонстрирующее базовые принципы сетевого взаимодействия между клиентом и сервером с использованием сокетов. Перед началом работы обязательно изучите главу Turtle . Scratch — визуальная образовательная среда программирования, разработанная MIT Media Lab. Особенности реализации — set -euo pipefail — обязательная практика для production-скриптов; - shift $((OPTIND - 1)) корректно обрабатывает как script.sh -c ., так и script.sh . -c; - -C и… echo off rem — Отключает вывод каждой команды (как set -x в bash) rem — в начале первой строки подавляет вывод её самой Примечание — использует XML-документацию, встроенную в модули. В PowerShell 7+ справка по умолчанию загружается из интернета, если локальные файлы отсутствуют. Примечание — для большинства случаев достаточно , но оно не поддерживает функции и некоторые нестандартные объекты (например, до ES2024 — поддержка есть, но не во всех средах выполнения, например,… ✅ Такой подход даёт полную типобезопасность без и без / . Подходит для лёгких сценариев или когда внешние зависимости нежелательны. ✅ Работает, если связь или гарантируется единственность. ⚠️ Для продакшена рекомендуются Jackson ( ) или Gson (более производительные и типобезопасные). удобен для прототипирования. Генератор случайных паролей — это утилита, создающая строки с заданными криптографическими свойствами — длина, наличие заглавных и строчных букв, цифр, специальных символов.Готовые решения
Простой консольный чат на CSharp
Примеры фигур Turtle на Python
Примеры скриптов Scratch
Примеры скриптов в Linux
Примеры команд в cmd
Примеры команд в PowerShell
Примеры решений в JavaScript
Примеры решений в TypeScript
Примеры запросов в SQL
Примеры решений в Java
Генератор случайных паролей на CSharp