primeiro semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime meu...

23
ogica de Programa¸c˜ ao Aula 03 - Comandos de Entrada e Sa´ ıda Prof. Fabio Augusto Faria Instituto de Ciˆ encia e Tecnologia – Unifesp Primeiro Semestre de 2018

Upload: others

Post on 25-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Logica de ProgramacaoAula 03 - Comandos de Entrada e Saıda

Prof. Fabio Augusto Faria

Instituto de Ciencia e Tecnologia – Unifesp

Primeiro Semestre de 2018

Page 2: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Roteiro

1 Saıda de dados

2 Entrada de dados

Prof. Fabio Augusto Faria LP — Aula 03

Page 3: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Um parentese: comentarios

O codigo fonte pode conter comentarios direcionadosunicamente ao programador. Estes comentarios devem estardelimitados pelos sımbolos /* e */, e sao ignorados pelocompilador.

Exemplo

#include <stdio.h>

/* Este e o meu primeiro programa. */

main() {

printf("Hello, world!\n");

}

Comentarios sao uteis para descrever o algoritmo usado e paraexplicitar suposicoes nao obvias sobre a implementacao.

Prof. Fabio Augusto Faria LP — Aula 03

Page 4: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Escrevendo o conteudo de uma variavel na tela

Podemos imprimir, alem de texto puro, o conteudo de umavariavel utilizando o comando printf. Para isso, utilizamosum sımbolo no texto para representar que aquele trecho deveser substituıdo por uma variavel e, no final, passamos umalista de variaveis ou constantes, separadas por vırgula.

Exemplo

printf("A variavel %s contem o valor %d","a", a);

imprime A variavel a contem o valor 10

Nesse caso, %s deve ser substituıdo por uma variavel ouconstante do tipo string enquanto %d deve ser substituıdopor uma variavel ou constante do tipo inteiro.

Prof. Fabio Augusto Faria LP — Aula 03

Page 5: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos inteiros

%d — Escreve um inteiro na tela sem formatacao.

Exemplo

printf ("%d", 10);

imprime 10

Prof. Fabio Augusto Faria LP — Aula 03

Page 6: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos inteiros

%< numero >d — Escreve um inteiro na tela, preenchendo comespacos a esquerda para que ele ocupe pelo menos< numero > casas na tela.

Exemplo

printf ("%4d", 10);

imprime < espaco >< espaco >10

Prof. Fabio Augusto Faria LP — Aula 03

Page 7: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos inteiros

%0< numero >d — Escreve um inteiro na tela, preenchendo comzeros a esquerda para que ele ocupe pelo menoscomprimento < numero >.

Exemplo

printf ("%04d", 10);

imprime 0010

Prof. Fabio Augusto Faria LP — Aula 03

Page 8: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos inteiros

%< numero1 >.0< numero2 >d — Escreve um inteiro na tela,preenchendo com espacos a esquerda para que eleocupe pelo menos < numero1 > casas na tela e comzeros para que ele possua pelo menos comprimento< numero2 >.

Exemplo

printf ("%6.04d", 10);

imprime < espaco >< espaco >0010

Prof. Fabio Augusto Faria LP — Aula 03

Page 9: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos inteiros

A letra d pode ser substituida pelas letras u e l, ou as duas,quando desejamos escrever variaveis do tipo unsigned ou long,respectivamente.

Exemplo

printf ("%d", 4000000000);

escreve -294967296 na tela, enquanto queprintf ("%u", 4000000000);

escreve 4000000000.

Prof. Fabio Augusto Faria LP — Aula 03

Page 10: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos ponto flutuante

%f — Escreve um ponto flutuante na tela, semformatacao

Exemplo

printf ("%f", 10.0);

imprime 10.000000

Prof. Fabio Augusto Faria LP — Aula 03

Page 11: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos ponto flutuante

%e — Escreve um ponto flutuante na tela, em notacaocientıfica

Exemplo

printf ("%e", 10.02545);

imprime 1.002545e+01

Prof. Fabio Augusto Faria LP — Aula 03

Page 12: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos ponto flutuante

