cco 016 / com 110 - rcosta62br.unifei.edu.br · bancos de dados, etc. ... escrita do módulo fonte...

74
CCO 016 / COM 110 Fundamentos de Fundamentos de Programação Programação Universidade Federal de Itajubá Prof. Roberto Affonso da Costa Junior

Upload: doanh

Post on 08-Feb-2019

212 views

Category:

Documents


0 download

TRANSCRIPT

CCO 016 / COM 110Fundamentos de Fundamentos de

ProgramaçãoProgramação

Universidade Federal de Itajubá

Prof. Roberto Affonso da Costa Junior

AULA 04AULA 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".

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".

Histórico da Linguagem C

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 Etapas da Geração de um Programa em CPrograma 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)

Programa inicialPrograma inicial#include <stdio.h>

int main ( ) {

// saida do programa

printf ( “ Fiz meu primeiro programa em C\n “ );

return 0;}

Detalhes a serem observadosDetalhes a serem observados

● includes

● Comentários

● Inicio e fim do programa ( chaves )

● Fim das instruções ( ponto e virgula )

Definição de variáveisDefinição de variáveis● Inteiro

int ou long long int

● Flutuantefloat ou double

● Caracterchar

● Cadeiachar [ nn ]

Tipo inteiroTipo inteiro

#include <stdio.h>

int main ( ) {

// definicao das variaveis

int x, soma_valores; long long int a, soma; return 0;}

Tipo flutuanteTipo flutuante

#include <stdio.h>

int main () {

// definicao das variaveis

float x, soma_valores; double y, media; return 0;}

Tipo caracterTipo caracter

#include <stdio.h>

void main ( ) {

// definicao das variaveis

char x, primeira_letra;

return 0;}

Tipo cadeiaTipo cadeia

#include <stdio.h>

int main ( ) {

// definicao das variaveis

char x[10], nome_pessoa[30];

return 0;}

Atribuição de valores à variáveisAtribuição de valores à variáveis

● Algoritmo

variável ← valor

● Linguagem C

variável = valor;

Exemplo inteiroExemplo inteiro#include <stdio.h>

int main ( ){

// definicao das variaveisint x;

// atribuicao dos dados

x = 569;

return 0;}

Exemplo flutuanteExemplo flutuante#include <stdio.h>

int main ( ){

// definicao das variaveisfloat x;

// atribuicao dos dados

x = 569.87;

return 0;}

Exemplo caracterExemplo caracter#include <stdio.h>

int main ( ){

// definicao das variaveischar x;

// atribuicao dos dados

x = ‘g’;

return 0;}

Exemplo cadeiaExemplo 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 cadeiaFunçõ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

resultado é igual a zero )

Exemplo cadeiaExemplo cadeia

#include <stdio.h>#include <string.h>int main ( ){ // definicao das variaveis

char x[10], y[5];// atribuicao dos dados

strcpy ( x, “Maria” );strcpy ( y, “sol” );

return 0;}

Saída de dadosSaí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 7Exemplo 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 visualizadaSaí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 visualizadaSaída visualizada

45

92

• Ou ainda, identificando os valores mostrados:

imprima ( “soma do valor: “, soma_valor )

imprima ( “media das idades = “, media_idades )

Saída visualizadaSaída visualizada

soma do valor: 45

media das idades = 92

● 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 na Linguagem C

Formato dos dadosFormato 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 formatosCó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 ou %[n]lldn 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 ou %[n.t]lft 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 Função do Formato

%d ou %i Um número inteiro decimal (int)

% lld Um número inteiro decimal (long long int)

%u Um decimal sem sinal (unsigned)

%f Um número real de simples precisão (float)

%lf Um número real de dupla precisão (double)

%e ou %E Um número em notação científica com o "e" minúsculo ou "E" maiúsculo

%g ou %G Escolhe automaticamente o melhor entre %f e %e ou %E

%c Um carácter (char)

%s Uma string

Tabela de códigos de formato (%)

Código Função do Formato

%o Um número inteiro octal

%x ou %X Um número inteiro hexadecimal com as letras minusculas ou maiúsculas

