2.5 Analise o seguinte programa e aponte onde está o erro.
#define Default_Y 2 void main() { const int num = 10; int y = Default_Y; const int *ptr = 0; ptr = νm; *ptr = *ptr + y; }
3 Entrada/Saída Console
As rotinas de entrada/saída do console se encontram nas bibliotecas "stdio.h" e "conio.h" e, por isso, estas bibliotecas devem ser incluídas nos programas aplicativos através da diretiva
'include': #include <stdio.h>
Algumas das funções de entrada e saída para a console mais utilizadas são apresentadas a seguir:
A função printf()é uma das funções de E/S (entrada e saída) que podem ser usadas em C
Ela não faz parte da definição de C mas todos os sistemas têm uma versão de printf() implementada
Ela permite a saída formatada na tela Já vimos duas aplicações diferentes da função printf():
3.1 Printf() printf("Bom Dia!!!!"); printf("Este é o número dois: %d", num);
A função printf() pode ter um ou vários argumentos No primeiro exemplo nós colocamos
um único argumento: "Bom Dia !!!!" Entretanto, no segundo colocamos dois: "Este é o número
dois: %d" que está à esquerda e o valor 2 à direita da vírgula que separa os argumentos Sintaxe de
printf(): printf("string-formatação", < lista de parâmetros >);
formatação que indicam o formato em que os argumentos devem ser impressos No nosso segundo
formato decimal na posição da string onde aparece o %d Cada argumento deve ser separado por
A string de formatação pode conter caracteres que serão exibidos na tela e códigos de exemplo, o código de formatação %d solicita a printf() para imprimir o segundo argumento em uma vírgula.
Além do código de formatação decimal (%d), printf() aceita vários outros O próximo
20 exemplo mostra o uso do código %s para imprimir uma cadeia de caracteres:
#include <stdio.h> int main(int argc, char* argv[]) { printf("%s esta a %d milhoes de milhas \n do sol.", "Venus", 67); }
A saída será: Venus está a 67 milhoes de milhas do sol.
de caracteres estranho: \n O \n é um código especial que informa a printf() que o restante da
impressão deve ser feito em uma nova linha A combinação de caracteres \n representa, na
Aqui, além do código de formatação, a expressão de controle de printf() contém um conjunto verdade, um único caractere em C, chamado de nova-linha (equivalente ao pressionamento da tecla 'Enter' em um editor de texto).
outros caracteres Por exemplo, \n representa a mudança de linha.
Os caracteres que não podem ser obtidos diretamente do teclado para dentro do programa (como a mudança de linha) são escritos em C, como a combinação do sinal \ (barra invertida) com
A string de formatação define a forma como os parâmetros serão apresentados e tem os seguintes campos:
"%[Flags] [largura] [.precisão] [FNlh] < tipo > [\Escape Sequence]" onde:
Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação largura = número máximo de caracteres a mostrar; precisão = número de casas após a vírgula a mostrar F = em ponteiros, apresentar como "Far" => base : offset (x : x) N = em ponteiros, apresentar como "Near" => offset h = apresentar como "short" l = apresentar como "long"
A seguir são mostrados alguns exemplos da formatação apresentada acima:
#include <stdio.h> int main(int argc, char* argv[ ]) { float x; double y = -203.4572345; int a, b; a = b = 12; x = 3.141523; printf("Bom dia"); printf("\n\t Bom dia\n"); /*pula linha após escrever bom dia*/ printf("O valor de x é %7.3f\n", x); printf("Os valores de i, j e y são: %d %d %lf \n", a, b, y); }
parâmetro da função printf() mas sim que deseja-se imprimir realmente este caractere O exemplo
Obs: Caso você queira imprimir na tela os caracteres especiais '\' ou '%', você deve escrevêlos na função printf() de forma duplicada, o que indicará ao compilador que este não se trata de um abaixo apresenta este caso:
#include <stdio.h> void main() { int reajuste = 10; printf("O reajuste foi de %d%%. \n", reajuste); } a saída será:
O reajuste foi de 10%.
3.2 Cprintf()
que forem ajustados anteriormente, bem como ajustes de côr de caracteres Utilize esta função para
Basicamente cprintf() é igual a printf(), mas usa as coordenadas atuais do cursor e da janela escrever na tela em posições pré-definidas.
A função scanf() é outra das funções de E/S implementadas em todos os compiladores C
Ela é o complemento de printf() e nos permite ler dados formatados da entrada padrão (teclado) A
função scanf() suporta a entrada via teclado Um espaço em branco ou um CR/LF (tecla "Enter")
definem o fim da leitura Observe que isto torna inconveniente o uso de scanf() para ler strings
3.3 Scanf() compostas de várias palavras (por exemplo, o nome completo de uma pessoa).
strings Sua sintaxe é similar à de printf(), isto é, uma expressão de controle seguida por uma lista
Para realizar este tipo de tarefa, veremos outra função mais adequada na parte referente à de argumentos separados por vírgula.
scanf("string de definição das variáveis", <endereço das variáveis>);
A lista de argumentos deve consistir nos endereço das variáveis O endereço das variáveis
A string de definição pode conter códigos de formatação, precedidos por um sinal % ou ainda o caractere * colocado após o % que avisa à função que deve ser lido um valor do tipo indicado pela especificação, mas não deve ser atribuído a nenhuma variável (não deve ter parâmetros na lista de argumentos para estas especificações). pode ser obtido através do operador '&' apresentado na secção sobre ponteiros. Exemplo:
#include <stdio.h> void main() { float x; printf ("Entre com o valor de x : "); scanf ("%f",&x); /*lê o valor do tipo float e armazena em x*/ }
deveram ser lidas da mesma forma que definia estas com printf() Desta forma, os parâmetros de
O código de formatação de scanf() é igual ao código de formatação de printf() Por isso,
veja as tabelas de formatação de printf() para conhecer os parâmetros de scanf() Outro exemplo de
Esta função funciona como o inverso da função printf(), ou seja, você define as variáveis que scanf() são em geral os mesmos que os parâmetros de printf(), no exemplo acima observa-se esta questão. scanf():
#include <stdio.h> main() { float anos, dias; printf("Digite a sua idade em anos: "); scanf("%f", &anos); dias = anos*365; printf("Sua idade em dias e %.0f.\n", dias); }
3.4 Getch(), Getche() e Getchar()
pressionar [enter] depois da sua entrada para que scanf() termine a leitura Neste caso, é melhor
usar getch(), getche() ou getchar() A função getchar() aguarda a digitação de um caractere e
Em algumas situações, a função scanf() não se adapta perfeitamente pois você precisa quando o usuário apertar a tecla [enter], esta função adquire o caractere e retorna com o seu
resultado Getchar() imprime na tela o caractere digitado. A função getch() lê um único caractere
do teclado sem ecoá-lo na tela, ou seja, sem imprimir o seu valor na tela A função getche() tem a
mesma operação básica, mas com eco Ambas funções não requerem que o usuário digite [enter]
para finalizar a sua execução Veja exemplo abaixo, junto à função putch().
A função putch() apresenta um único caractere na tela, recebendo-o como parâmetro A
função putchar() executa a mesma operação, com caracteres Exemplo:
3.5 Putch() ou Putchar()
#include <stdio.h> #include <conio.h> void main() { char c1, c2; c1 = getch(); /* lê caractere c1 mas não mostra na tela */ c2 = getche(); /* lê caractere c2, escrevendo-o na tela */ printf("\nO primeiro valor digitado foi: "); putch(c1); /* escreve valor de c1 na tela */ printf("\nO segundo valor digitado foi: "); putchar(c2); }