Отправляет email-рассылки с помощью сервиса Sendsay

Уроки программирования на С++

  Все выпуски  

Уроки программирования на С++ Выпуск №1


Информационный Канал Subscribe.Ru

Практические уроки С++: от самого простого к сложному. Автор: Александр Коростин. alkorostin@yandex.ru

Практические уроки C++

online обучение С++. После окончания обучения вы сможете создавать свои программы на С++ любой степени сложности.

Предисловие

Первое, о чем хотелось бы рассказать, это чем же все таки отличается С++ от остальных языков программирования. С++ - это язык объектно ориентированого программирования. С++, также язык высокого уровня, что упрощает взаимодействие программиста и компьютера. По сравнению с ассемблером С++, конечно, медленнее, но на ассемблере вам понадабятся годы, чтобы создать то, что на С++ можно сделать за пару недель. Именно поэтому С++ используют намного большее число программистов, нежели ассемблер (для тех кто может не знать: assembler - язык низкого уровня). Программы на С++ работают в несколько раз быстрее, чем на Delphi. Лично меня синтаксис Delphi, не говоря уже о его скорости, скажем не устраивает. По этим причинам, и не только, огромное количество софта, и особенно игр пишутся на С++. В этой серии рассылок я буду описывать С++ начиная от основ, до построения оконных приложений на Windows, вывода графики DirectX и OpenGL. По голосованию подписчиков могу также рассмотреть вывод звука с использованием Direct Sound и Direct Music. Что за чем будет идти определят сами подписчики. Если у вас возникнут вопросы или предложения пишите мне письма по адресу: alkorostin@yandex.ru. В первой рассыке будет не мало информации, поэтому следующие возможно будут поменьше, хотя это опять же зависит от вас. Не забудьте, если можете, ответить на вопрос в конце листа.

Урок №1: Создаем первую программу

#include <iostream>
using namespace std;
int main()
{
cout<<"Hello world!";
cin.get();
return 0;
}

Данная программа выводит на экран строку "Hello world!". Давайте рассмотрим каждую строку в отдельности.
Директива #include подключает к нашему файлу файл, отвечающий за работу с операциями ввода вывода. Способы добавления файлов - это отдельная тема, поэтому сейчас можете запомнить только то, что без данной строки мы не сможем воспользоваться объектами cin и cout, о которых речь пойде ниже. Следующая строка using namespace std; - тоже очень важная, но о ней мы поговорим чуть позже. int main(){....} - это самая главная функция в любой программе. Это - точка входа любого приложения. Между знаков { и } этой функции можно вводить код самой программы, который выполняется сверху вниз.

Оператор cout<< первой строки функции main выводит на экран наш текст. Важно: заметьте любой текст в С++ записывается в двойных кавычках, а любой оператор оканчивается точкой с запятой. Теперь, чтобы вывести на экран какую либо строку текста нужно написать cout<< текст в двойных кавычках точка с запятой.

cin.get() - особенного нечего не делает, но задерживает выход из программы до нажатия пользователем какой либо клавиши.

return 0 - возвращаепОперационной Системе (далее ОС) код ошибки и передает ОС управления, тем самым программа завершается .Если ошибки не было, возвращается просто нуль.

А теперь давайте проследим действия при выполнении программы:

  1. Операционная система запускает функцию main
  2. Оператор cout<< выводит на экран текст
  3. cin.get() задерживает выход программы до нажатия клавиши
  4. И наконец оператор return завершает выполнение программы и возвращает ОС код ошибки 0, то есть ошибки не произошло

Немного о функциях. Функция main.

Функция - это такая часть кода, которую можно выполнить несколько раз в любом месте программы, только лишь вызвав ее. Допустим нам надо вывести на экран целую страницу текста, да еще и 100 раз. Согласитесь, не очень удобно было бы сидеть писать 100 раз одно и то же. Есть вариант: вы могли бы просто скопировать эти строки, но тогда увеличился бы и размер вашего файла. К счастью проблему можно очень легко решить. Допустим вам надо выполнить 5 раз следующее:

cout<<"Это оооочень длинная строка, которую вы не хотите повторно перепииииисывать";

Чтобы не писать несколько раз строку выше можно для нее создать функцию, которая будет ее писать, а мы буде изредка, по мере необходимости вызывать эту функцию. Например:

void MyFunction()
{
      cout<<"Это оооочень длинная строка, которую вы не хотите повторно перепииииисывать";
}

Теперь вы можете вызвать эту функцию в любом месте программы, просто написав  имя_функции(); Например: MyFunction();

