Учебно-методический комплекс учебной дисциплины сдм. 02 «программирование» подготовки магистров по направлению 050200 «Физико-математическое образование» магистерская программа «Информатика в образовании»

Вид материалаУчебно-методический комплекс

Содержание


Содержание курса
Состав алгоритмического языка.
Область видимости
Классы памяти
Типы данных в Си++.
Лекция № 3. Операции и выражения. Ввод-вывод данных
Условная операция
Операции присваивания.
Ввод и вывод данных.
Дополнительные задачи
Практическая работа №3
Операторы «выражения».
Составные операторы.
Операторы выбора
Операторы циклов.
Операторы перехода
Объявления имен.
Операторы управления
Подобный материал:
1   2   3   4   5   6

СОДЕРЖАНИЕ КУРСА


Содержание курса может быть разбито на 3 модуля

Модуль 1

Лекция № 1. История и назначение языка Си++

Язык Си++ в настоящее время является одним из наиболее распространенных языков программирования в мире. Разработчиком языка Си++ является Бьерн Страуструп, который опирался на опыт создателей языков Симула, Модула 2, абстрактных типов данных. Основные работы велись в исследовательском центре компании Bell Labs. Непосредственный предшественник Си++ – язык Си с классами – появился в 1979 году, а в 1997 году был принят международный стандарт Си++, который фактически подвел итоги его 20-летнего развития. Принятие стандарта обеспечило единообразие всех реализаций языка Си++. В процессе выработки и утверждения стандарта язык был уточнен и дополнен. Си++ как преемник языка Си широко используется в системном программировании. На нем можно писать высокоэффективные программы, в том числе операционные системы, драйверы и т.п. Язык Си++ – один из основных языков разработки трансляторов.

Состав алгоритмического языка. Алфавит языка. Лексемы языка программирования. Структура программы на языке С++. Директивы препроцессора – управляют преобразованием текста программы до ее компиляции.

Задача препроцессора - преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #. Примеры.

Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения ( тип результата). Каждая функция, в том числе и main должна иметь набор параметров, он может быть пустым, тогда в скобках указывается (void).

За заголовком функции размещается тело функции, т.е. последовательность определений, описаний и исполняемых операторов, заключенных в фигурные скобки. Каждое определение, описание или оператор заканчивается точкой с запятой. Понятие объекта. Компиляция и выполнение программы.

Вопросы.
  1. Из каких частей состоит программа на С++?
  2. Чем определение отличается от объявления?
  3. Перечислить этапы создания исполняемой программы на языке С++.
  4. Что такое препроцессор?
  5. Что такое директива препроцессора? Привести примеры директив препроцессора.

Лекция № 2. Имена, переменные и константы. Типы данных в Си++

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

Определение. Идентификаторы в языке Си++ – это последовательность знаков, начинающаяся с буквы или знака подчеркивания. В идентификаторах можно использовать заглавные и строчные латинские буквы, цифры и знак подчеркивания. Длина идентификаторов произвольная. Ряд слов в языке Си++ имеет особое значение и не может использоваться в качестве идентификаторов. Такие зарезервированные слова называются ключевыми. Список ключевых слов:

Переменные. Переменная в СИ++ – именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Перед использованием любая переменная должна быть описана. Примеры. Общий вид оператора описания

Класс памяти может принимать значения: auto, extern, static, register. Класс памяти определяет время жизни и область видимости переменной. Время жизни может быть постоянным – в течение выполнения программы или временным – в течение блока.

Область видимости – часть текста программы, из которой допустим обычный доступ к переменной. Обычно область видимости совпадает с областью действия.

Const – показывает, что эту переменную нельзя изменять (именованная константа).

При описании можно присвоить переменной начальное значение (инициализация).

Классы памяти: auto, extern, static, register. Имя переменной должно быть уникальным в своей области действия.

