Лекции по основам программирования на C/C++

Вид материалаЛекции

Содержание


Алфавит.Алфавит языка состоит из следующих символов
Для решения задачи в какой-либо проблемной области необходимо написать программу, в которой должны быть команды, позволяющие
Лекция 3 Базовые типы данных языка Си
Типизированные константы.
Целые типы.
Вещественные типы.
Вещественный тип
Символьные типы.
Преобразование типов при вычислении выражений
Лекция 4.Производные типы данных
Тип данных строка.
Лекция 5.Основные операции
Арифметические операции.
Операторы перехода.
Лекция 6.Операторы цикла
Лекция 7.Основные сведения о препроцессоре, функции
Директива #define
Директива #include.
Лекция 8. Рекурсивные функции,указатели и функции
Лекция 10.Ввод –вывод в файлы
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6

Лекции по основам программирования на C/C++

(доцент В.Т. Бордукова)


Оглавление

Лекция 1. Введение в программирование

Лекция 2.Основы языка С

Лекция 3 Базовые типы данных языка Си

Лекция 4.Производные типы данных

Лекция 5.Основные операции

Лекция 6.Операторы цикла

Лекция 7.Основные сведения о препроцессоре, Функции

Лекция 8. Рекурсивные функции, указатели и функции

Лекция 9.Операции над указателями на данные

Лекция 10.Ввод – вывод в файлы

Лекция 11. Модульная структура программы

Лекция 12.Введение в язык С++

Лекция 13. Создание и разрушение объектов

Лекция 14.Наследование, виртуальные методы

Лекция 15. Указатели на объекты, конструктор по умолчанию, конструктор копий, операция присваивания и деструктор

Лекция 16. Использование виртуальных методов

Лекция 17.Принципиальные особенности программирования в среде MS DOS и Windows


Лекция 1. Введение в программирование

Обычные человеческие языки при написании программ не используются. Вместо того применяются так называемые «языки программирования», каждый из которых включает строго определенное количество абсолютно однозначных команд. Для всех таких языков создаются детальные спецификации команд, так что, по идее, никаких разночтений возникать не должно.

Теперь самое время разобраться, а как же эти языки устроены, и, соответственно, как ими пользоваться. Прежде всего, надо помнить, что основная цель таких языков – написание инструкций для компьютера. Выполнять их, соответственно, будет компьютер, а значит и запоминать тоже он. А тогда получается, что они должны быть удобны для запоминания и исполнения в компьютере. Именно такой подход в свое время и применили.
Вскоре появилась идея создать язык программирования, который позволял бы, насколько это возможно, описывать необходимые действия с помощью команд, близких к человеческим языкам с использованием обычных математических формул, сколь угодно сложных, со скобками и т.д. Естественно, с этого языка программу надо переводить в машинные коды. Для этого создают специальные программы-переводчики(трансляторы), которые называются компиляторами (или интерпретаторами),а перевод написанной человеком программы в машинные коды, осуществляемый компилятором называется компиляцией (соответственно, интерпретацией).

Для программиста алгоритм всегда был важнее языка, т.к. он показывает как сделать, а язык- как это написать. Алгоритм- это сама операция, которая должна в этом месте выполняться и все равно на каком языке вы ее опишете
Алгоритм должен быть:
  1. Правильным или результативным. То есть, он должен обеспечивать такую последовательность действий, которая позволит вам достичь результата.
  2. Однозначным. Он должен быть написан так, чтобы не было возможности не единственным образом толковать правила и порядок выполнения действий.
  3. Эффективным. То есть, он должен достигать результата максимально удобным и коротким способом. Алгоритм может быть записан графически. Для этого служит блок-схема. Для изображения операций в ней используются специальные символы. Познакомимся с основными из них.






Начало или конец. Внутри фигуры пишут «начало» или «конец» соответственно..



В прямоугольнике находится операция. Можно написать ее словами (например: умножить х на у), а можно кусочком кода с оператором (х*у)



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



Внутри ромба пишутся проверяемые условия Обычно после проверки условий последовательность операторов перестает быть конструкцией следования и становится конструкцией выбора либо повторения.



Так обозначается введение входных параметров, а также выходных. Допустим, вы вынесли отдельно блок операторов и теперь хотите его расшифровать. Но для его работы нужно ввести определенные данные. Их вы напишете справа от этой скобки. То же относится к данным, которые вам нужно получить по окончании работы программы или части кода.

Пример.


Переменная в программировании- это кусочек компьютерной памяти. Он имеет определенную длину, которая зависит от того, какие значения вы хотите записывать и хранить в этой области памяти. Разные данные требуют разного места. Все данные разделены на типы данных, которые обязательно должны указываться при создании переменной. О типах данных, встречающихся в С поговорим позже, а сейчас будем использовать только один из типов: целочисленный – (int). Кроме того, переменная-это область памяти, имеющая имя (или идентификатор). Именно по этому имени к переменной обращается программа. Программисту не нужно знать, где в компьютере будет находиться область памяти, отведенная данной переменной, достаточно знать ее имя. Прежде чем пользоваться переменной, мы должны выделить под нее соответствующее количество памяти и дать этой области памяти имя. Это делается посредством строки, которая называется объявлением переменной. Выглядит она так:
  int name; где int это тип переменной (он определяет длину выделенной памяти, способ записи значения переменной в эту память и допустимые операции , в которых эта переменная может участвовать), name-имя переменной, которое вы для нее придумали, «;»-обязательное окончание оператора в С/С++. Если вы хотите объявить сразу несколько переменных одного типа, вы можете сделать это одной строкой, где имена переменных будут писаться через запятую: int name1, name2,name3;
