Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


c-04 linguagem C, Notas de estudo de Engenharia Telemática

Logica de Programação e Algoritmos

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 26/11/2010

samuel-santos-22
samuel-santos-22 🇧🇷

4.6

(41)

262 documentos

1 / 6

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E
TECNOLOGIA DA PARAÍBA – CAMPUS CAMPINA GRANDE
CURSO: CURSO SUPERIOR DE TECNOLOGIA EM TELEMÁTICA
PERÍODO: P1 TURMA: N
DISCIPLINA: ALGORITMOS E LINGUAGEM DE PROGRAMAÇÃO
PROFESSOR: CÉSAR ROCHA VASCONCELOS SEMESTRE LETIVO
2009.2
Módulo 04 – ENTRADA E SAÍDA DE DADOS EM C
1. PICOS ABORDADOS
1. E/S usando a biblioteca padrão de C.
2. Uso das funções getchar, getch, getche, putchar, puts, printf e gets.
A esta altura do curso, vo deve ter percebido que C é uma linguagem orientada a funções. Em
função disso, C possui uma vasta biblioteca de rotinas que permite que o programador as utilize
diretamente em seus programas. Na biblioteca padrão de C, podemos, por exemplo, encontrar não
somente funções matemáticas, do tipo raiz quadrada, seno, cosseno, etc., mas, também, funções
para a manipulação de cadeias de caracteres, funções de entrada e saída, entre muitas outras. Nesta
nota de aula, entretanto, iremos tratar das funções básicas para entrada e saída disponibilizadas.
Em exemplos de código feitos em encontros anteriores, vo com certeza percebeu uma exigência
da linguagem: toda vez que precisávamos invocar uma função dentro de um programa em C, era
necessário, antes, incluir o protótipo desta função no código que fosse utili-la. Isso acontece
porque, na verdade, o compilador realiza uma pré-checagem visando descobrir não somente se a
função existe, mas se ela também está disponível para uso dentro de algum módulo do seu projeto.
Os detalhes e regras gerais relacionados a esta checagem serão tratados minuciosamente na nota de
aula sobre funções. Por ora, antes de começar a estudar esta nota de aula de hoje, vo deve
lembrar-se de que é preciso escrever o protótipo da função dentro do código que deseja realizar uma
chamada à ela.
2. LENDO E ESCREVENDO CARACTERES:
Inicialmente, vamos começar tratando das funções da biblioteca padrão que realizam a entrada e
saída de caracteres em C. Para se ler caracteres do teclado usando C, deve-se trabalhar com as
seguintes funções: getchar, getch e getche. Já para se emitir um caractere na saída padrão,
deve-se usar a função putchar. Devemos, aqui, seguir a regra geral comentada no parágrafo
anterior: antes de começar a usar estas funções, teremos de informar ao compilador onde se
encontram os seus protótipos (estes estão definidos na biblioteca conio.h).
#include <conio.h>
2.1 Diferenças entre as funções de leitura de caracteres:
No que diz respeito à leitura de caracteres, vale lembrar que, apesar de serem funções relativamente
simples, existem diferenças marcantes entre elas no tocante à interatividade com o programa e a
exibição do caractere digitado. Em poucas palavras, podemos resumir as diferenças entre cada
uma destas rotinas da seguinte forma:
· getchar: lê um único caractere da entrada padrão. A função aguarda até que seja digitado
um new-line (Enter). Assim, ela sempre é uma boa opção para programas interativos.
· getch: lê um único caractere da entrada padrão. O caractere é lido imediatamente, ou seja,
ao contrário de getchar, getch não aguarda até que seja digitado nenhum new-line (Enter).
Portanto, é uma função mais apropriada para programas interativos.
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe c-04 linguagem C e outras Notas de estudo em PDF para Engenharia Telemática, somente na Docsity!

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E

TECNOLOGIA DA PARAÍBA – CAMPUS CAMPINA GRANDE

CURSO: CURSO SUPERIOR DE TECNOLOGIA EM TELEMÁTICA

PERÍODO: P1 TURMA: N

DISCIPLINA: ALGORITMOS E LINGUAGEM DE PROGRAMAÇÃO

PROFESSOR: CÉSAR ROCHA VASCONCELOS SEMESTRE LETIVO 2009.

Módulo 04 – ENTRADA E SAÍDA DE DADOS EM C

