
- •Содержание работы
- •1 Элементы языка с
- •1.1 Символы
- •2 Простые типы данных
- •3 Операции над числовыми данными
- •4 Объявление переменных
- •5 Структура программы на с
- •7 Директива #define
- •9 Библиотека математических функций
- •Содержание работы
- •1 Условный оператор if
- •Пример 1 Поиск наибольшего значения
- •Пример 2 Определение принадлежности точки фигуре
- •2 Составной оператор
- •Пример 3 Проверка условия существования треугольника
- •3 Вложенный оператор
- •Пример 4 Вложенное ветвление
- •4 Оператор выбора switch
- •Содержание работы
- •1 Определение цикла
- •Пример 1 Виды циклов
- •Задание 1
- •2 Оператор цикла for
- •3 Оператор цикла while
- •4 Оператор цикла do while
- •5 Табулирование функций
- •Пример 2 Табулирование непрерывной функции
- •Пример 3 Табулирование сложной функции
- •6 Вычисление конечных сумм и произведений
- •Пример 4 Вычисление суммы
- •Пример 5 Вычисление произведения
- •7 Управляющие конструкции break, continue, return, goto
- •Содержание работы
- •1 Понятие и описание массивов
- •Пример 1 Объявление одномерного массива
- •Пример 2 Объявление двумерного массива
- •2 Одномерные массивы Пример 3 Ввод элементов одномерного массива
- •Пример 4 Нахождение суммы и среднего значения элементов массива
- •Пример 5 Нахождение наибольшего элемента массива и его номера
- •3 Двумерные массивы (матрицы)
- •Пример 6 Суммирование матриц
- •4 Символьные массивы
- •Пример 7 Описание символьного массива
- •Пример 8 Сравнение строк
- •5 Указатели и операции над указателями
- •Пример 9 Описание указателей
- •Пример 10 Операции над указателями
- •Пример 11 Сравнение указателей
- •6 Связь между массивом и указателем
- •Содержание работы
- •1 Модульное программирование
- •2 Объявление функции
- •Пример 1 Объявление функции
- •Задание 1
- •Это важно
- •2 Формальные и фактические параметры функции
- •Задание 3
- •Содержание работы
- •1 Создание класса
- •Пример 1 Объявление класса
- •Задание 1
- •Пример 2 Доступ к членам класса
- •Задание 2
- •2 Полиморфизм
- •Пример 3 Перегрузка функций
- •Задание 3
- •Содержание работы
- •1 Понятие формы. Конструктор форм Windows Forms
- •2 Элементы управления
- •3 Создание приложений с помощью Windows Forms Application Пример 1 Создание простейшего оконного приложения
- •Пример 2 Создание идентификационной формы
- •Пример 3 Изменение параметров MessageBox.Show
- •5 Анализ кода
- •6 Расчетные формы Пример 4 Создание расчетной формы
- •Пример 5 Создание простейшего меню
- •7 Создание оконных приложений на базе mfc
4 Объявление переменных
В С все переменные, используемые в программе должны быть объявлены вместе с указанием соответствующих им типов.
Объявление переменной имеет следующий формат:
Тип_переменной <список переменных через запятую>;
Переменные можно инициализировать при описании.
Инициализация – задание начального значения или списка начальных значений переменной (переменным) при объявлении.
Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const. Объекты с типом const представляют собой данные используемые только для чтения, т.е. этой переменной не может быть присвоено новое значение. Отметим, что если после слова const отсутствует спецификатор-типа, то подразумевается спецификатор типа int.
Пример 4 Объявление и инициализация переменных и констант
int a, b, c;
float f, a, b;
int a=1, b, c=2;
const double A=2.128E-2;
const B=286; //подразумевается const int B=286
Задание 4
Определите идентификаторы и типы всех переменных, констант для вычисления площади окружности. Запишите операцию присваивания.
5 Структура программы на с
Общая структура программы на С следующая:
директивы_препроцессора
int main()
{
тело программы
}
Директива препроцессора – это инструкция, которая включает в текст программы файл, содержащий описание множества функций, что позволяет правильно компилировать программу. Смысл препроцессор в том, что директива выполняется до того, как текст программы поступает на вход компилятора.
Это важно
-
все директивы препроцессора начинаются со знака #;
-
после директивы препроцессора точка с запятой не ставится.
Пример 5 Программа «Hello, World!»
Запустите Visual C++ и создайте новое консольное приложение. В результате на экране получим:
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
return 0;
}
Эта простая программа появилась в первом издании книги «Язык программирования С» Кернигана и Ритчи. Она печатает сообщение «Hello World!» на стандартном устройстве вывода (которым, как правило, является монитор (дисплей).
Рассмотрим структуру программы.
В первой строке программы расположен комментарий, далее следует директива препроцессора #include, встретив которую, компилятор заменяет её на полный текст файла, на который она ссылается. В данном случае эта строка будет заменена стандартным заголовочным файлом stdafx.h (h – от header, заголовок).
Строка программы
using namespace System;
означает, что компилятор должен использовать пространство имен System. Пространство имен (namespace) создает декларативную область, в которой могут размещаться различные элементы программы. Ключевое слово using информирует компилятор об использовании заявленного пространства имен (в данном случае System).
Функция с именем main является особенной, так как выполняется первой при запуске программы, то есть служит так называемой точкой входа в программу. Фигурные скобки после функции main обозначают её определение. Слово int говорит, что функция main возвращает (вычисляет) целое число.
В фигурных скобках формируется тело программы.
Тело программы – программный блок, содержащий операторы описания, присваивания, управляющих конструкций, функции и др.
В примере 5 тело программы содержит два оператора – оператор WriteLine и return.
Инструкция return обеспечивает механизм завершения работы функции main.
Последняя фигурная скобка обозначает конец определения функции main.
Задание 5
Запустите программу на выполнение сочетанием клавиш Ctrl+F5:
6 Категории операторов в С/С++. Консольный ввод/вывод
Оператор – действие, которое должен выполнить компьютер.
Все операторы языка С/С++ могут быть условно разделены на следующие категории:
-
оператор объявления;
-
операторы ввода/вывода;
-
оператор-выражение;
-
операторы управления: условные операторы, к которым относятся оператор условия if и оператор выбора switch; операторы цикла (for, while, do while); операторы перехода (break, continue, return, goto); оператор возврата return;
-
другие операторы.
Ввод/вывод информации в программировании – процесс обмена информацией между оперативной памятью и внешними устройствами: клавиатурой, дисплеем, внешней памятью и т.п. Ввод – это занесение информации с внешних устройств в оперативную память, а вывод – извлечение информации из оперативной памяти на внешние устройства.
Существует несколько способов консольного ввода и вывода.
Первый способ – это использование функции ввода printf() и функции вывода scanf() (унаследована в С++ от С).
Второй способ – это использование оператора ввода Cin >> и оператора вывода Cout <<.
Назначение операторов ввода и вывода легче запомнить, если считать, что каждый «указывает» в сторону перемещения данных. Например,
>> x – перемещает данные в x, а << x – перемещает данные из x.
Это важно
Для работы с функциями printf();и scanf() необходимо подключить библиотеку базовых функций <stdio.h> директивой #include<stdio.h>
Для работы с операторами Cin и Cout необходимо подключить библиотеку <iostream> директивой #include<iostream> (таблица 7).
Таблица 7 – Функции и операторы ввода/вывода информации
|
Библиотека stdio.h |
Библиотека iostream |
Вывод |
Функция printf(); |
Оператор Cout |
Ввод |
Функция scanf(); |
Оператор Cin |
Примечание
Угловые скобки в записи <stdio.h> указывают компилятору искать файл stdio.h в каталоге стандартных заголовочных файлов. Если посмотреть содержимое текстового файла stdio.h, то можно увидеть большое количество строк, являющихся объявлениями функций.
В дальнейшем будем также подключать библиотеку <conio.h> директивой #include<conio.h>. Библиотека conio.h содержит функции для работы с терминалом в текстовом режиме, в частности getch();которая выполняет задержку выполнения программы до нажатия клавиши и обеспечивает закрытие приложения по нажатию на клавишу.
В папке установки Microsoft Visual C++ в Program Files найдите файлы stdio.h, conio.h. Что произойдет при их отсутствии?
Формат функции вывода:
printf("строка_формата", список_переменных);
Формат функции ввода:
scanf("строка_формата", &список_переменных);
Символы в строке формата делятся на три категории:
-
обычные символы;
-
управляющие символы (см. табл. 4 п. 2);
-
спецификатор формата.
Спецификатор формата – запись, которая начинается со знака % и которая определяет форму внешнего представления выводимой величины.
Спецификаторы:
%d – целое число;
%u – целое число без знака (для типа unsigned);
%c – символ;
%s – строка;
%f – вещественное число c фиксированной точкой;
%e – вещественное число с плавающей точкой (с мантиссой и порядком)
Это важно
Спецификатор должен соответствовать типу выводимой переменной.
Пример 6 Ввод/вывод данных с использованием функций
Напишем программу, запрашивающую длины трех сторон треугольника.
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int a,b,c;
printf("введите длины трех сторон треугольника\n");
scanf("%d %d %d",&a,&b,&c);
printf("ввод выполнен\n");
getch();
return 0;
}
Тестирование:
В данном примере оператор ввода scanf("%d %d %d",&a,&b,&c); в строке формата содержит три спецификатора %d, т.к. вводятся три целочисленных числа a,b,c , соответствующих сторонам треугольника.
Задание 6
Измените текст программы примера 6 так, чтобы можно было выполнить ввод вещественных значений переменных a,b,c.
Совет
Используйте отступы при написании кода для повышения читабельности программы.
Примечание
При использовании оператора вывода Cout и оператора ввода Cin в пространстве имен System
using namespace System;
с библиотекой iostream необходимо писать:
std::cout и
std::cin
т.к. в iostream все классы объявлены в пространстве std, сокр. от англ. standard – стандартный (в iostream.h все классы объявлены в глобальном пространстве имен).
Пример 7 Ввод/вывод данных с использованием операторов
Рассмотрим две программы с пространством имен std и System.
Программа 1 |
Программа 2 |
#include "stdafx.h" #include<iostream> #include<conio.h> using namespace std;
int main(array<System::String ^> ^args) { int a,b,c; cout << "введите длины трех сторон треугольника\n"; cin >> a >> b >>c; cout << "ввод выполнен\n"; getch(); return 0; } |
#include "stdafx.h" #include<iostream> #include<conio.h> using namespace System;
int main(array<System::String ^> ^args) { int a,b,c; std::cout << "введите длины трех сторон треугольника\n"; std::cin >> a >> b >>c; std::cout << "ввод выполнен\n"; getch(); return 0; } |
Задание 7
На основе примера 7 разработайте программу-запрос на ввод, например:
а) текущего года, номера месяца и дня;
б) возраста, роста и веса пользователя;
в) года поступления пользователя в Вуз, группы и номера по списку;
г) года, номера месяца рождения и числа полных лет пользователя;
д) года, номера месяца и дня рождения пользователя;
е) номера домашнего, рабочего и сотового телефона пользователя и др.
Завершите программу сообщением «Ввод данных закончен».
Составьте две программы – с использованием функций printf(); scanf(); и операторов Cout и Cin.
Примечание
При вводе и выводе информации следует обратить внимание на то, что консольное приложение создается в Windows, а выполняется как программа DOS. В DOS используется кодировка OEM (866), а в Windows — ANSI (1251), буквы русского алфавита в которых имеют разные коды. Первые 128 символов совпадают – это ASCII, стандарт английских символов (плюс служебные). Следовательно, для работы с русскими буквами (кириллицей) необходимо в Visual C++ обеспечить преобразование символьной информации между этими двумя кодировками.