Описание переменной. Содержание объявления. Язык Си++ – это строго типизированный язык. Любая величина, используемая в программе, принадлежит к какому-либо типу. При любом использовании переменных в программе проверяется, применимо ли выражение или операция к типу переменной. Довольно часто смысл выражения зависит от типа участвующих в нем переменных.

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

Константы. В программе можно явно записать величину – число, символ и т.п. Пример. В зависимости от того, при каких условиях будет выполняться программа, значение переменной x может быть различным. Таким образом, явная запись значения в программе – это константа.

Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения. Виды констант: целые, вещественные, перечислимые, символьные, строковые константы. Примеры.

Типы данных в Си++. Встроенные типы данных предопределены в языке. Это самые простые величины, из которых составляют все производные типы, в том числе и классы. Таблица простейших типов данных, определяемых языком Си++ и типичные диапазоны их значений. Типы Си++ можно разделить на простые и составные. К простым типам относят те, которые характеризуются одним значением.

В Си++ определено 6 простых типов данных: int (целый), char (символьный), wchar_t (расширенный символьный), bool (логический), float(вещественный), double (вещественный с двойной точностью).

Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов: short (короткий), long (длинный), signed (знаковый), unsigned (беззнаковый). Подробное рассмотрение типов данных.

Вопросы.
  1. Из каких элементов состоит естественный язык? Что является аналогами этих элементов в С++?
  2. Что такое лексема? Привести примеры лексем в языке С++.
  3. Что такое идентификатор? Правила записи идентификаторов.
  4. Что такое константа? Как константа обрабатывается компилятором?
  5. Какие типы констант существуют в С++. Привести примеры констант разных типов.
  6. К какому типу относятся константы 192345, 0х56, 0хСВ, 016, 0.7865, .0045, ‘c’, “x”, one, “one”, 5 , 5.?
  7. Что такое тип данных?
  8. Чем отличаются типы данных: float и double, char и wchar_t, int и short int?
  9. Чем отличаются типы данных int и unsigned int?
  10. Сколько места в памяти занимают данные каждого типа?
  11. На что влияет количество памяти, выделяемое для данных определенного типа?
  12. Что такое переменная? Чем объявление переменой отличается от ее определения? Привести примеры определений и объявлений.
  13. Что такое класс памяти? Какие классы памяти существуют в С++? Привести примеры объявлений и определений переменных разных классов памяти.

Лекция № 3. Операции и выражения. Ввод-вывод данных

Операции. Знаки операций обеспечивают формирование выражений. Выражения состоят из операндов, знаков операций и скобок. Каждый операнд является, в свою очередь, выражением или частным случаем выражения – константой или переменной. Унарные операции. Бинарные операции.

Аддитивные:

+

бинарный плюс (сложение арифметических операндов)

-

бинарный минус (вычитание арифметических операндов)

Мультипликативные:

*

умножение операндов арифметического типа

/

деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление)

%

получение остатка от деления целочисленных операндов

Операции сдвига (определены только для целочисленных операндов).


<<

сдвиг влево

>>

сдвиг вправо
Формат выражения с операцией сдвига: операнд_левый операция_сдвига операнд_правый.


Поразрядные операции. Операции сравнения: результатом являются true( не 0) или false(0).

Логические бинарные операции.

Условная операция

? : условное выражение

Форма записи: Выражение1 ? Выражение2 : Выражение3;

Тернарная операция; если значение первого операнда – истина, то результат – второй операнд; если ложь – результат – третий операнд. Первый операнд должен быть логическим значением, второй и третий операнды могут быть любого, но одного и того же, типа, а результат будет того же типа, что и третий операнд.

Последовательность

, последовательность

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

Операции присваивания. Выполнить соответствующую операцию с левым операндом и правым операндом и присвоить результат левому операнду.

Выражения. Из констант, переменных, разделителей и знаков операций можно конструировать выражения. Каждое выражение представляет собой правило вычисления нового значения.

