CCO 016 / COM 110 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá
AULA 04 Linguagem de programação C Saída de dados Imprima printf
Histórico da Linguagem C 1972 primeira versão de C criada por Dennis Ritchie nos laboratórios Bell. 1960 surgimento da linguagem ALGOL 60, que gerou a linguagem C. 1967 surgiu CPL (Combined Programming Language) nas universidades de Londres e Cambridge com o objetivo, segundo a equipe do projeto, de "trazer ALGOL à terra", ou "manter contato com a realidade de um computador real". Ainda em 1967, em Cambridge, Martin Richards criou o BCPL (Basic CPL), uma simplificação do CPL, tentando manter apenas as "boas coisas do CPL".
Histórico da Linguagem C 1970 Ken Thompson, chefe da equipe que projetou o UNIX para o PDP11 do Bell Labs, implementou um compilador para uma versão mais reduzida do CPL. Batizou a linguagem de B. Tanto BCPL quanto B mostravam-se muito limitadas, prestando-se apenas para certas classes de problemas. Por muitos anos (aproximadamente 10) a sintaxe (formato) tida como padrão da linguagem C foi aquela fornecida com o UNIX versão 5.0 do Bell Labs. Em 1985, ANSI (American National Standards Institute) estabeleceu um padrão oficial de C o chamado "C ANSI".
Características da Linguagem C Portalibilade Modularidade Recursos de baixo nível Geração de código eficiente Simplicidade Facilidade de uso Pode ser usada para os mais variados propósitos Indicada para escrever compiladores, editores de textos, bancos de dados, etc.
Etapas da Geração de um Programa em C Escrita do módulo fonte C através de um editor de texto: vi, emacs, pico, gedit, bloco de notas, etc. Os programas devem sempre ter a extensão.c Pré-processamento (fonte expandido) Compilador (gera objeto) Lincagem (gera executável)
#include <stdio.h> int main ( ) { // saida do programa Programa inicial printf ( Fiz meu primeiro programa em C\n ); } return 0;
Detalhes a serem observados includes Comentários Inicio e fim do programa ( chaves ) Fim das instruções ( ponto e virgula )
Inteiro int Flutuante float Caracter char Cadeia char [ nn ] Definição de variáveis
#include <stdio.h> int main ( ) { // definicao das variaveis int x, soma_valores; Tipo inteiro } return 0;
Tipo flutuante #include <stdio.h> int main () { // definicao das variaveis float x, soma_valores; } return 0;
Tipo caracter #include <stdio.h> void main ( ) { // definicao das variaveis char x, primeira_letra; } return 0;
Tipo cadeia #include <stdio.h> int main ( ) { // definicao das variaveis char x[10], nome_pessoa[30]; } return 0;
Atribuição de valores à variáveis Algoritmo variável valor Linguagem C variável = valor;
Exemplo inteiro #include <stdio.h> int main ( ) { // definicao das variaveis int x; // atribuicao dos dados x = 569; } return 0;
#include <stdio.h> int main ( ) { // definicao das variaveis float x; // atribuicao dos dados x = 569.87; Exemplo flutuante } return 0;
#include <stdio.h> int main ( ) { // definicao das variaveis char x; // atribuicao dos dados x = g ; Exemplo caracter } return 0;
Exemplo cadeia Diferentemente dos outros tipos, o tipo cadeia não pode ter atribuição direta; Esta atribuição somente poderá ser realizada através de funções da biblioteca da linguagem C; Todas as vezes que esta biblioteca é usada, a seguinte declaração é necessária: #include <string.h>
Funções de cadeia A seguir algumas das funções que poderão ser usadas com o tipo cadeia: strcpy ( a, b ) copia a cadeia b na cadeia a strcmp ( a, b ) compara a cadeia a com a cadeia b ( se forem iguais o strcat ( a, b ) resultado é igual a zero ) concatena a cadeia b com a cadeia a guardando o resultado na cadeia a
Exemplo 1 #include <stdio.h> #include <string.h> int main ( ) { // definicao das variaveis char x[10], y[5], t[20]; // atribuicao dos dados strcpy ( x, Maria ); strcpy ( y, sol ); } strcpy ( t, x ); strcat ( y, x ); return 0;
Saída de dados Saída de dados compreende a operação de externar uma informação, ou seja, mostrar ao usuário o conteúdo de uma ou mais variáveis num programa. Os dispositivos disponíveis para a execução desta tarefa são: o monitor de vídeo, a impressora, um arquivo.
Em linguagem algorítmica tem-se: imprima ( informação ) Esta informação pode ser o conteúdo de uma variável, um texto, um caractere ou um valor numérico.
Exemplo 7 inteiro soma_valor, media_idades soma_valor 45 media_idades 92 - mostrando o resultado numa única linha de saída: imprima ( soma_valor, media_idades )
Saída visualizada O computador mostrará no monitor de vídeo as seguintes informações: 45 92
Ou ainda, mostrando cada valor de variável em linhas separadas de saída: imprima ( soma_valor ) imprima ( media_idades )
Saída visualizada 45 92
Ou ainda, identificando os valores mostrados: imprima ( soma do valor:, soma_valor ) imprima ( media das idades =, media_idades )
Saída visualizada soma do valor: 45 media das idades = 92
Formato dos dados Tanto para saída quanto para a entrada de dados, é necessário definir-se a forma como os dados serão manuseados; Isto é feito utilizando-se a declaração de formato dos dados; Em linguagem C esta formatação deve estar inclusa nas declarações de entrada e de saída dos dados;
Códigos de formatos Para cada variável do programa é necessário que se defina o formato correspondente ao tipo definido para ela; Este formato das variáveis é definido com os códigos de formato
Tipo inteiro: %[n]d n significa o tamanho do campo, ou seja, quantos dígitos tem o numero incluindo o sinal ( positivo ou negativo ) o sinal [ ] significa que a informação é opcional Tipo flutuante: %[n.t]f t significa o tamanho do campo decimal n significa o tamanho do campo, ou seja, quantos dígitos tem o numero incluindo o ponto decimal, o campo t e o sinal do numero Tipo caracter: %c Tipo cadeia : %s
Tabela de códigos de formato (%) Código Formato %c Um caracter (char) %d Um número inteiro decimal (int) %i O mesmo que %d Número em notação científica com o %e "e"minúsculo Número em notação científica com o %E "e"maiúsculo %f Ponto flutuante decimal Escolhe automaticamente o melhor entre %f %g e %e Escolhe automaticamente o melhor entre %f %G e %E
Tabela de códigos de formato (%) Código Formato %o Número octal %s String %u Decimal "unsigned" (sem sinal) %x Hexadecimal com letras minúsculas %X Hexadecimal com letras maiúsculas %% Imprime um % %p Ponteiro
Controle da impressão Todas as linhas de saída necessitam do controle da impressão Isto é feito utilizando-se o caractere especial: \n Observar que isto só é válido para a impressão de dados e não para a entrada.
Este caractere pode ser colocado: No inicio do comando de saída; No meio No fim ; A colocação do caractere de controle de saída na instrução de impressão indica que a informação será impressa e em seguida o computador fica disponível para imprimir nova informação na linha seguinte à que acabou de ser impressa;
A não colocação do caractere de controle de impressão na instrução de saída indica que a próxima informação será impressa na mesma linha da impressão anterior; Numa instrução de saída, pode-se colocar quantos \n forem necessários;
Quando colocado no inicio da instrução de saída, cada \n indica uma linha em branco, antes da impressão da informação; Quando colocado no fim da instrução de saída, cada \n indica uma linha em branco, após a impressão da informação; Quando colocado no meio da instrução de saída, [q] \n indica ( q 1) linhas em branco, entre as informações impressas;
Saída de Dados A saída de dados que aprendemos era: imprimi() Para a linguagem C usaremos a printf(). Essa é uma função da linguagem e para utilizá-la precisamos da biblioteca stdio.h.
Saída de dados 1 Saída simples algoritmo: imprima ( x ) em linguagem C: printf ( %d\n, x ); //x x sendo inteiro
Visualização da saída Suponha que na variável inteira x esteja armazenado o valor 569 A saída terá a seguinte aparência: 569
Programa em C #include <stdio.h> int main() { int x; //declaração da variável x x = 569; //atribuição do valor na variável printf ( %d, x); //Impressão do dado return 0; }
Programa em C #include <stdio.h> int main() { int x; x = 569; printf ( %d\n, x); return 0; } #include <stdio.h> int main() { int x; x = 569; printf ( x = %d\n, x); return 0; } Qual a diferença dos 3 printf's?
Saída de dados 2 algoritmo: x 569 imprima ( x =, x ) em linguagem C: x = 569; printf ( x = %5d\n, x );
Visualização da saída A saída terá a seguinte aparência: ( a linha tracejada não aparece na saída, é só para guiá-la ) = = = = = = = x = 5 6 9
Saída de dados 3 #include <stdio.h> int main ( ) { // definicao das variaveis int x, soma_valores; // atribuicao dos dados x = 569; soma_valores = -5409; } // saida dos dados printf ( valor de x\n ); printf ( x = %5d\n, x ); printf ( valor da soma dos valores\n ); printf ( soma dos valores = %10d\n, soma_valores ); return 0;
Visualização da saída A saída terá a seguinte aparência: valor de x x = 569 ( 2 espaços em branco antes do numero ) valor da soma dos valores soma dos valores = -5409 ( 5 espaços em branco antes do numero )
// saida dos dados Outra alternativa printf ( valor de x\n\n ); printf ( x = %5d\n, x ); printf ( \n\n\nvalor da soma dos valores\n ); printf ( \n\nsoma dos valores = %10d, soma_valores );
Visualização da saída Os valores numéricos nos inícios das linhas não fazem parte da saída, são apenas para guiar o leitor: 1) valor de x 2) 3) x = 569 4) 5) 6) 7) valor da soma dos valores 8) 9) 10) soma dos valores = -5409
// saida dos dados Outra alternativa printf ( valor de x\n\nx = %5d\n, x ); printf ( \n\n\nvalor da soma dos valores\n\n\nsoma dos valores = %10d, soma_valores );
Tipo Flutuante Saída simples algoritmo: x 569.26 imprima ( x ) em linguagem C: x = 569.26; printf ( %f\n, x );
Visualização da saída A saída terá a seguinte aparência: 569.260000
Outra alternativa printf ( valor de x = %10.4f\n, x );
Visualização da saída A saída terá a seguinte aparência: = = = = = = = = = = ( linha de referencia ) valor de x = 5 6 9. 2 6 0 0
Tipo caracter Saída simples algoritmo: x g imprima ( x ) em linguagem C: x = g ; printf ( %c\n, x );
Visualização da saída A saída terá a seguinte aparência: g
Outra alternativa // definicao das variaveis char letra_1, letra_2; // atribuicao dos valores letra_1 = g ; letra_2 = h ; // saida dos resultados printf ( letra 1 = %c\n, letra_1 ); printf ( letra 2 = %c\n, letra_2 );
Visualização da saída A saída terá a seguinte aparência: letra 1 = g letra 2 = h
Outra alternativa A mesma saída poderia ser obtida através da seguinte declaração: printf ( letra 1 = %c\n letra 2 = %c\n, letra_1, letra_2 );
Tipo cadeia Saída simples algoritmo: x Unifei imprima ( x ) em linguagem C: strcpy ( x, Unifei ); printf ( %s\n, x );
Visualização da saída A saída terá a seguinte aparência: Unifei
Outra alternativa #include <stdio.h> #include <string.h> int main ( ) { // definicao das variaveis char nome_1[20], nome_2[5], nome_3[30]; // atribuicao dos dados strcpy ( nome_1, Universidade ); strcpy ( nome_2, EFEI ); strcpy ( nome_3, nome_1 ); strcat ( nome_3, nome_2 );
// saida dos dados printf ( nome 1 = %s\n, nome_1 ); printf ( nome 2 = %s\n, nome_2 ); printf ( nome 3 = %s\n, nome_3 ); } return 0;
Visualização da saída A saída terá a seguinte aparência: nome 1 = Universidade nome 2 = EFEI nome 3 = UniversidadeEFEI
Constantes de barra invertida Constante Significado \n Nova Linha \ Aspas \ Apóstofro \0 Nulo (0 decimal) \\ Barra Invertida \t Tabulação Horizontal (tab) \a Alerta (beep) \b Retorno do Cursor
Estrutura básica de um programa em C Observando o programa acima podemos perceber que existem duas formas de comenta-lo. O primeiro é utilizando duas barras // que comenta todo o código contido naquela linha e não há necessidade de fecha-la. O segundo é usando os caracteres /* e */ que comentam todas as instruções localizadas entre eles. Quando comentamos uma instrução estamos na realidade impedindo que elas sejam compiladas.
Treinamento Faço um programa em C que imprima tenha o cabeçario. ----------------------------------------------------------------- Nome: (seu nome) Matricula: (sua matricula) Curso: (seu curso) -----------------------------------------------------------------
Treinamento Faço um programa em C que imprima ------------------------------------------------------------------ ------------------------------------------------------------------
Treinamento Faço um programa em C que imprima ------------------------------------------------------------------ x = 35 x = 35 x = 35 ------------------------------------------------------------------
Treinamento Faço um programa em C que imprima: 35 35 35 035 0035
Estudo Visite os sites: https://www.codingunit.com/printf-format-specifiers-form at-conversions-and-formatted-output https://www.tutorialspoint.com/c_standard_library/c_funct ion_printf.htm http://www.cplusplus.com/reference/cstdio/printf/ http://homepages.dcc.ufmg.br/~rodolfo/aedsi-2-10/printf_s canf/printfscanf.html http://www.w3resource.com/c-programming-exercises/basi c-declarations-and-expressions/c-programming-basic-exe rcises-3.php #
What happens in the program? #include <stdio.h> int main ( ) { // Saída } printf( \troberto\n\\\/\ ); return 0;