Программирование на языке Си (Dev-C++)

Содержание

Слайд 2

ТЕОРИЯ Программа – это алгоритм, записанный на каком-либо языке программирования набор

ТЕОРИЯ

Программа – это
алгоритм, записанный на каком-либо языке программирования
набор команд для

компьютера

Команда – это описание действий, которые должен выполнить компьютер.
откуда взять исходные данные?
что нужно с ними сделать?
куда поместить результат?

Слайд 3

ЯЗЫК Си 1972-1974 – Брайан Уилсон Керниган и Де́ннис Макалистэйр Ритчи

ЯЗЫК Си

1972-1974 – Брайан Уилсон Керниган
и Де́ннис Макалистэйр Ритчи
высокая скорость

работы программ
много возможностей
стал основой многих современных языков (С++, С#, Javascript, Java, ActionScript, PHP)
много шансов сделать ошибку, которая не обнаруживается автоматически
Слайд 4

Оболочка Dev C ++ 5.11 IDE = Integrated Development Environment интегрированная

Оболочка Dev C ++ 5.11

IDE = Integrated Development Environment
интегрированная среда

разработки:
текстовый редактор для создания и редактирования текстов программ
транслятор для перевода текстов программ на Си и Си++ в команды процессора
компоновщик для создания исполняемого файла (EXE-файла), подключаются стандартные функции
отладчик для поиска ошибок в программах
Слайд 5

Как начать работу? здесь мы набираем программу сообщения об ошибках

Как начать работу?

здесь мы набираем программу

сообщения об ошибках

Слайд 6

Простейшая программа main() { } главная (основная) программа всегда имеет имя

Простейшая программа

main()
{
}

главная (основная) программа всегда имеет имя main

начало программы

«тело» программы (основная часть)

конец

программы
Слайд 7

Библиотеки #include описание стандартных функций ввода и вывода. #include описание функций

Библиотеки

#include описание стандартных функций ввода и вывода.

#include описание

функций для работы с клавиатурой и монитором.

#include используется для задач, связанных с локализацией.
Локаль — это сочетание языковых и культурных аспектов. Они включают в себя: язык сообщений, различные наборы символов, лексикографические соглашения и т.п. setlocale(LC_ALL,"");

#include файл содержит в себе функции, занимающиеся выделением памяти, контролем процесса выполнения программы, преобразованием типов и другие.

#include файл, содержащий типы и функции для работы с датой и временем.  srand(time(NULL));

#include математические функции

Слайд 8

Вывод текста на экран Printf(" "); #include #include #include main() { setlocale(LC_ALL,""); printf("Привет!"); }

Вывод текста на экран

Printf(" ");

#include
#include
#include
main()
{
setlocale(LC_ALL,"");
printf("Привет!");
}

Слайд 9

Вывод текста на экран Printf(" "); Переход на новую строку #include

Вывод текста на экран

Printf(" ");

Переход на новую строку

#include
#include
#include
main()
{
setlocale(LC_ALL,"");
printf("Привет,\n

Вася!");
getch();
}

на экране:

последовательность \n (код 10)
переход на новую строку

Привет,
Вася!

ожидание нажатия на любую клавишу

Слайд 10

Комментарии к коду #include #include #include main() { setlocale(LC_ALL,""); printf("Привет,\n Вася!");

Комментарии к коду

#include
#include
#include
main()
{
setlocale(LC_ALL,"");
printf("Привет,\n Вася!"); // вывод на экран
getch();

/* ждать нажатия клавиши */
}

комментарий до конца строки

комментарий между
/* несколько строк кода или текста*/

Слайд 11

Самостоятельное задание 1: Вывести на экран текст "лесенкой" Вася пошел гулять

Самостоятельное задание

1: Вывести на экран текст "лесенкой"
Вася
пошел
гулять
2: Вывести

на экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZ

Задания

Слайд 12

Что такое переменная? Переменная – это ячейка в памяти компьютера, которая

Что такое переменная?

Переменная – это ячейка в памяти компьютера, которая имеет

имя и хранит некоторое значение.
Значение переменной может меняться во время выполнения программы.
При записи в ячейку нового значения старое стирается.
Типы переменных
int – целое число (4 байта)
float – вещественное число, floating point (4 байта)
char – символ, character (1 байт)
Слайд 13

Имена переменных Могут включать латинские буквы (A-Z, a-z) знак подчеркивания _

Имена переменных

Могут включать
латинские буквы (A-Z, a-z)
знак подчеркивания _
цифры 0-9
НЕ могут включать
русские

буквы
пробелы
скобки, знаки +, =, !, ? и др.
Слайд 14

Объявление переменных Объявить переменную – определить ее тип, имя, начальное значение,

Объявление переменных

Объявить переменную – определить ее тип, имя, начальное значение, и

выделить ей место в памяти.

main()
{
int a; // переменная а целого типа
float b, c; // переменные b и с вещественного типа
int Tu104, Il86=23, Yak42; // переменные целого типа
float x=4.56; // целая и дробная части отделяются
точкой
char c, c2='A', m; // символьные переменные c, m,
c2 = 'A'
}

Слайд 15

Оператор присваивания Общая структура: Оператор – это команда языка программирования высокого

Оператор присваивания

Общая структура:

Оператор – это команда языка программирования высокого уровня.
Оператор присваивания

служит для изменения значения переменной.

имя переменной = выражение;

Арифметическое выражение может включать
константы (постоянные)
имена переменных
знаки арифметических операций:
+ - * / %
вызовы функций
круглые скобки ( )

куда записать

что
записать

остаток от деления

Слайд 16

Оператор присваивания Пример a = 5; x = a + 20;

Оператор присваивания

Пример

a = 5;
x = a + 20;
y = (a +

x) * (x – a);

5

25

600

Слайд 17

Ввод чисел с клавиатуры scanf ("% ", & ); – форматный

Ввод чисел с клавиатуры

scanf ("% ", & ); – форматный ввод


scanf ("%d%d", &a, &b);

Пример: Ввести два целых числа и вывести на экран их сумму.

#include
#include
#include
main()
{
setlocale(LC_ALL,"");
int a, b, c;
printf("Введите два целых числа\n"); // оформление интерфейса
scanf ("%d%d", &a, &b);
c = a + b;
printf("%d", c);
getch();
}

Слайд 18

Ввод чисел с клавиатуры scanf ("%d%d", &a, &b); scanf – форматный

Ввод чисел с клавиатуры

scanf ("%d%d", &a, &b);

scanf – форматный ввод

формат ввода

адреса

ячеек, куда записать введенные числа

Формат – символьная строка, которая показывает, какие числа вводятся (выводятся).
%d – целое число
%f – вещественное число
%c – 1 символ
%s – символьная строка

ждать ввода с клавиатуры двух целых чисел (через пробел или Enter), первое из них записать в переменную a, второе – в b

12

7652

а

значение переменной a

&a – адрес переменной a

Слайд 19

Что неправильно? int a, b; scanf ("%d", a); scanf ("%d", &a,

Что неправильно?

int a, b;
scanf ("%d", a);
scanf ("%d", &a, &b);
scanf ("%d%d", &a);
scanf

("%d %d", &a, &b);
scanf ("%f%f", &a, &b);

&a

%d%d

&a, &b

убрать пробел

%d%d

Слайд 20

Вывод чисел на экран printf ("%d", c); здесь вывести целое число

Вывод чисел на экран

printf ("%d", c);

здесь вывести целое число

это число взять

из ячейки c

printf ("Результат: %d", c);

можно добавить любой текст

printf ("%d+%d=%d", a, b, c );

формат вывода

список значений
элементы списка разделяются запятыми

printf ("%d+%d=%d", a, b, a+b );

арифметическое выражение

Слайд 21

Вывод целых чисел int x = 1234; printf ("%d", x); 1234

Вывод целых чисел

int x = 1234;
printf ("%d", x);

1234

Результат

минимальное число позиций

printf ("%9d",

x);

Результат

1234

5

4

всего 9 позиций

Слайд 22

Вывод вещественных чисел float x = 123.4567; printf ("%f", x); Результат

Вывод вещественных чисел

float x = 123.4567;
printf ("%f", x);

Результат

123.456700

минимальное число позиций, 6

цифр в дробной части

printf ("%9.3f", x);

123.456

всего 9 позиций, 3 цифры в дробной части

printf ("%e", x);

1.234560e+02

стандартный вид: 1,23456·102

printf ("%10.2e", x);

1.23e+02

всего 10 позиций, 2 цифры в дробной части мантиссы

Результат

Результат

Результат

Слайд 23

Особенность деления в Си main() { int a = 7; float

Особенность деления в Си

main()
{
int a = 7;
float x;
x = a /

4;
x = 4 / a;
x = float(a) / 4;
x = 1.*a / 4;
}

1

0

1.75

1.75

Слайд 24

Сокращенная запись операций в Си a = a + 1; инкремент

Сокращенная запись операций в Си

a = a + 1;

инкремент

a++;

a = a

+ b;

a += b;

a = a - 1;

декремент

a--;

a = a – b;

a -= b;

a = a * b;

a *= b;

a = a / b;

a /= b;

a = a % b;

a %= b;

Слайд 25

Что будет выведено? int a = 1, b = 3; printf("a+%d=a+b",

Что будет выведено?

int a = 1, b = 3;
printf("a+%d=a+b", b);

a+3=a+b

int a

= 1, b = 3;
printf("%d=F(%d)", a, b);

1=F(3)

int a = 1, b = 3;
printf("a=F(%d);", b);

a=F(3);

int a = 1, b = 3;
printf("%d>%d!", a+b, b);

4>3!

int a = 1, b = 3;
printf("F(%d)=X(%d)", b, a);

F(3)=X(1)

Слайд 26

Как записать оператор вывода? X(3)=1 int a = 1, b =

Как записать оператор
вывода?

X(3)=1

int a = 1, b = 3
printf("X(%d)=%d", b,

a);

4=1+3

int a = 1, b = 3
printf("%d=%d+%d",a+b,a,b);

f(1)>f(3)

int a = 1, b = 3
printf("f(%d)>f(%d)", a, b);

<1<>3>

int a = 1, b = 3
printf("<%d<>%d>", a, b);

1+3=?

int a = 1, b = 3
printf("%d+%d=?", a, b);

Слайд 27

Разбивание числа на цифры Например: введенное четырехзначное число нужно разбить на

Разбивание числа на цифры

Например: введенное четырехзначное число нужно разбить на отдельные

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

int х; /*Введенное число*/
int A1; /*Переменная первой цифры*/
int A2; /*второй*/
int A3; /*третьей*/
int A4; /*четвертой*/

Слайд 28

/*Тысячи*/ A1 = (х - (х % 1000)) / 1000; /*Сотни*/

/*Тысячи*/
A1 = (х - (х % 1000)) / 1000;
/*Сотни*/

A2 = ((х - (х % 100)) - (х - (х % 1000))) / 100;

Разбивание числа на цифры

printf(«Введите любое четырехзначное число: ");
scanf("%d", & х);
/*-----------------------------------------------------*/
/*Разбивание числа на отдельные цифры*/

/*Десятки*/
A3 = ((х - (х % 10)) - (х - (х % 100))) / 10;  
/*Единицы*/
A4 = х % 10;
/*----------------------------------------------------------*/

Слайд 29

Блок-схема линейного алгоритма блок «начало» блок описания переменных блок «процесс» блок

Блок-схема линейного
алгоритма

блок «начало»

блок описания переменных

блок «процесс»

блок «вывод»

блок «конец»

блок «ввод»

Написать программу

по алгоритму. Оформить интерфейс программы.
Программу сохранить как - Тест1
Слайд 30

ВЕТВЛЕНИЯ Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий,

ВЕТВЛЕНИЯ

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

разветвляющимися.

Блок-схема

Вариант 1.

Вариант 2.

Слайд 31

Операторы ветвления if ( условие ) { // что делать, если

Операторы ветвления

if ( условие )
{
// что делать, если

условие верно
}
else
{
// что делать, если условие неверно
}

Особенности:
вторая часть (else …) может отсутствовать (неполная форма)
если в блоке один оператор, можно убрать { }

Слайд 32

Операторы ветвления Вариант 1. Программа main() { int a, b, max;

Операторы ветвления

Вариант 1. Программа

main()
{
int a, b, max;
printf("Введите два целых

числа\n");
scanf("%d%d", &a, &b );
if (a > b) {
}
else {
}
printf("Наибольшее число %d", max);
}

max = a;

max = b;

полная форма условного оператора

Слайд 33

Операторы ветвления Что неправильно? if a > b { a =

Операторы ветвления

Что неправильно?

if a > b {
a = b;

}
else
b = a;

if ( a > b ) {
a = b;
else
b = a;

}

if ( a > b )
else
b = a;

a = b;

if ( a > b )
a = b;
c = 2*a;
else
b = a;

{

}

Слайд 34

Операторы ветвления Вариант 2. Программа main() { int a, b, max;


Операторы ветвления

Вариант 2. Программа

main()
{
int a, b, max;
printf("Введите два целых

числа\n");
scanf("%d%d", &a, &b );
max = a;
if (b > a)
printf("Наибольшее число %d", max);
}

max = b;

неполная форма условного оператора

Слайд 35

Операторы ветвления Задания 1: Ввести два числа и вывести их в

Операторы ветвления

Задания

1: Ввести два числа и вывести их в порядке возрастания.

Пример:
Введите два числа:
15 9
Ответ: 9 15
2: Ввести три числа и найти наибольшее из них.
Пример:
Введите три числа:
4 15 9
Наибольшее число 15

3: Ввести пять чисел и найти наибольшее из них.
Пример:
Введите пять чисел:
4 15 9 56 4
Наибольшее число 56

Слайд 36

Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет

Сложные условия

Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.

Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два условия одновременно.
Слайд 37

Вариант 1. Алгоритм Сложные условия

Вариант 1. Алгоритм

Сложные условия

Слайд 38

Вариант 1. Программа Сложные условия main() { int x; printf("Введите возраст\n");

Вариант 1. Программа

Сложные условия

main()
{
int x;
printf("Введите возраст\n");
scanf("%d", &x);
if (x

>= 25)
if (x <= 40)
printf("Подходит");
else printf("Не подходит");
else
printf("Не подходит");
}
Слайд 39

Вариант 2. Алгоритм Сложные условия ‘подходит’ 'не подходит'

Вариант 2. Алгоритм

Сложные условия

‘подходит’

'не подходит'

Слайд 40

Вариант 2. Программа main() { int x; printf("Введите возраст\n"); scanf("%d", &x);

Вариант 2. Программа

main()
{
int x;
printf("Введите возраст\n");
scanf("%d", &x);
if

( x >= 25 && x <= 40 )
printf("Подходит");
else printf("Не подходит");
}

Сложные условия

сложное условие

Слайд 41

Сложные условия Сложное условие – это условие, состоящее из нескольких простых

Сложные условия

Сложное условие – это условие, состоящее из нескольких простых условий

(отношений), связанных с помощью логических операций:

! – НЕ (not, отрицание, инверсия)
&& – И (and, логическое умножение, конъюнкция, одновременное выполнение условий)
|| – ИЛИ (or, логическое сложение, дизъюнкция,выполнение хотя бы одного из условий)

Простые условия (отношения)
< <= > >= == !=

равно

не равно

Слайд 42

Сложные условия Порядок выполнения сложных условий: выражения в скобках ! (НЕ,

Сложные условия

Порядок выполнения сложных условий:
выражения в скобках
! (НЕ, отрицание)
<, <=,

>, >=
==, !=
&& (И)
|| (ИЛИ)
Пример:
2 1 6 3 5 4
if ( !(a > b) || c != d && b == a)
{
...
}
Слайд 43

Сложные условия Примеры Истинно или ложно при a = 2; b

Сложные условия

Примеры

Истинно или ложно при a = 2; b = 3;

c = 4;
!(a > b)
a < b && b < c
!(a >= b) || c == d
a < c || b < c && b < a
a > b || !(b < c)
Для каких значений x истинны условия:
x < 6 && x < 10
x < 6 && x > 10
x > 6 && x < 10
x > 6 && x > 10
x < 6 || x < 10
x < 6 || x > 10
x > 6 || x < 10
x > 6 || x > 10

1

1

1

1

0

(-∞, 6)


(6, 10)

(10, ∞)

(-∞, 10)

(-∞, 6) ∪ (10,∞)

(-∞, ∞)

(6, ∞)

Слайд 44

Сложные условия Задания «1»: Ввести три числа и определить, верно ли,

Сложные условия

Задания

«1»: Ввести три числа и определить, верно ли, что они

вводились в порядке возрастания.
Пример:
Введите три числа: 4 5 17 Введите три числа: 45 3 20
да нет
«2»: Ввести номер месяца и вывести название времени года.
Пример:
Введите номер месяца: 4 Введите номер месяца: 15
весна такого номера нет
«3»: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год», «года» или «лет».
Пример:
Введите возраст: 24 Введите возраст: 57
Вам 24 года Вам 57 лет
Слайд 45

Циклы Цикл – это многократное выполнение одинаковых действий. цикл с известным

Циклы

Цикл – это многократное выполнение одинаковых действий.
цикл с известным числом шагов
цикл

с неизвестным числом шагов (цикл с условием)
Задача. Вывести на экран 5 раз слово «Привет».
Особенность: одинаковые действия выполняются 5 раз.

5 раз вывести слово привет используя printf

Слайд 46

Циклы N := N + 1

Циклы

N := N + 1

Слайд 47

начало конец да нет N != 5? N = 0; N

начало

конец

да

нет

N != 5?

N = 0;

N = N + 1;

еще не

сделали ни одного раза

еще не закончили

считаем очередной шаг

цикл

N++;

Слайд 48

Циклы с условием Цикл с предусловием While main() { int N;

Циклы с условием

Цикл с предусловием While

main()
{
int N;
N =

0;
while ( N != 5 )
{
printf("Привет!\n");
N ++;
}
}
Слайд 49

Что получим в результате работы программы на экране? main() { int

Что получим в результате работы программы на экране?

main()
{
int N;

N = 2;
while ( N != 5 )
{
printf("%d\n", N);
N += 2;
}
}

2
4
6
8
10
12
14
16
...

Циклы с условием

Слайд 50

main() { int N; N = 1; while ( N !=

main()
{
int N;
N = 1;
while ( N !=

5 )
{
printf("%d\n", N*N*N);
N = N + 1;
}
}

1
8
27
64
125

Что получим в результате работы программы на экране?

Циклы с условием

Слайд 51

Задания «1»: Ввести натуральное число вывести квадраты и кубы всех чисел

Задания

«1»: Ввести натуральное число вывести квадраты и кубы всех чисел от

1 до этого числа.
Пример: Введите натуральное число: 3
1: 1 1
2: 4 8
3: 9 27
«2»: Ввести два целых числа a и b (a ≤ b) и вывести квадраты все чисел от a до b.
Пример: Введите два числа: 4 5
4*4=16
5*5=25
«3»: Ввести два целых числа a и b (a ≤ b) и вывести сумму квадратов всех чисел от a до b.
Пример: Введите два числа: 4 10
Сумма квадратов 371

Циклы с условием

Слайд 52

Пример: Отпилить полено от бревна. Сколько раз надо сделать движения пилой?

Пример: Отпилить полено от бревна. Сколько раз надо сделать движения пилой?
Задача:

Ввести целое число (<2000000) и определить число цифр в нем.
Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик.
Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать «пока n != 0».

Циклы с условием

Цикл с неизвестным числом шагов