%< tamanho >.< decimais >f — Escreve um ponto flutuante natela, com tamanho < tamanho > e < decimais >casas decimais. Lembre-se que o ponto, utilizadopara separar a parte inteira da decimal, tambemconta no tamanho.

Exemplo

printf ("%6.2f", 10.0);

imprime < espaco >10.00

Prof. Fabio Augusto Faria LP — Aula 03

Page 13: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos ponto flutuante

A letra f pode ser substituida pelas letras lf, para escrever umdouble ao inves de um float

Exemplo

printf ("%6.2lf", 10.0);

imprime < espaco >10.00

Prof. Fabio Augusto Faria LP — Aula 03

Page 14: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formato caracter

%c — Escreve uma letra.

Exemplo

printf ("%c", ’A’);

imprime a

Note que printf ("%c", 65) tambem imprime a letra A.

Prof. Fabio Augusto Faria LP — Aula 03

Page 15: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formato string

%s — Escreve uma string

Exemplo

printf ("%s", "Meu primeiro programa");

imprime Meu primeiro programa

Prof. Fabio Augusto Faria LP — Aula 03

Page 16: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

A funcao scanf

Realiza a leitura de um texto a partir do teclado.

Parametros:

Uma string, indicando os tipos das variaveis que serao lidas e oformato dessa leitura.Uma lista de variaveis.

Aguarda que o usuario digite um valor e atribui o valordigitado a variavel.

Prof. Fabio Augusto Faria LP — Aula 03

Page 17: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

A funcao scanf

O programa abaixo e composto de quatro passos:

1 Cria uma variavel n;

2 Escreve na tela Digite um numero:

3 Le o valor do numero digitado

4 Imprime o valor do numero digitado

#include <stdio.h>

main(){

int n;

printf("Digite um numero: ");

scanf("%d",&n);

printf("O valor digitado foi %d\n",n);

}

Prof. Fabio Augusto Faria LP — Aula 03

Page 18: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

A funcao scanf

Leitura de varias variaveis:

#include <stdio.h>

main(){

int m, n, o;

printf("Digite tres numeros: ");

scanf("%d %d %d",&m, &n, &o);

printf("O valores digitados foram\

%d %d %d\n", m, n, o);

}

Prof. Fabio Augusto Faria LP — Aula 03

Page 19: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

O operador “address-of” & de C

Toda variavel tem um endereco de memoria associado a ela. Esseendereco e o local onde essa variavel e armazenada no sistema. Ooperador & retorna o endereco de uma determinada variavel

Exemplo

printf ("%d", &valor);

Imprime o endereco da variavel valor.

Prof. Fabio Augusto Faria LP — Aula 03

Page 20: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

O operador “address-of” & de C

E necessario usar o operador & no comando scanf, pois esseoperador indica que o valor digitado deve ser colocado noendereco referente a uma variavel.

Esquecer de colocar o & comercial e um erro muitocomum que pode ocasionar erros de execucao.

Prof. Fabio Augusto Faria LP — Aula 03

Page 21: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

O operador “address-of” & de C

O programa abaixo imprime o valor e o endereco da variavel:

#include <stdio.h>

int main(void){

int n = 8;

printf("valor %d, endereco 0x%x\n",n,&n);

}

Prof. Fabio Augusto Faria LP — Aula 03

Page 22: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos de leitura de variavel

Os formatos de leitura sao muito semelhantes aos formatos deescrita utilizados pelo printf. A tabela a seguir mostra algunsformatos possıveis de leitura

Codigo Funcao

%c Le um unico caracter%s Le uma serie de caracteres

Prof. Fabio Augusto Faria LP — Aula 03

Page 23: Primeiro Semestre de 2018 - ic.unicamp.brffaria/lp2s2018/class03/lp-aula03.pdf · imprime Meu primeiro programa Prof. Fabio Augusto Faria LP | Aula 03. Sa da de dados Entrada de dados

Saıda de dadosEntrada de dados

Formatos de leitura de variavel

Codigo Funcao

%d Le um numero decimal%u Le um decimal sem sinal%l Le um inteiro longo%f Le um numero em ponto flutuante%lf Le um double

Prof. Fabio Augusto Faria LP — Aula 03