%p Um ponteiro (endereço de memória)

%% O carácter %

Mais informação, visite o site:http://www.cplusplus.com/reference/cstdio/printf/

ou https://www.geeksforgeeks.org/how-to-print-using-printf/

Controle da impressãoControle 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;

39

PrintfPrintf

• Controle da Impressão:– Todas as linhas de saída necessitam do controle da

impressão, conforme a tabela:Constante Significado

\n Nova linha\" Coloca aspas no texto de saída\' Coloca apóstrofo no texto de saída\0 Nulo (0 decimal)\\ Barra invertida\t Tabulação horizontal <tab>\b Retorno do curso

Saída de dados 1Saída de dados 1● Saída simples

algoritmo:

imprima ( x )

em linguagem C:

printf ( “%d\n”, x ); //x sendo inteirox sendo inteiro

Visualização da saídaVisualizaçã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

Saída de dados 2Saída de dados 2

algoritmo:

x ← 569

imprima ( “x = “, x )

em linguagem C:

x = 569;

printf ( “x = %5d\n“, x );

Visualização da saídaVisualizaçã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

Programa em CPrograma 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 CPrograma 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?Qual a diferença dos 3 printf's?

Saída de dados 3Saída de dados 3

#include <stdio.h>

int main ( ) {

// definicao das variaveisint x, soma_valores;

// atribuicao dos dadosx = 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ídaVisualização da saída

A saída terá a seguinte aparência:

valor de xx = 569 ( 2 espaços em branco antes do numero )

valor da soma dos valoressoma dos valores = -5409 ( 5 espaços em branco antes do numero )

Outra alternativaOutra alternativa

// saida dos dados

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 );

Outra alternativaOutra alternativa// saida dos dados

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 );

Visualização da saídaVisualização da saídaOs 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

Tipo FlutuanteTipo Flutuante

● Saída simples

algoritmo:x ← 569.26imprima ( x )

em linguagem C:x = 569.26;printf ( “%f\n”, x );

Visualização da saídaVisualização da saída

● A saída terá a seguinte aparência:

569.260000

Outra alternativaOutra alternativa

printf ( “ valor de x = %10.4f\n”, x );

Visualização da saídaVisualizaçã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 caracterTipo caracter

● Saída simples

algoritmo:x ← ‘g’imprima ( x )

em linguagem C:x = ‘g’;printf ( “%c\n”, x );

Visualização da saídaVisualização da saída

● A saída terá a seguinte aparência:

g

Outra alternativaOutra alternativa

// definicao das variaveischar letra_1, letra_2;

// atribuicao dos valoresletra_1 = ‘g’ ;letra_2 = ‘h’ ;

// saida dos resultadosprintf ( “ letra 1 = %c\n”, letra_1 );printf ( “ letra 2 = %c\n”, letra_2 );

Visualização da saídaVisualização da saída

● A saída terá a seguinte aparência:

letra 1 = g

letra 2 = h

Outra alternativaOutra 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 cadeiaTipo cadeia

● Saída simples

algoritmo:x ← “Unifei” imprima ( x )

em linguagem C:strcpy ( x, “Unifei” );printf ( “%s\n”, x );

Visualização da saídaVisualização da saída

● A saída terá a seguinte aparência:

Unifei

Outra alternativaOutra 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ídaVisualização da saída

● A saída terá a seguinte aparência:

nome 1 = Universidade

nome 2 = EFEI

nome 3 = UniversidadeEFEI

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.

66

TreinamentoTreinamento

• https://www.urionlinejudge.com.br/judge/en/login

– URI 2747 a 2756

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

What happens in the program?What happens in the program?

#include <stdio.h>

int main ( )

{// Saída

printf( “\tRoberto\n\\\/\” “);

return 0;

}

What happens in the program?What happens in the program?

#include <stdio.h>

int main ( )

{// Saída

printf( “\tRoberto\n\\\/\” “);

return 0;

}

74

ExercíciosExercícios

• https://www.urionlinejudge.com.br/judge/en/login

– URI 2747 a 2756