Если выражение формирует целое или вещественное число, то оно называется арифметическим. Пара арифметических выражений, объединенная операцией сравнения, называется отношением. Если отношение имеет ненулевое значение, то оно – истинно, иначе – ложно. Приоритеты операций.

Ввод и вывод данных. В языке Си++ нет встроенных средств ввода и вывода – он осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках. При использовании библиотеки классов Си++, используется библиотечный файл iostream.h, в котором определены стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран дисплея cout, а также соответствующие операции:
    1. << - операция записи данных в поток;
    2. >> - операция чтения данных из потока.

Например:

#include ;

. . . . . . . . .

cout << “\nВведите количество элементов: ”;

cin >> n;

Вопросы.
  1. Что такое выражение? Из чего состоит выражение? Что такое операнд?
  2. Какие операции можно применять к целочисленным данным? К вещественным данным? К символьным данным?
  3. Что такое отношение? В каком случае отношение считается ложным, а в каком – истинным?
  4. Какие операции называются унарными? Привести примеры.
  5. Какие операции называются бинарными? Привести примеры.
  6. Что такое тернарная операция? Привести пример.
  7. Какая разница между постфиксной и префиксной операцией инкремента (декремента)?
  8. Какие операции присваивания существуют в С++?
  9. Как выполнить ввод переменных х и у, где x типа long int, а у типа double с помощью операции >> ?
  10. Чему будет равно значение выражений:

int z=x/y++; если int x=1, y=2;

int w=x%++y, если int x=1, y=2;

int a=++m+n++*sizeof(int); если int m=1, n=2;

float a=4*m/0.3*n; если float m=1.5; int n=5;

int ok=int(0.5*y)
Практическая работа №1

Цель: Знакомство со средой программирования, создание, отладка и выполнение простой программы, содержащей ввод/вывод информации и простейшие вычисления.

Задачи:

1. Вывести сообщение: «Ничего я не боюсь, если рядом С++»

2. Печать нескольких строк. (использование символа разделителя строки endl (endline – конец строки))

Дополнительные задачи:

1. Напишите программу, которая печатает сообщение «Get with the program!».

2. Напишите программу, печатающую ваше имя.

Практическая работа №2

Цель: Создание, отладка и выполнение простой программы, содержащей ввод/вывод информации и простейшие вычисления.

Задачи:

1. Используя пример:

#include

usign namespase std;


int main()

{

count <<”I am Blaxxon,” << endl;

count <<”the godlike computer.” << endl;

count <<”Fear me!” << endl;

return 0;

}

Удалите разделители строк, но вставьте дополнительные пробелы, чтобы ни одно из не слилось с другими. Результат выполнения программы должен выглядеть так: I am Blaxxon, the godlike computer. Fear me!

2. Модифицируйте пример таким образом, чтобы между каждыми линиями печаталась пустая линия – другими словами, сделайте результаты с двойным пробелом, а не с одним.

Дополнительные задачи:

1. Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных переменных.

а.



б.



Практическая работа №3

Цель: Создание, отладка и выполнение простой программы, содержащей ввод/вывод информации и простейшие вычисления.

Задачи:

1. Напишите программу возведения числа в квадрат.

2. Перевести число из шкалы температуры Цельсия в число градусов по Фаренгейту.

3. Напишите программу, которая считывает переменную и выводит ее куб.

Самостоятельная работа.

На самостоятельное изучение выносятся следующие темы (или вопросы):

1) Теоретические:
  1. Алгоритм. Свойства алгоритма.
  2. СИ++ - язык программирования высокого уровня.
  3. Этапы создания исполняемой программы на языке СИ++.
  4. Директивы препроцессора в СИ++.
  5. Виды программных ошибок.

2) Задачи:
  1. Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных переменных.

Варианты:



Задание



Задания

1



6



2



7



3



8



4



9



5



10