1. TÓPICOS ABORDADOS

1. E/S usando a biblioteca padrão de C.

2. Uso das funções getchar , getch , getche , putchar , puts, printf e gets.

A esta altura do curso, você deve ter percebido que C é uma linguagem orientada a funções. Em

função disso, C possui uma vasta biblioteca de rotinas que permite que o programador as utilize

diretamente em seus programas. Na biblioteca padrão de C, podemos, por exemplo, encontrar não

somente funções matemáticas, do tipo raiz quadrada, seno, cosseno, etc., mas, também, funções

para a manipulação de cadeias de caracteres, funções de entrada e saída, entre muitas outras. Nesta

nota de aula, entretanto, iremos tratar das funções básicas para entrada e saída disponibilizadas.

Em exemplos de código feitos em encontros anteriores, você com certeza percebeu uma exigência

da linguagem: toda vez que precisávamos invocar uma função dentro de um programa em C, era

necessário, antes, incluir o protótipo desta função no código que fosse utilizá-la. Isso acontece

porque, na verdade, o compilador realiza uma pré-checagem visando descobrir não somente se a

função existe, mas se ela também está disponível para uso dentro de algum módulo do seu projeto.

Os detalhes e regras gerais relacionados a esta checagem serão tratados minuciosamente na nota de

aula sobre funções. Por ora, antes de começar a estudar esta nota de aula de hoje, você só deve

lembrar-se de que é preciso escrever o protótipo da função dentro do código que deseja realizar uma

chamada à ela.

2. LENDO E ESCREVENDO CARACTERES:

Inicialmente, vamos começar tratando das funções da biblioteca padrão que realizam a entrada e

saída de caracteres em C. Para se ler caracteres do teclado usando C, deve-se trabalhar com as

seguintes funções: getchar , getch e getche. Já para se emitir um caractere na saída padrão ,

deve-se usar a função putchar. Devemos, aqui, seguir a regra geral comentada no parágrafo

anterior: antes de começar a usar estas funções, teremos de informar ao compilador onde se

encontram os seus protótipos (estes estão definidos na biblioteca conio.h).

#include <conio.h>

2.1 Diferenças entre as funções de leitura de caracteres:

No que diz respeito à leitura de caracteres, vale lembrar que, apesar de serem funções relativamente

simples, existem diferenças marcantes entre elas no tocante à interatividade com o programa e a

exibição do caractere digitado. Em poucas palavras, podemos resumir as diferenças entre cada

uma destas rotinas da seguinte forma:

∑ getchar : lê um único caractere da entrada padrão. A função aguarda até que seja digitado

um new-line (Enter). Assim, ela sempre é uma boa opção para programas interativos.

∑ getch: lê um único caractere da entrada padrão. O caractere é lido imediatamente, ou seja,

ao contrário de getchar , getch não aguarda até que seja digitado nenhum new-line (Enter).

Portanto, é uma função mais apropriada para programas interativos.

∑ getche: semelhante ao getch , mas com a diferença que o caractere é ecoado na tela.

Exemplos:

#include <stdio.h> #include <conio.h>

