Similar presentations:
Простая вычислительная программа. Лекция 2. Три задания для самопроверки. Азы языка Си
1. Простая вычислительная программа
Алтайский государственный университетФакультет математики и ИТ
Кафедра информатики
Барнаул 2014
2. Лекция 2
2Лекция 2
План
Три задания для самопроверки
Азы языка Си
3. Три задания для самопроверки
Задание для самопроверки 1Задание для самопроверки 2
Задание для самопроверки 3
4. Задание для самопроверки 1
Три задания для самопроверкиЗадание для самопроверки 1
Что будет выведено, если пользователь введет 13?
#include <stdio.h>
void main(){
int number;
printf(“введи число: “);
scanf(“%d“, &number);
printf(“число равно “,3*number);
}
введи число: 13
число равно
4
5. Задание для самопроверки 2
Три задания для самопроверкиЗадание для самопроверки 2
Что будет выведено если пользователь введет 2?
#include <stdio.h>
void main(){
int number;
printf(“введи число: “);
scanf(“%d“, &number);
number = 2.2*number;
printf(“равно %d\n“,number);
}
введи число: 2
число равно 4
5
6. Задание для самопроверки 3
Три задания для самопроверкиЗадание для самопроверки 3
Что будет выведено если пользователь введет 2?
#include <stdio.h>
void main(){
float number;
printf(“введи число: “);
scanf(“%d“, &number);
number = 2.5*number;
printf(“равно %d\n“,number);
}
введи число: 2
число равно 0
6
7. Азы языка Си
Переменные и типыОперации и функции
Ввод/вывод
8.
8Быстрое введение в язык Си
Переменные
Переменная – это ячейка в памяти компьютера,
которая имеет имя и хранит некоторое значение.
• Значение переменной может меняться во время выполнения
программы.
• При записи в ячейку нового значения старое стирается.
x
Память:
Адрес:
10
y
127
a
20031
0x2c4b1 0x2c4b2 0x2c4b3 0x2c4b4 0x2c4b5 0x2c4b6 0x2c4b7
9.
9Быстрое введение в язык Си
Типы переменных
Тип переменной определяет
а) множество значений переменной;
б) допустимые операции над значениями этого типа.
Базовые типы переменных
int
целое число (4 байта)
0 1 -1 2 -2
float
вещественное число
(4 байта)
1.0 -1.2 3. .2
4.5e-7
-0.34E+12
double вещественное число
1e-100
-0.4E-120
двойной точности
(8 байт)
char
символ (1 байт)
‘A’ ‘Ж’ ‘7’ ‘\n’ ‘\x20’ 32
10.
10Быстрое введение в язык Си
Имена переменных
! Согласно ANSI C
Могут включать
различаются
• латинские буквы (A-Z, a-z) только первые 32
• знак подчеркивания _
символа в имени
• цифры 0-9
!
Имя не может начинаться с цифры!
НЕ могут включать
• русские буквы
• пробелы
• скобки, знаки +, =, !, ? и др.
Какие имена правильные?
ABcd A+B 3Tools Вася
GR455 (TuTu) _ABBA o^o
‘HeHe’
_0
____
11.
11Быстрое введение в язык Си
Объявление переменных
выделить область
Объявить переменную = определить
ее имя,памяти
тип,
(с физической
точки (с
зрения)
начальное
значение
логической точки зрения)
void main()
целая переменная a
{
вещественные
переменные
b и cпеременные
целые
intцелая
a; и дробная
части отделяются
float точкой
b, c;
Tu104, Il86 и Yak42
Il86 = 23
вещественные
int Tu104, Il86=23, Yak42; переменные x, y и z
x = 4,56
float x=4.56,
y, z;
·
char c, c2='A', m;
}
!
символьные
переменные c, c2 и m
c2 = 'A'
Если начальное значение не задано, в
переменной находится «мусор»!
12.
12Быстрое введение в язык Си
Оператор присваивания
Оператор – это команда языка
программирования высокого уровня.
Оператор присваивания служит для изменения
значения переменной.
Пример
a = 5;
x = a + 20;
a
5
?
5
x
25
?
y = (a + x) * (x – a);
5+20
y
600
?
30*20
13.
13Быстрое введение в язык Си
Оператор присваивания
Общая структура:
куда записать
что
имя переменной = выражение;
Арифметическое выражение может включать
• константы (постоянные)
• имена переменных
• знаки арифметических операций:
+ *
/
%
умножение
деление
• вызовы функций
• круглые скобки ( )
остаток от
деления
14.
Быстрое введение в язык СиКакие операторы неправильны?
void main()
{
имя переменной
int a, b;
должно быть слева
float x, y;
от знака =
a = 5;
целая и дробная
часть отделяются
10 = x;
точкой
y = 7,8;
при записи
b = 2.5;
вещественного значения
в целую переменную
x = 2*(a + y);
дробная часть будет
a = b + x;
отброшена
}
14
15.
15Быстрое введение в язык Си
Особенность деления в Си
! При делении целых чисел остаток отбрасывается!
void main(){
int a = 7;
float x;
1
0
x = a / 4;
x = 4 / a;
1.75
x = float(a) / 4;
x = 1.*a / 4;
}
1.75
16.
16Быстрое введение в язык Си
Сокращенная запись операций в Си
полная запись
a = a + 1;
инкремент
a = a + b;
a = a - 1;
сокращенная запись
a++;
a += b;
декремент
a--;
a = a – b;
a -= b;
a = a * b;
a *= b;
a = a / b;
a /= b;
a = a % b;
a %= b;
17.
17Быстрое введение в язык Си
Ручной «прогон» программы
void main()
{
int a, b;
a = 5;
b = a + 2;
a = (a + 2)*(b – 3);
b = a / 5;
a = a % b;
a++;
b = (a + 14) % 7;
}
a
b
?
?
5
7
28
5
3
4
4
18.
18Быстрое введение в язык Си
Порядок выполнения операций
• вычисление выражений в скобках
• умножение, деление, % слева направо
• сложение и вычитание слева направо
2 3 5 4 1
7 8 6 9
z = (5*a*c+3*(c-d))/a*(b-c)/ b;
a 2 5c 2 d (a b)
x
(c d )( d 2a)
5ac 3(c d )
z
(b c)
ab
2 6 3 4 7 5 1
12 8 11 10 9
x =(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));
19. Арифметические функции <math.h>
19Быстрое введение в язык Си
Арифметические функции <math.h>
заголовок
описание
double pow(double x, double y) xy
double fabs(double x)
модуль x
double sqrt(double x)
корень квадратный x
double exp(double x)
ex
double log(double x)
ln x
double sin(double x)
sin(x)
double cos(double x)
cos(x)
double floor(double x)
целая часть x
20.
21Быстрое введение в язык Си
Площадь шестиугольника
Задача. Вычислить площадь правильного
шестиугольника со стороной a
Решение:
#include <stdio.h>
#include <math.h>
модуль
математических
функций
void main()
{
float a, s;
printf("Введите длину стороны:\n");
scanf ("%f", &a);
выражение с функцией
s = 3*sqrt(3.0)*a/2;
вывод результата
printf("%f", s);
типа float
}
21.
22Быстрое введение в язык Си
Ввод чисел с клавиатуры
scanf –
форматный ввод
формат ввода
адреса ячеек, куда
записать введенные
числа
scanf ("%d%d", &a, &b);
Формат – символьная строка, которая показывает,
какие числа вводятся (выводятся).
%d – целое число
&a – адрес
переменной a
%f – вещественное число
%c – 1 символ
7652
%s – символьная строка
ждать ввода с клавиатуры двух
целых чисел (через пробел или
Enter), первое из них записать в
переменную a, второе – в b
12
a – значение
переменной a
22.
23Быстрое введение в язык Си
Что неправильно?
&a
int a, b;
%d%d
scanf ("%d", a);
scanf ("%d", &a, &b);
&a, &b
scanf ("%d%d", &a);
убрать пробел
scanf ("%d %d", &a, &b);
scanf ("%f%f", &a, &b);
%d%d
23.
24Быстрое введение в язык Си
Вывод чисел на экран
здесь вывести
целое число
это число взять
из ячейки c
printf ("%d", c);
printf ("Результат: %d", c);
printf ("%d+%d=%d", a, b, c );
формат вывода
список значений
printf ("%d+%d=%d", a, b, a+b );
арифметическое выражение
24.
25Быстрое введение в язык Си
Вывод целых чисел
int x = 1234;
printf ("%d", x);
1234
или "%i"
минимальное
число позиций
или "%9i"
printf ("%9d", x);
1234
5
4
всего 9 позиций
25.
26Быстрое введение в язык Си
Вывод вещественных чисел
float x = 123.4567;
printf ("%f", x);
123.456700
printf ("%9.3f", x);
123.456
минимальное число
позиций, 6 цифр в
дробной части
всего 9 позиций,
3 цифры в дробной
части
printf ("%e", x);
1.234560e+02
printf ("%10.2e", x);
1.23e+02
стандартный вид:
1,23456·102
всего 10 позиций,
2 цифры в дробной
части мантиссы
26.
27Быстрое введение в язык Си
Сложение двух чисел решение
#include <stdio.h>
void main(){
int a, b, c;
printf("Введите два целых числа\n");
scanf("%d%d", &a, &b);
c = a + b;
printf("%d+%d=%d", a, b, c);
}
это выводит
компьютер
Протокол работы:
Введите два целых числа
25 30
это вводит пользователь
25+30=55
27.
28Быстрое введение в язык Си
Блок-схема линейного алгоритма
начало
блок «начало»
ввод a, b
блок «ввод»
c = a + b;
блок «процесс»
вывод c
конец
блок «вывод»
блок «конец»
28.
29Вопросы и ответы
Вопросы?
Три задания для
самопроверки
Азы языка Си
Н.Копейкин Можно я провожу?