Контрольные вопросы к модулю 1.
  1. Как возник язык СИ++? Структура простой программы на СИ++.
  2. Компиляция и запуск программы на СИ++.
  3. Что такое выражение? Что такое операнд? Что такое отношение?
  4. Какие операции можно применять к целочисленным данным? К вещественным данным? К символьным данным?
  5. Какие операции существуют в С++?
  6. Что такое лексема? Что такое идентификатор? Что такое константа?
  7. Какие типы констант существуют в С++. Что такое тип данных? Что такое переменная? Что такое класс памяти?
  8. Какие классы памяти существуют в С++?

Рубежный тест

1. Какие основные типы данных известны вам в языке С++?
  1. знаковые, беззнаковые;
  2. long, char, int, unsigned;
  3. char, int, float,double;
  4. символьные, строковые, целые.

2. В каком порядке происходит выравнивание типов при смешивании операндов?
  1. float, int, char,double,short;
  2. char, short, int, float, double;
  3. double, int, float, char, short;
  4. double, float, int, short, char.

3. Каков диапазон значений у типов: float, int, double?
  1. -128-+127, 0-4294967295, -65536-+65536;
  2. +-3.4Е+38-3.4Е-38, -32768-32767, -128-+127;
  3. -32768-+32767, -3.4Е+308-3.4Е+308, -128-+127;
  4. 0-4294967295, -32768-32767, -128-+127.

4. В чем разница между понятиями «тип данных» и «модификатор данных»?
  1. тип можно объявить, модификатор – нет;
  2. тип определяет знак, модификатор – размер;
  3. тип определяет размер, модификатор – знак;
  4. модификатор никогда не влияет на работу.

5. Где в языке С++ должны объявляться локальные переменные?
  1. только перед телом функции main;
  2. только перед инструкциями тела функции;
  3. в любом месте программы, кроме функций;
  4. в любом месте локальной (внешней) функции.

6. В каком порядке будут выполняться операции: () + && % ?
  1. () % && ? +
  2. % () + && ?
  3. () % + ? &&
  4. ? () + % &&

7. Что производит с переменной i при операции i++?
  1. два раза прибавляет единицу;
  2. преобразует ее в двоичный код двойного плюса;
  3. прибавляет единицу после участия i в другие операции;
  4. прибавляет единицу перед участия i в другие операции.

8. Какие значения будут присвоены X(1) и Y(0) после операции: ?
  1. ;
  2. ;
  3. ;
  4. .

9. В какой из данных строк содержатся только логические операции?
  1. > >= < <= && ! ? = =
  2. && > >= < <= = = || ! !=
  3. = = = != ?= >= > <= < +=
  4. += && || >= > <= < != &

10. Чем определяется порядок выполнения операций в выражении?
  1. только приоритетом каждой из операций;
  2. только расставленными круглыми скобками;
  3. круглыми скобками и приоритетом операций; +
  4. приоритетом, скобками, размером выражения.

Ключ к тесту:

1в; 2б; 3б; 4в; 5г; 6в; 7в; 8г; 9в; 10в.






Модуль 2

Лекция №1. Операторы.

Запись действий, которые должен выполнить компьютер, состоит из операторов. При выполнении программы операторы выполняются один за другим, если только оператор не является оператором управления, который может изменить последовательное выполнение программы.

Операторы управления работой программы называют управляющими конструкциями программы. К ним относят: составные операторы; операторы выбора, циклов, перехода.

Операторы «выражения». Выражение, после которого стоит точка с запятой, – это оператор-выражение. Его смысл состоит в том, что компьютер должен выполнить все действия, записанные в данном выражении, иначе говоря, вычислить выражение. Операторы выполняются последовательно, и все изменения значений переменных, сделанные в предыдущем операторе, используются в последующих.

Составные операторы. К составным операторам относят собственно составные операторы и блоки. В обоих случаях это последовательность операторов, заключенная в фигурные скобки. Блок отличается от составного оператора наличием определений в теле блока. Пример.

Операторы выбора - это условный оператор и переключатель.
  1. Условный оператор имеет полную и сокращенную форму.

if (выражение-условие ) оператор; //сокращенная форма