Мы еще вернемся к такой большой теме, как функции С++, поэтому ничего такого не будет если вы не сможете пока сами создавать свои функции, а на данный момент нужно только запомнить, что функции существуют, нужны, и их можно вызывать.

Как я уже говорил, самая главная функция любой программы, которую запускает ОС, при загрузке программы называется main. Ни каких других функций ОС не знает, поэтому писать код и запускать другие функции мы должны из единой и неповторимой функции main. Еще одно: все что находится внутри функции, т.е. между знаками { и } после декларации самой функции называется ее телом.

Оператор cout

В С++ выводить информацию на экран можно через оператор cout. Например код

cout<<"Text"<<" and "<<"Text"<<endl;
cout<<"Second Line";

выводит на экран такую надпись

Text and Text
Second Line

то что мы написали в первой строке вместо текста endl , говорит о том, что мы хотим перенести весь следующий выводимый текст на строку ниже. Обратите также внимание на синтаксис записи в первой строке. Так тоже можно :).

Директива #include

Писать весь текст программы в одном файле крайне не удобно, особенно, если программа большая. Поэтому у вас есть возможность писать часть кода в одном файле, часть в другом, а потом подключать их к основному файлу программы. Так сделали, к примеру, разработчики оператора cout, которым вы уже успели немного попользоватся. Они назвали свой файл просто iostream (Разработчики С++ не долго думали о расширении подключаемых файлов :)     ). Именно поэтому, чтобы использовать cout в своей программе мы подключали файл iostream.

Внимание: в старых компиляторах у файла iostream есть расширение .h , которое также нужно указывать.

Как подключить к своей программе какой нибудь файл? Как вы уже наверное догадались, просто в начале своего файла написать #include <...>. Вместо точек необходимо вставить имя подключаемого файла.

Переменные и оператор cin>>

Мы научились выводить информацию на экран. Это конечно хорошо, но как насчет ввода, ведь пользователь не будеть просто тупо смотреть на экран, возможно ему захочется еще и по кнопочкам поклацать..... Неважно, главное то, что есть такой оператор, который умеет вводить число, букву, слово, нащелканую пользователем на клавиатуре. Но постойте: если мы сможем считать какую нибудь информацию с клавиатуры, то остается не ясен один вопрос, а именно: где мы это все будем хранить. Ответ очивиден: на жестком диске, в оперативке либо еще где нибудь. Но для языка для которого абстракция является основной его целью, а также отличием, например от assembler'а, подобный вариант "издевательства" над программистом не подходит. По этому в С++ отлично работают такие штуковины, как переменные. Основной вывод такой: переменные - это часть памяти на комьютере к которой можно обращаться по ее имени (и не только, к примеру по адресу). Как же нам создать переменную? Для начала нам надо определится с её типом: она может быть с плавающей точкой (дробная) либо целая, в ней могут хранится данные небольшого размера или самые, что ни на есть большие, также переменная может принимать значения меньше нуля или нет, но этот, последний параметр отложим немного на потом. К целочисленным типам переменных относятся: short (2 байта), int (4 байта), long (4 байта). К типам переменных с плавающей точкой относятся: float, double, long double (сравнительно новый тип), опять же по возрастанию максимального принимаемого значения и занимаемого места в памяти. Создать в программу переменную любого типа очень просто нужно записать так: <тип> <имя>; К примеру, создадим переменную для хранения данных о возрасте пользователя так:

int user_age;

Теперь мы можем делать с этой переменной по имени "user_age" что пожелаем: присваевать значение, выводить значение на экран, или сравнить с другой переменной. В данном случае мы создали переменную типа int, которая может принимать значения в диапазоне от -(256 * 256*256*256)/2+1 до +(256*256*256*256)/2 , т.е. довольно большую, для возраста пользователя хватит :). Как мы производили вычисления? Если слова бит и байт вам пока ничего не говорят, то советую, или даже очень советую почитать начальные сведения о компе любого учебника по информатики и тему математики по азам двоичной системы счисления (я думаю, найти такую книжку не составит труда), но если не хотите углублять свои математические знания, то это, конечно ваше право, тем более что для этой книги такие знания не понадобятся. Итак, допустим мы хотим ввести значение натыканое пользователем на клавиатуре в нашу переменныю. Для этого воспользуемся объектом cin (Кстати: никогда не забывайте ставить точку с запятой после каждого оператора, иначе исходный текст компилится не будет)

cin>> user_age;

Именно такой синтаксис записи оператора cin. Обратите внимание на направление скобок >>.

Теперь давайте выведем значение переменной user_age с помощью cout на экран:

cout<< user_age;