А можете использовать три строки- и то и другое правильно. int name1; int name2; int name3; После того, как мы объявили переменную, ею можно пользоваться, то есть, присваивать ей значения. Присваивание значения какой-либо переменной происходит во время исполнения программы. Его надо писать отдельно от объявления, int x;
x=0;
Можно положить значение в переменную в той же строке:
int x=0; но в таком случае это называется инициализацией и выполняется эта строка на этапе компиляции, когда компилятор не только отводит место в памяти, но и заполняет его значением. Напишем простейшую программу: Создадим новый файл. Теперь пишем в нем следующее:

#include‹stdio.h›
int main()
{
printf(”Hello World!|n”);

getch();
return0; ;
}

Рассмотрим теперь нашу программу подробнее.
#include‹stdio.h› - Команда #include подключает файл stdio.h к нашей программе. В файле содержатся сведения о функциях ввода-вывода - это так называемая препроцессорная обработка, которая осуществляет некоторую предварительную обработку текста программы перед началом компиляции.

Мы подключили файл, который позволит вводить данные с клавиатуры или выводить данные на экран. Во всех программах, в которых есть ввод и вывод необходимо писать эту строку. В данной программе мы будем выводить данные только на эран. int main() -это основная функция программы. Функция - это действие. В ней вы должны описать, указать, запрограммировать, что именно будет делать ваша программа. И делать это вы будете с помощью операторов. Программа может содержать несколько написанных вами функций, но функция с именем main в ней должна быть обязательно. Основная функция означает, что именно с нее начинается выполнение программы, даже если вы написали ее не первой по порядку. ()- пустые скобки: скобки обязательно должны быть у любой функции- в них пишутся параметры (данные, которые должна функция иметь для своей работы), если таких параметров нет, пишем пустые скобки, как в данном случае. int перед словом main означает, что из функции будут получены какие-то данные, так называемое «возвращаемое значение» и будут они целыми числами (int). О функциях подробнее мы будем говорить позже.
Скобки {}заключают в себя последовательность операторов (блок). В данном случае, операторов, описывающих что должна делать функция main. Такая последовательность называется «телом функции». «{«- открывающая скобка, после нее идет первый оператор, после того, как написан последний оператор тела, ставится закрывающая скобка «}».

С помощью оператора printf(”Hello World!”);мы выводим на экран информацию, в данном случае текст Hello World!. Когда выполнение функции будет завершено, управление вернется обратно в исходную программу. Символ \n - обозначает перевод строки на новую строку после печати.Сразу после имени функции вывода должна идти информация, которую мы хотим увидеть на экране. Если это текст, как в нашем примере, он берется в кавычки. Вся строка- это уже оператор, поэтому не забудем
поставить в конце его точку с запятой! Функция getch(); нужна, чтобы можно было увидеть изменения, происходящие на экране. Вообще-то у нее есть иное назначение, но здесь она работает именно так.Следующая строка (следующий оператор) написан здесь для того, чтобы дать понять, что программа выполнилась успешно. Чуть выше мы говорили, что функция, перед именем которой написано int должна возвращать целое число. return 0; значит, что в случае нормального завершения программы она возвратит целое число 0.

Запустите программу несколько раз подряд. Ваш текст выстраивается в несколько строк одна под другой. Но! За один запуск ваша программа должна писать всего одну строку! А у вас на экране получается много. Как этого избежать? Добавьте еще одну директиву препроцессора, а сразу после первой фигурной скобки еще одну функцию
#include‹conio.h›
int main()
{
clrscr();

и далее продолжайте как и было. Эта функция будет очищать экран в каждый запуск программы. Посмотрите-что теперь получилось.

Рассмотрим следующий пример - написать программу перевода метров в сантиметры.

#include

#include

main()

{

int I;

int J;

int C;

printf("M? \n");

scanf("%d",&I);

J=100*I;

printf(" В %d М содержится %d cm\n", I,J);

C=getch();

}

В данной программе определены две целочисленные переменные I и J.

Введена функция scanf("%d",&I); которая позволяет вводить десятичное число с клавиатуры и значение присвоить переменной I, далее по команде J=100*I; идет вычисление.

Следующая строка printf(" В %d М содержится %d cm\n", I,J); печатает фразу. На место первого %d (d- целая переменная) ставится значение I, на место второго %d ставится значение J.

Функция getch() позволяет задержать изображение на экране и требует любого символа, чтобы закончить работу.

Рассмотрим еще пример. Напишем функцию и вызовем ее из нашей программы.

#include

#include

student()

{

printf("Вы меня вызывали?\n");

}

main()

{

char C;

printf("Я вызываю функцию student\n");

student();

printf("Да. Посмотрите, кто из Ваших соседей спит и разбудите их.\n");

C=getch();

}


Вначале описываем функцию student(), а затем обращаемся к ней в основной программе по команде student();. В результате получаем диалог:

- Я вызываю функцию student.

- Вы меня вызывали?

- Да. Посмотрите, кто из Ваших соседей спит, и разбудите их.

Лекция 2.Основы языка С