ЛЕКЦИЯ 1. Основы Си++
1. Несколько замечаний о назначении программирования
Программирование – это техническая творческая деятельность, цель которой заключается в решении важных для человека задач или выполнении определенных действий с помощью компьютера. На рис. 1 представлена идеализированная схема решения типичной задачи программирования.
Рис. 1. Схема решения задачи с помощью компьютера.
В рамках такой схемы необходимыми компонентами компьютера являются центральный процессор, устройства ввода/вывода и память (рис. 2).
Рис. 2. Основные компоненты компьютера.
Конечно, в действительности дело обстоит не так просто, как показано на рис. 1. Например, "подробное описание (спецификация) задачи" на естественном языке для компьютера не годится (в настоящее время). Более того, для решения задачи на компьютере недостаточно полного описания задачи, необходимо также снабдить компьютер информацией о том, как именно следует решать задачу – т.е. составить алгоритм. Для описания алгоритмов решения задач или алгоритмов выполнения каких-либо действий (например, управление роботом-манипулятором) с помощью компьютера применяются языки программирования.
На рис. 3 показана более подробная схема решения задачи с помощью компьютера, в которой учтена необходимость использования языка программирования. Иллюстрация этой схемы на конкретном примере приведена в таблице 1.
Существует большое количество различных языков программирования и много способов их классификации. Например, "языками высокого уровня" считаются те языки, синтаксис которых сравнительно близок к естественному языку, в то время как синтаксис "низкоуровневых" языков содержит много технических подробностей, связанных с устройством компьютера и процессора.
Рис. 3. Схема решения задачи на компьютере с использованием языка программирования.
Таблица 1. Основные этапы решения задачи по проверке числа на простоту.
Спецификация задачи
|
Требуется определить, является ли данное число простым.
|
Алгоритм
|
Ввести x
Для каждого целого числа z из диапазоне от 1 до x
Если остаток от деления x на z равен 0, то
вывести сообщение "число не простое" и закончить работу
Если такого числа z не найдено, то
вывести сообщение "число простое" и закончить работу
|
Описание алгоритма на языке высокого уровня
|
#include
int main()
{
int x;
cout << "Введите число:\n";
cin >> x;
for (int z=2; z
if (x % z == 0)
{
cout << "Это не простое число.\n";
return 0;
}
cout << "Это простое число.\n";
return 0;
}
|
Объектный код (внутренний код конкретного компьютера)
|
Двоичные команды процессора (частично)
|
Исполняемый файл для конкретного компьютера
|
Двоичные команды процессора (полностью)
|
"Императивные" или "процедурные" языки позволяют программисту описать, в какой последовательности компьютер будет выполнять отдельные шаги алгоритма и, таким образом, решать задачу и выдавать на экран результат. "Декларативные" языки предназначены больше для описания самой задачи и желаемого результата, а не действий компьютера.
"Объектно-ориентированные языки" рассчитаны на применение особого подхода к описанию задач, согласно которому в задаче выделяются некоторые "объекты" с характерным для них "поведением" и взаимодействующие между собой. Один из первых объектно-ориентированных языков – Смоллток, он предназначен исключительно для объектно-ориентированного программирования. В отличие от него, язык Си++ обладает как объектно-ориентированными возможностями, так и средствами традиционного процедурного программирования.
Радикальные приверженцы различных языков и стилей программирования иногда делают экстравагантные заявления, выделяющие семейство языков или один язык как исключительный и идеально подходящий для любых задач. Например, довольно распространено мнение, что объектно-ориентированный подход наиболее близок к способу решения задач человеком. По этому поводу вы со временем сможете составить собственное мнение, т.к. абсолютно истинного, очевидно, нет.
|