void main(void){ char ch; puts( "digite um caractere e pressione enter: ” ); ch = getchar(); // lendo um caractere. Espera por retorno de carro. puts(“voce digitou o caractere: ” ); putchar( ch ); // imprimindo um caractere. }

#include <stdio.h> #include <conio.h>

void main(void){ char ch; puts( "digite um caractere: ” ); ch = getch(); // lendo um caractere de imediato, sem ecoa-lo na tela. puts(“\nvoce digitou o caractere: ” ); putchar( ch ); // imprimindo um caractere. }

#include <stdio.h> #include <conio.h>

void main(void){ char ch; do { puts(“\nDigite qualquer caractere (ou digite. para sair): ” ); ch = getche();// lendo um caractere de imediato, ecoando-o na tela. if( ch == ‘.’ ) puts( ”\nSaindo do programa...” ); }while( ch != ‘.’ ); }

3. LENDO E ESCREVENDO STRINGS:

Para se ler e escrever Strings usando C, deve-se trabalhar com as seguintes funções, repectivamente:

gets e puts.

∑ gets : recebe uma String da entrada padrão. Caracteres são lidos até que um new-line (ASCII

10) seja lido. Este caractere é substituído por ‘\0’.

∑ puts: escreve uma String na saída padrão e dá um salto de linha. Possui melhor performance

do que o printf face que só irá imprimir string’s.

çç^ UsUsoo ddaa ffuunnççããoo ggeettcchh(())

éé^ UsUsoo ddaa ffuunnççããoo ggeettcchhee(())

åå UsUsoo ddaa ffuunnççããoo ggeettcchhaarr(())

A partir daí, pode-se fazer chamadas à função printf , adequadamente. Conforme dito anteriormente,

o primeiro parâmetro é geralmente uma cadeia de caracteres (em geral, delimitada com aspas) que

especifica o formato de saída dos argumentos (constantes, variáveis e expressões) listados em

seqüência. Para cada argumento que se queira imprimir, deve existir um especificador de formato

correspondente nesta cadeia de caracteres inicial.

Exemplo:

printf(“O Valor de a = %d e b = %d”, a, b); // assumindo a e b inteiros

Note que os especificadores de formato variam com o tipo do valor e a precisão na qual queremos

que os argumentos sejam impressos. Estes especificadores são precedidos pelo caractere % e podem

ser, entre outros:

%c - caracter %d - inteiro %f - ponto flutuante (double ou float) %o - octal %x - hexadecimal %s - string (cadeia de caracteres)

Exemplos:

char *nome; puts(“Digite o seu nome:”); gets(nome); printf(“O nome digitado foi: %s”, nome); --- outro exemplo --- char sexo = ‘M’; float peso = 85.3; int idade = 18; printf(“Idade= %d Peso= %f Sexo= %c”, idade, peso, sexo);

De acordo com [1], além dos especificadores de formato, podemos incluir textos no formato (estes

serão mapeados diretamente para a saída). Assim, a saída é formada pela cadeia de caracteres do

formato onde os especificadores são substituídos pelos valores correspondentes.

\n - nova linha

\t - tabulação (tab)

\b - retrocesso

\” - aspas

\ - barra

%% - caractere %

Podemos indicar, também no formato, a largura mínima do campo, o preenchimento de casas

decimais, alinhamento à esquerda bem como o tipo de preenchimento de campos. Estas

informações devem vir entre o sinal de % e o especificador de formato propriamente dito.

Exemplos:

printf(“%.2f \n”, 3456.78); // 3456.

printf(“%10.3f \n”, 3456.78); // 3456.

printf(“%-10.3f \n”, 3456.78); // 3456.

printf(“%010.3f \n”, 3456.78); // 003456.

printf(“%3.1f \n”, 3456.78); // 3456.

--- outro exemplo ---

printf(“%d \n”, 33); // 33

printf(“%04d \n”, 33); // 0033

printf(“%4d \n”, 33); // 33

printf(“%-4d \n”, 33); // 33

--- outro exemplo ---

:%s: :hello, world:

:%10s: :hello, world:

:%.10s: :hello, wor:

:%-10s: :hello, world:

:%.15s: :hello, world:

:%-15s: :hello, world :

:%15.10s: :hello, wor :

:%-15.10s: :hello, wor :

Graficamente:

Figura 1: Exemplos de largura mínima dos campos e/ou precisão (Figura obtida de [1])

5. ENTRADA DE DADOS COM SCANF

A função scanf é utilizada para realizar entrada de dados de uso geral. Esta função é bastante

parecida como printf (porém, no sentido inverso; ela lê números, caracteres, strings, etc.) Seu

protótipo se encontra na biblioteca <stdio.h>.

%c - especifica um caracter

%d - especifica um número inteiro

%f - especifica um número ponto flutuante

%o - especifica um número octal

%x - especifica um número hexadecimal

%s - especifica uma string (cadeia de caracteres)

%[...] especifica, entre os colchetes, todos os caracteres que

serão aceitos. Se o primeiro caractere for “^”

tem-se o efeito inverso (negação)

Exemplos:

char *nome;

int idade;

printf(“Digite o seu nome:”);

scanf( “ %40[^\n]”, nome); // scanset: limite de 40 e todos menos o enter

printf(“Digite sua idade:”);

scanf( “%d”, &idade);

Cuidado: ao contrário de gets, que espera um retorno de carro (Enter) para terminar o processo de

leitura, o scanf espera até que seja digitado um caractere “branco” (espaço, enter ou tabulação). Para

evitar resultados indesejados, use um scanset (como mostrado acima).