if ( выражение-условие ) //полная форма

{

оператор1;

……………

}

else

оператор2;
  1. Переключатель определяет множественный выбор.

switch (выражение)

{

case константа1 : оператор1 ;

case константа2 : оператор2 ;

. . . . . . . . . . .

[default: операторы;]

}

При выполнении оператора switch, вычисляется выражение, записанное после switch, оно должно быть целочисленным. Полученное значение последовательно сравнивается с константами, которые записаны следом за case. При первом же совпадении выполняются операторы помеченные данной меткой. Если выполненные операторы не содержат оператора перехода, то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель. Если значение выражения, записанного после switch не совпало ни с одной константой, то выполняются операторы, которые следуют за меткой default. Метка default может отсутствовать.

Операторы циклов. Различают итерационные циклы и арифметические циклы.

Группа действий, повторяющихся в цикле, называется его телом. Однократное выполнение цикла называется его шагом.

В итерационных циклах известно условие выполнения цикла.
  1. Цикл с предусловием: В качестве <выражения-условия> чаще всего используется отношение или логическое выражение. Если оно истинно, т. е. не равно 0, то тело цикла выполняется до тех пор, пока выражение-условие не станет ложным.
  2. Цикл с постусловием:

Тело цикла выполняется до тех пор, пока выражение-условие истинно.
  1. Цикл с параметром: Выражения могут состоять из нескольких выражений, разделенных запятыми. Выражение_1 - задает начальные условия для цикла (инициализация). Выражение-условие определяет условие выполнения цикла, если оно не равно 0, цикл выполняется, а затем вычисляется значение выражения_3. Выражение_3 - задает изменение параметра цикла или других переменных (коррекция). Цикл продолжается до тех пор, пока выражение-условие не станет равно 0. Любое выражение может отсутствовать, но разделяющие их «;» должны быть обязательно.

Операторы перехода выполняют безусловную передачу управления.
  1. break - оператор прерывания цикла, который целесообразно использовать, когда условие продолжения итераций надо проверять в середине цикла.
  2. continue - переход к следующей итерации цикла. Он используется, когда тело цикла содержит ветвления.
  3. Оператор goto имеет формат: goto метка; В теле той же функции должна присутствовать конструкция: метка:оператор;

Метка – это обычный идентификатор, областью видимости которого является функция. Оператор goto передает управления оператору, стоящему после метки. Использование оператора goto оправдано, если необходимо выполнить переход из нескольких вложенных циклов или переключателей вниз по тексту программы или перейти в одно место функции после выполнения различных действий.
  1. Оператор return – оператор возврата из функции. Он всегда завершает выполнение функции и передает управление в точку ее вызова. Вид оператора: return [выражение];

Объявления имен. Эти операторы объявляют имена, т.е. делают их известными программе. Все идентификаторы или имена, используемые в программе на языке Си++, должны быть объявлены.

Оператор объявления состоит из названия типа и объявляемого имени:

int x; // объявить целую переменную x

double f; // объявить переменную f типа double

const float pi = 3.1415; // объявить константу pi типа float

// со значением 3.1415

Оператор объявления заканчивается точкой с запятой.

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

Вопросы.
  1. Перечислите базовые конструкции структурного программирования.
  2. Перечислите основные управляющие конструкции программы.
  3. Дана программа, вычислить результат при i=1; 2; 3; 4. Какой оператор используется в данной задаче?

#include

void main()

{

int i;

cout<<"\nEnter the number";

cin>>i;

switch(i)

{

case 1:cout<<"\nthe number is one";

case 2:cout<<"\n2*2="<
case 3: cout<<"\n3*3="<
case 4: cout<<"\n"<
default:cout<<"\nThe end of work";

}

}
  1. В каких циклах известно условие выполнение цикла? Перечислите их. Приведите примеры.
  2. Для чего нужны операторы перехода? Перечислите их. В чем их различия?
  3. Что такое метка? Где и когда она используется?