Программирование на С, С++
![Станислава Солнечная - Программирование на С, С++ -](https://samizdatt.net/uploads/litres/57209743.jpg)
Автор:Станислава Солнечная
Жанр: программирование
Тип:Книга
Цена:690.00 руб.
Издательство:Самиздат
Год издания: 2020
Язык: Русский
Просмотры: 78
КУПИТЬ И СКАЧАТЬ ЗА: 690.00 руб.
ЧТО КАЧАТЬ и КАК ЧИТАТЬ
Программирование на С, С++
Станислава Солнечная
Задача данной книги простым и доступным языком объяснить примеры использования C, C++ и основные возможности С, С++. Изложено кратко о некоторых инструментах и их использовании на практике. Также даны сведения об аппаратном обеспечении вычислительной техники, для представления механизма программирования и управления компьютера, необходимо дать понять как работает компьютер, компилятор, отладчик и т.д. с языком программирования . Каждый раздел книги наделен примерами. Дополненный материал в следующих изданиях. Кратко даны различные возможности для ознакомления, изучение их за пределами книги, так как они заслуживают тщательного и глубокого погружения.
Начало
Вычислительная техника создавалась для обработки информации. Информация бывает звуковая, графическая, текстовая и т.д. Компьютер не общается на естественном нам языке. Он общается последовательностями 0 и 1. Язык программирования – это команды компьютеру, что-то выполнить, сделать. Есть языки высокого уровня и машинные языки, например. Мы изучим язык С, С++. Почему С, С++? На языке С написаны большинство операционных систем и языков программирования. Зная один язык, легко освоить другой язык.
Мы научимся давать компьютеру простые команды. Напишем первую программу, см. Листинг 1.
Листинг 1
Первая программа
1 #include
2 main()
3 {
4 printf(“Привет!”);
5 }
В 1 строке мы подключаем библиотеку. В программах есть функции. В библиотеке хранятся самые употребляемые функции. Во второй строке объявляем функцию main (). Далее с 3 по 5 строку тело функции, оно взято в фигурные скобки: ‘{‘, ‘}’. В четвертой строке функция библиотеки из файла stdio.h. Эта функция выводит на экран строку с символами: “Привет!”. Все строки заключаются в двойные кавычки, например, “слова”, литералы в одинарные кавычки, например, ‘в’.
Рекомендуется выучить наизусть написание простой программы. Для того, чтобы легче выучить, следует пописать похожие простые программы, на практике быстрее учиться.
Каждый оператор заканчивается точкой с запятой, делается это для компилятора, которому объявляется, где конец одного оператора и начало другого.
Если при выполнении программы, русская кодировка выдается у вас в консоли белибердой, то возможно добавить строки 2 и 5:
Листинг 2
Первая программа
1 #include
2 #include
3 main()
4 {
5 system("chcp 1251 > nul");
6 printf(“Привет!”);
7 }
Функция system заголовочного файла stdlib.h передает строку "chcp 1251 > nul" в операционную систему для выполнения. Возможны и другие настройки.
Усложним первую программу, научим компьютер обращаться к нам по имени, см. Листинг 3.
Листинг 3
Программа: “Знакомство”
1 #include
2 main()
3 {
4 char b[10];
5 printf(“Привет! Как тебя зовут?\n”);
6 scanf(“%s”,&b);
7 printf(“Привет! %s”,b);
8 }
В 4 строке объявляется массив из 10 переменных символьного типа b. Переменная – это имя какого-то участка памяти. В 5 строке оператор выводит на консоль строку, формат задан, переводит на новую строку: ‘\n’ – управляющий символ, символ перевода строки. В 6 строке считывается ввод с консоли, задается формат считывания – %s, означает, что считывается строка, &b – адрес, по которому будет сохранен массив символов. В строке 7 вывод на консоль форматированной строки, %s – означает, что будет выведена строка, b – это та строка, которую выведут на экран (форматирование %s).
Задания:
Написать простой диалог: Привет! Как тебя зовут! – Как дела?
Выучить написание простой программы.
Оператор if-else
Формальный синтаксис:
if (выражение)
оператор1
else
оператор2
Напишем следующую программу с использованием оператора if-else. Пользователь вводит число, компьютер сравнивает с 10, и выводит результат на экран.
Листинг 4
Программа “Сравнение”
1 #include
2 main()
3 {
4 int a;
5 printf(“Vvedite 4islo \n”);
6 scanf(“%d”,&a);
7 if(a>10)
8 printf(“%d > 10”,a);
9 else
10 printf(“%d<=10”,a);
11 }
Задания:
1. Пользователь вводит число. Компьютер сравнивает с 20 и выводит результат.
В операторе if-else есть условие, правила составления условий рассказано в алгебре логике. Рассмотрим логическое или и логическое и в С:
&& – логическое И,
|| – логическое ИЛИ.
Таблица истинности для них, смотри Таблица 1-Таблица 2.
То есть ветвь if(условие) оператор1 выполняется , если условие равно 1.
Например,
if((a>10)&&(a<20))
оператор1
Если a>10 – истинно, в Таблице 1, это 1, если a>10 – ложь, это 0.
Таблица 1
Таблица 2
Оператор switch, цикл while
Один из требований к программе, это удобство использования пользователем, поэтому напишем программу с меню, см. Листинг 5.
Строка 15, оператор break, он прерывает цикл и т.п.
Листинг 5
Программа с меню
1 #include
2 main()
3 {
4 int a, d;
5 do
6 {
7 printf(" MENU \n1. Kvadrat chisla\n2. Kub chisla\n3. Vuhod\nVuberite punkt menu\n");
8 scanf("%d",&d);
9 switch(d)
10 {
11 case 1:
12 printf("Vvedite chislo\n");
13 scanf("%d",&a);
14 printf("Kvadrat chisla raven %d\n",a*a);
15 break;
16 case 2:
17 printf("Vvedite chislo\n");
18 scanf("%d",&a);
19 printf("Kub chisla raven %d\n",a*a*a);
20 break;
21 case 3:
22 break;
23 default:
24 printf("Nevernui vvod!\n\n");
25 }
26 }
27 while(d!=3);
28 }
Оператор switch используется для выбора одного из вариантов, указанных в case. Также для написания программы мы использовали цикл do-while. Цикл проверяет условие в конце.
В default мы указали случай, в котором пользователь вводит цифру, не являющуюся номером пункта меню. А что будет если пользователь введет букву. Возможно зацикливание и т.п. Чтобы этого не было. Нам необходимо предусмотреть ввод не цифр, а букв.
Листинг 6
Программа с меню
1 #include
2 main()
3 {
4 int a;
5 char d;
6 do
7 {
8 printf(" MENU \n1. Kvadrat chisla\n2. Kub chisla\n3. Vuhod\nVuberite punkt menu\n");
9 scanf("%s",&d);
10 switch(d)
11 {
12 case ‘1’:
13 printf("Vvedite chislo\n");
14 scanf("%d",&a);
15 printf("Kvadrat chisla raven %d\n",a*a);
16 break;
17 case ‘2’:
18 printf("Vvedite chislo\n");
19 scanf("%d",&a);
20 printf("Kub chisla raven %d\n",a*a*a);
21 break;
22 case ‘3’:
23 break;
24 default:
25 printf("Nevernui vvod!\n\n");
26 }
27 }
28 while(d!=3);
Задания:
Спроектировать меню. Написать программу.
Оператор for
Оператор for – это оператор цикла, обобщение оператора while [4]. Оператор for:
for (int i=0; i
using namespace std;
int main()
{
int y;
for(int x=100;x<=200;x=x+20)
{
y=x*x-4*x;
cout<<"y("<
using namespace std;
int main()
{
cout<
2using namespace std;
3
4 int main()
5 {
6 int i=10;
7 cout<
using namespace std;
int main()
{
int y;
y=(int)(3/10);
cout<
using namespace std;
void dv(int a)
{
int b[100];
int i=0;
while(a>1)
{
b[i]=a%2;
a=(a-a%2)/2;
i++;
}
b[i]=a;
for(int j=i;j>=0;j–)
cout<>a;
dv(a);
return 0;
}
Ниже даны тесты для проверки задач программы.
Тест 1
a=10
Результат
1010
Тест 2
a=2
Результат
10
Тест 3
a=8
Результат
1000
Поразрядные операции применимы только к целочисленным аргументам (char, short, int и long).
& – поразрядное И
| – поразрядное включающее ИЛИ
^ – поразрядное исключающее ИЛИ
<< – сдвиг влево
>> – сдвиг вправо
~ – одноместное поразрядное дополнение до единицы
В побитовых операциях работа идет над каждым битом.
Поразрядное включающее ИЛИ
Пример:
8 | 10 = 10
8 – это 1000 в двоичной системе счисления, 10 – это 1010 в двоичной системе счисления. С каждым битом числа выполняется операции логическое ИЛИ, и вместо этого бита ставится результат этой операции, смотри Рисунок 4.
Рисунок 4
Поразрядное И
Пример:
8 & 10 = 8
8 – это 1000 в двоичной системе счисления, 10 – это 1010 в двоичной системе счисления. С каждым битом числа выполняется операции логическое И, и вместо этого бита ставится результат этой операции.
Пример программы в Листинге 12.
Листинг 12
#include
using namespace std;
void dv(int a)
{
int b[100];
int i=0;
while(a>1)
{
b[i]=a%2;
a=(a-a%2)/2;
i++;
}
b[i]=a;
for(int j=i;j>=0;j–)
cout<>a>>b;
c=a|b;
cout<> 2 = 1
Двоичная запись числа передвинется на 2 знака вправо. 2 бита исчезнут.
Одноместное поразрядное дополнение до единицы
С каждым битом выполняется инверсия.
Пример:
x = ~8;
8 – это 1000 в двоичной системе счисления, после инверсии с каждым битом: 1 меняется на 0, 0 на 1. При хранении числа, один бит отвечает за знак, поэтому знак числа тоже меняется. ~x=|~x|-1. Результат: ~8=-9.
Комментарии
Для красивого стиля и правил оформления кода, необходимо, чтобы в коде все функции, блоки и т.д. были расшифрованы. Комментарии бывают /*….*/ (все, что между косыми чертами и звездочкой есть комментарий), // (все, что после // и на одной строке есть комментарий), смотри Листинг 13.
Листинг 13
/*демонстративная программа*/
#include
using namespace std;
int main()
{
cout<<"Hello!"; //Вывод «Hello!» в консоль
}
Строки
Во второй программе мы уже использовали строки. Специальные функции для работы со строками определены в библиотечном файле .
Некоторые функции для работы со строками, представлены ниже.
char* strcpy(str1,str2) – копирует строку str2 в строку str1 c ‘\0’, возвращает str1.
char* strcat(str1,str2) – присоединяет str2 в конец строки str1, возвращает str1.
Листинг 14
Работа со строками
#include
#include
int main()
{
char str1[100];
char str2[100];
printf("Vvedite stroky: \n");
scanf("%s",str1);
printf("Vvedenai stroka:\n%s \n",str1);
printf("Vvedite stroky: \n");
scanf("%s",str2);
printf("Vvedenai stroka:\n%s\n",str2);
strcat(str1,str2);
printf("Vvedenai stroka:\n%s\n",str1);
}
Задания:
Написать программу, в которой пользователь дописывает фразу, которую вывел компьютер, результат вывести на экран.
Закрепление материала
Операции
Присваивать значение переменной
a=10;
Вычислить значение выражения a^3+a^2-10.
Листинг 15
#include “stdio.h”
int main()
{
int a,s;
printf(“Vvedite zna4enie a\n”);
scanf(“%d”,&a);
s=a*a*a+a*a-10;
printf(“Rezultat: %d”,s);
}
Операция инкрементирования и декрементирования
++ – операция увеличения на 1,
– – – операция уменьшения на 1.
Операции ++ и – – бывают постфиксные и префиксные.
Пример:
N++;
++N;
–-N;
N–;
Разница в постфиксной и префиксной форме в том, что ++N – прибавление 1 до того, как переменная используется, N++ после того. Аналогично, с операцией –. Смотри Листинг 16, результат на Рисунке 5.
Листинг 16
#include
using namespace std;
int main()
{
int y=3;
cout<
2 main()
3 {
4 File *F;
5 F=fopen(“text”, “w+”);
6 fwrite(“ura”,1,sizeof(char)*u,F);
7 fclose(F);
8 }
Рассмотрим второй способ записи в файл, Листинг 18.
Листинг 18
Ввод в файл. Способ второй
1 #include
2 #include
3 main()
4 {
5 File *F;
6 char text[100];
7 printf(«Vvedite text:/n»);
8 scanf(“%s”,&text);
9 F=fopen(“text”, “w+”);
10 fwrite(text,1,sizeof(char)*strlen(text), F);
11 fclose(F);
12 }
fwrite(text,1,sizeof(char)*strlen(text),F)
1 – функция для записи в файл
2 – что записываем, массив символов
3 – сколько таких строк
4 – размер, функция sizeof() – вычисляет размер типа, функция strlen() – вычисляет длину заполненного массива text.
5– файловый указатель
fclose(F);
1 – функция для закрытия файла
2 – файловый указатель
Задания:
Записать в файл строку.
Прочитать из файла текст.
Структуры
«Структура – это совокупность нескольких переменных, часто различных типов, сгруппированных под единым именем для удобства обращения» [4].
Методов в структурах нет в стандарте ANSI C. Я бы не рекомендовала смешивать методы С, С++ и следить за версиями компилятора для красоты стиля программирования.
Несколько структур с одним набором данных.
struct {…} x,y,z;
Описание структуры.
struct point
{
int x;
int y;
};
Объявление структур: через точку, в начале название структуры, в конце имя переменной
point.x;
Листинг 19
Создание структуры
1 #include
2 struct point
3 {
4 int x;
5 int y;
6 };
7 int main ()
8 {
9 printf(“Введите координаты точки /n Введите абциссу точки”);
10 scanf(“%d”,&point.x);
11 printf(«Введите ординату точки»);
12 scanf(“%d”,&point.y);
13 printf(“/n (%d,%d)”,point.x,point.y);
14 }
Массивыструктур
struct key
{
char* word;
int count;
}keytab[NKEYS];
Листинг 20
Работа со структурой
1 #include
2 struct zapisi
3 {
4 char text[100];
5 char data[11];
6 };
7 main()
8{
9 struct zapisi x;
10 int d;
11 printf(«Vvedite datu, v formate dd.mm.yyyy: \n»);
12 scanf(“%s”,x.data);
13 printf(“Vvedite poslanie: \n”);
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию (https://www.litres.ru/pages/biblio_book/?art=57209743&lfrom=688855901) на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.