Similar presentations:
Лекция_4(ввод-вывод)_30.09.24
1. Команда присваивания Команды ввода-вывода
2. Блоки, используемые при составлении блок-схем
- Элементарное действие3. Команда присваивания
• Команда присваивания служит для вычислениявыражения и записи результата в память
компьютера.
• Общий вид записи команды
Имяпеременной = выражение;
• Знак = читается как «присвоить». Конец любой
команды на языке Си фиксируется точкой с запятой.
c = a + b;
запишет
/* вычислит сумму a и b и
результат в c */
4. Примеры использования команды присваивания
• команда присваивания, которая позволяетвычислить расстояние между двумя точками на
плоскости с координатами (х1,у1)и (х2, у2).
d=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
• последовательность команд присваивания,
обеспечивающих обмен значениями переменных х
и у в памяти компьютера.
• с=х; // значение х копируется в с
х=у; // значение у копируется в х
у=с; //содержимое с записывается в у
5. Странные команды присваивания
• i = i + 1;бессмысленно с точки зрения математики.
С точки зрения информатики эта команда
служит для увеличения значения
переменной i на единицу.
Буквально это означает: взять старое
значение переменной i, прибавить к нему
единицу и записать результат в ту же
переменную i.
6. команды быстрого увеличения и уменьшения на единицу
• (инкремент)i ++;
++ i;
или
равносильно команде присваивания
i = i + 1;
• быстрого уменьшения на единицу (декремент)
i - -; или
- - i;
что равносильно команде присваивания
i = i - 1;
7. Постановка задачи
вычисление площадитреугольника по
формуле:
#include <stdio.h>
#include<math.h>
# using namespace std;
int _tmain()
{ /* объявление переменных, используемых в
программе */
float a, b, c, p, S;
scanf(“%f%f%f”,&a,&b,&c);/*ввод исходных данных*/
S p( p a)( p b)( p c)
/* вычисление полупериметра */
Где p полупериметр;
а,b,с - стороны
треугольника.
Исходные данные:
а = 1; b = 2; с = 0,5.
p = (a + b + c) / 2;
/* вычисление площади треугольника */
S = sqrt(p * (p - a) * (p -b) * (p - c));
printf(“площадь треугольника= %f\n“,S);
return 0;
}
8.
9. Команды ввода-вывода
• Команды ввода-вывода данных служат дляобмена информацией между внутренней
памятью компьютера и внешними
устройствами (монитор, клавиатура,
принтер, накопители на жестких и гибких
магнитных дисках и др.).
10. Команды ввода исходных данных с клавиатуры
• Изображение в блоксхеме• Команда ввода
обеспечивает чтение
данных с клавиатуры,
преобразование их из
внешнего
представления во
внутреннее и
присваивание значений
переменным,
указанным в ее списке.
11. Потоковый ввод данных
cin >> d;
такая команда в программе будет запрашивать ввод с клавиатуры
значения для переменной d.
...........
cin >> x1 >> x2 >> x3;
эта строка программы представляет запрос на ввод с клавиатуры
трех числовых значений.
Первое из них будет присвоено переменной x1,
второе значение предназначается для переменной x2,
третье значение - для переменной x3.
12. Потоковый ввод данных
Для обеспечения потокового ввода к программеследует подключить заголовочный файл
iostream:
#include <iostream>
using namespace std;
int _tmain()
{
int i;
float f;
double d;
..........
cin >> i >> f >> d;
……..}
13. Команды вывода данных на экран
• В блок-схеме• Команда вывода
преобразует значения
переменных и
вычисленные значения
выражений, указанных в
списке, из внутреннего
представления во
внешнее и выводит эти
значения на экран.
14. Потоковый вывод
организация потокового вывода информации настандартное устройство вывода экран (stdout)
осуществляется командой cout:
cout<<d; //вывод на экран значения переменной d
или
cout<<“d=“<<d; /*вывод на экран символов d= и
значения переменной d */
15. Потоковый вывод
Для организации потокового вывода информации на стандартноеустройство вывода экран (stdout) необходимо подключить
заголовочный файл iostream:
#include <iostream>
using namespace std;
int _tmain()
{
int i;
float f;
double d;
..........
cout << i+1 <<“
“<< f <<“
“<< f*d;
• Переход в начало следующей строки здесь осуществляется
путем включения в список вывода признака конца строки endl,
например:
cout << i+1 << endl << f <<“ “<< f*d;
16. Форматирование данных при использовании потокового вывода
• Форматирование данных при выводе впотоковых классах выполняется тремя
способами: с помощью флагов,
манипуляторов и форматирующих методов.
• Использование флагов для управления
оператором ввода-вывода не совсем
удобно, более удобно использовать
манипуляторы форматирования.
17. Потоковый вывод
Манипуляторы встраиваются непосредственно воператоры ввода-вывода.
Для их использования необходимо подключить
библиотеку iomanip с помощью директивы include:
#include "iomanip"
Рассмотрим некоторые из них:
• setw(n) - Определяет ширину поля вывода в n символов
• setprecision(n) - Определяет количество цифр (n-1) в
дробной части числа
• fixed – Вывод значений в формате с фиксированной
точкой
• left - Выравнивание по левой границе
• right - Выравнивание по правой границе
• dec, oct, hex - Вывод величин в разных системах
счисления
18. Потоковый вывод
#include "iostream"#include "iomanip"
#include "cmath"
using namespace std;
int main( )
{
float x,y;
for(x=-3.0;x<=3;x=x+0.3)//цикл изменения переменной х
{
y=sin(x)*exp(x);
cout<<setw(5)<<setprecision(2)<<fixed<<x;
cout<<" y="<<setw(6)<<y<<endl;
}
return 0;
}
19. Потоковый вывод
20. Форматный ввод
Общий вид записи команды форматного вводаscanf(“ список форматов“ ,cnиcoк адресов переменных);
форматы ввода
адреса переменных
21. Форматы ввода
%d- ввод целого числа ( для переменной
типа
int )
%f
- ввод вещественного числа ( для
переменной типа float)
%lf
- ввод длинного вещественного
числа(для переменной типа
double
)
%с
- ввод одного символа ( для переменной
типа char
)
22. адреса ячеек памяти, в которые надо записать введенные значения.
int a; - объявление переменной a• А так
&a - адрес памяти переменной a
23.
Для обеспечения форматного ввода к программе следуетподключить заголовочный файл
stdio.h:
Например:
#include <stdio.h>
int _tmain()
{ int m;
float k;
double h;
..........
scanf("%i %f %lf", &m, &k, &h);
24. Обязательные требования
1. Количество форматов в строке должнобыть равно количеству адресов
переменных в списке;
2. тип переменных должен совпадать с
указанным форматом ввода;
3.Порядок следования форматов должен
соответствовать порядку следования
адресов переменных.
25. Обязательные требования
Контрпримерыa и b - целые переменные, int a,b;
то
следующие вызовы функций ошибочны
scanf ( "%d%d", &a );
неясно, куда записывать второе введенное
число, нет второго адреса;
scanf ( "%d%d", &a, &b, &c );
значение для переменной c не будет введено,
так как для нее не задан формат;
scanf ( "%f%f", &a, &b );
нельзя вводить значения для целых
переменных по вещественному формату.
26. пример
пример
Пусть в задаче определены следующие исходные данные:
а = 4;
х = 3,8; у =1,2-104;
к=5;
т = 74
#include<stdio.h>
main()
{
int a, k, m;
float x, y;
// Оператор ввода:
scanf(“%d%f%f%d%d”, &a, &х, &у, &k, &m);
…………………..
}
• Вызывает
образом:
чтение
данных с клавиатуры,
4 3.8
список форматов
1.2Е4
набранных
следующим
5 74 [Enter]
соответствует описанию переменных в программе:
27. Форматный вывод
• Форматный вывод результатов настандартное устройство вывода (stdout),
которым по умолчанию является экран дисплея,
осуществляется с помощью функции printf.
• Общий вид записи команды
printf (“ список форматов”, cnиcoк имен
переменных и выражений);
28. Форматы вывода
• %d - вывод значения переменной целоготипа (int)
• %f - вывод значения переменной
вещественного типа(float)
• %ld - вывод значения переменной типа
вещественного длинного (double)
• %с - вывод значения переменной типа
одного символа (char)
• %s - вывод символьной строки
• \n - переход в начало новой строки на
экране (аналог endl в команде cout)
29. пример
printf(“Выходные данные:\n”);printf(“K=%d \n
y=%f\n”, К,
7.0/10);
выводят на экран результаты в следующем
виде:
Выходные данные:
К=13
у=0.7
30. Управление выводом данных
В команде вывода printf формой вывода числа можно управлять . Для этого в формате после знака% можно писать число, которое будет обозначать количество значащих цифр в выводимом
числе. Если выводимое число дробное , необходимо писать два числа, отделяя их друг от друга
точкой. Второе число будет указывать на количество цифр в дробной части выводимого числа.
%m.nf
m-число, количество знакомест на экране
n- кол-во знаков после десятичной точки
Например, при записи оператора
printf( “K=%3d у=%5.2f”, 8+3, 7./10 );
результаты отображаются на экране в следующем виде:
К= 11 у = 0.70
31. примеры
#include <stdio.h>int _tmain()
{
int i, а, с, b;
float F;
double D;
printf(“ %d %f %lf", i+1, F, F*D);
……………….
printf ( "Результат: %d + %d = %d \n", a, b, c );
32. Постановка задачи
вычисление площадитреугольника по формуле:
#include <stdafx.h>
#include<math.h>
#include <iostream>
int _tmain()
{ setlocale (0,”RUS”);
/* объявление переменных, используемых в программе */
float a, b, c, p, S;
/*Вывод текстового заголовка-приглашения*/
printf(“Введите исходные данные ”);
S p( p a)( p b)( p c)// оператор ввода
Где p - полупериметр;
а,b,с - стороны треугольника.
Исходные данные:
а = 1; b = 2; с = 0,5.
scanf(“%f %f %f”,&a, &b,&с);
/* вычисление полупериметра */
p = (a + b + c) / 2;
/* вычисление площади треугольника */
S = sqrt(p * (p - a) * (p -b) * (p - c));
//Вывод на экран результата с комментарием
printf(“Площадь треугольника
S=%5.2f”, S);
return 0;
}
33.
При выполнении команды scanf программаостанавливается и переходит в режим ожидания
набора исходных данных с клавиатуры. В этот
момент надо набрать на клавиатуре, например:
1 2 0.5 [Enter]
После нажатия клавиши [Enter] программа
продолжит выполнение следующих команд и
выведет результат на экран монитора
в
следующем виде:
Площадь треугольника S = 3.87