Вот так. Заметьте, что при выводе значения переменной кавычке, обозначающие что вы хотите вывести текст не нужны!!! Следующая строка показывает не правильную запись:

cout<< "user_age";

Если вы напишите это, то на экране появится не значение переменной, а надпись: user_age, что в данном случае нам не подходит. А теперь рассмотрим следующий листинг (не забывайте эти листинги пропечатывать сами,а не копировать):

#include <iostream>
using namespace std;
int main()
{
int user_age;
cout<<"Enter your age: "; 
cin >>user_age;
cout<< "User ager is: "<< user_age;
cin.get();
cin.get();
return 0;
}

Данная программа выводит надпись "Enter your age: " (Введите ваш возраст) на экран. Пользователь пишет цифру, сколько ему лет и нажимает enter. После этого программа выводит на экран "Your age is: " и выводит значения переменной возраста. Не думаю, что эта програмка может вызвать затруднения, но если вызвала, то перечитайте заново эту главу. Итак, похоже, что вы научились азам консольного программирования, но прежде чем заканчивать данную главу, давайте пересмотрим некоторые правила синтаксиса языка С++:

1. Любой оператор (#include - это не оператор а директива) должен заканчиваться точкой с запятой.

2. Текст, выводимый на экран записывается в двойных кавычках

3. Имя переменной может начинатся только с буквы.

4. Имя переменной может содержать буквы, цифры, и знак подчеркивания ( _ )

5. Ключевые слова, названия переменных не должны разрываться, к примеру нельзя написать на одной строке ma , а на другой  in.

6. Принято писать каждый оператор в своей строке, хотя вы это правило можете и нарушить (программа откомпилится правильно), но тогда будет сложно проверять код программы и искать ошибки.

7. Нельзя называть переменную именем, которое зарезервировано под ключевое слово (например, нельзя создать переменную с именем return или int)

Будете соблюдать эти правила, и компилятор не будет так часто выдавать сообщения об ошибке :) .

Основные операции с переменными. Тип char.

Что вы можете делать с переменными? Складывать, умножать, делить, приравнивать и т.д. и т.п.

int number_of_pixels = 786432;

или

int number_of_pixels = 1024 * 768;

В первом случае мы приравниваем значение переменно числу 786432, а во втором, даем компьютеру сначало посчитать, что получится в результате умножения 1024 на 768, а потом присвоить это значение переменной. Давайте рассмотрим следующий листинг:

#include iostream
using namespace std;
int main()
{
int a;
int b;
int c;
cout<< "Enter first number: ";
cin>> a;
cout<< "Enter second number: ";
cin>> b;
c = a + b;
cout<< "first number + second number = "<<c;
cin.get();
cin.get();
return 0;
}

После тчательного просмотра приведенного выше кода вам все станет ясно. Это не сложно.

А теперь допустим мы хотим ввести с клавиатуры букву или символ. По сути букв как таковых мы не вводим не выводим. Мы говорим компьютеру: "Выведи букву, которая имеет вот такой-то код". Все символы, которые вводит пользователь, выводит программа, на самом деле являются только кодом в виде цифры. Когда вы пишите cout<<'a'; , компилите, то компилятор заменяет эту строку на: cout<<65; установив метку, что 65 -  не просто цифра, а код символа. Как вы думаете: рационально было бы использовать тип int для хранения кода символа? Не рационально. Поэтому существует специальный тип даных, который я еще не упоминал до этого момента, в котором хранят коды символов. Тип данных называется char. Занимает переменная этого типа всего 1 байт и может принимать значения от -127 до +128, т.е. 256 значений( 0 - тоже значение ). Если вы используете операторы cin и cout, то они сами определяют, какой тип вы хотите ввести\вывести. Если вы выводите на экран переменныю типа char, то выведется по умолчанию не действительное ее значение (т.е. код знака), а символ, соответствующий коду. А теперь листинг:

#include iostream
using namespace std;
int main()
{
cout<<"Enter some letter";
char letter;
cin>>letter;
int code = letter;
cout<<"Code of your letter is: "<<code;
cin.get();
cin.get();
return 0;
}

Данная программа показывает код символа, введенного пользователем. Если вы внимательно прочитали эту главу, то вопросов возникнуть не должно.

Вопрос:
Как я описываю материал?

1. Несколько раз все перечитал ни фига не понял

2. Понял только после четвертого перечитывания всего текста, надо бы помедленнее.

3. Нормально написано, если так пойдет не пропущу не одной рассылки.

4. Медленовато пишишь. Не нужно все так разжевывать.

5. Все слишком елементарно, в следующей рассылке приступаем к OpenGL :).


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.extcpplessons
Отписаться
Вспомнить пароль

В избранное