a linguagem c
Post on 30-Jun-2015
1.205 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
Prof.Hugo Sampaio Fialhohugosf@uol.com.br
2007
CENTRO UNIVERSITÁRIO DO MARANHÃO – UNICEUMACURSO DE SISTEMAS DE INFORMAÇÃO
A Linguagem
© Hugo Sampaio - 2
Introdução
Quando o homem necessita do auxilio do
computador para executar algumas tarefas.
Por que programar ?
Conjunto de instruções de uma determinada
linguagem através das quais, um computador
executa algumas tarefas.
O Que é um programa ?
© Hugo Sampaio - 3
Introdução
Uma linguagem consiste de um conjunto de
palavras reservadas e regras de sintaxe que
possibilita criar programas de computadores.
Este conjunto de palavras possui regras de
estruturação lógica e sintática própria.
O Que é uma linguagem ?
© Hugo Sampaio - 4
Exemplos de Códigos: BASIC
Pseudo-códigoleia(num)
para n de 1
até 10 passo 1 faça
tabnum*n imprima(tab)
fim-para;
BASIC10 input num
20 for n=1 to 10
step 1
30 let tab=num*n
40 print chr$(tab)
50 next n
© Hugo Sampaio - 5
Exemplos de Códigos: FORTRAN
Pseudo-códigoleia(num)
para n de 1
até 10 passo 1 faça
tabnum*n imprima(tab)
fim-para;
FORTRAN read (num)
do 10 n=1:10
tab=num*n
write(tab)
10 continue
© Hugo Sampaio - 6
Exemplos de Códigos: Assembly
Pseudo-códigoleia(num)
para n de 1
até 10 passo 1 faça
tabnum*n imprima(tab)
fim-para;
Assembly (Intel 8088)
MOV CX,0IN AX,PORTAMOV DX,AXLABEL:INC CXMOV AX,DXMUL CXOUT AX, PORTACMP CX,10JNE LABEL
© Hugo Sampaio - 7
Exemplos de Códigos: C
Pseudo-códigoleia(num)
para n de 1
até 10 passo 1 faça
tabnum*n imprima(tab)
fim-para;
Cscanf(&num);
for(n=1;n<=10;n++){
tab=num*n;
printf(”\n %d”, tab);
};
© Hugo Sampaio - 8
Tipos de Linguagens: Baixo Nível
São linguagens com foco na maquina, ou seja, utiliza instruções detalhadas que controla os circuitos internos do computador. Usualmente são genericamente chamadas de linguagens de maquina, Assembly ou de linguagem de montagem.
© Hugo Sampaio - 9
Tipos de Linguagens: Baixo Nível
Vantagens: Maior velocidade de processamento e ocupam menor espaço na memória.
Desvantagens: Pouca portabilidade, ou seja, o código é gerado para um tipo de processador não serve para outro.
© Hugo Sampaio - 10
Tipos de Linguagens: Alto Nível
São linguagens voltadas para que haja uma maior interação entre o homem e a máquina.
Necessitam de compiladores ou interpretadores para gerar as instruções do microprocessador.
© Hugo Sampaio - 11
Tipos de Linguagens: Alto Nível
Vantagens: São compiladas ou interpretadas, têm maior portabilidade podendo ser executados em várias plataformas com pouquíssimas modificações.
Desvantagens: São mais lentas e ocupam
mais memória.
© Hugo Sampaio - 12
Histórico
C foi originalmente desenvolvida por Dennis
Ritchie e K. Thompson nos Laboratórios Bell nos
anos 70.Derivadas de duas linguagens anteriores
chamadas BCPL e B.
Inicialmente para máquinas com o sistema
operacional UNIX. Tornou-se uma das mais importantes e
populares nos últimos dias. Foi projetada para o desenvolvimento de
programas estruturados e modulares.
© Hugo Sampaio - 13
Histórico
Nos anos seguintes, a popularidade da linguagem C aumentou consideravelmente, aumentando também o surgimento de ferramentas de desenvolvimento.
Inicialmente, muitas implementações do C não traduziam fielmente a definição original, o que gerou alguns problemas de incompatibilidade
A portabilidade proposta pela definição original ficou bastante comprometida.
© Hugo Sampaio - 14
Introdução
Buscando uma padronização na definição da
linguagem C, a American National Standard
Institute (ANSI), desenvolveu um padrão hoje
bastante utilizado no mundo da linguagem C,
chamado de C padrão ANSI ou C ANSI.
Quase todas as ferramentas de desenvolvimento
da linguagem C atuais, seguem este padrão.
O Padrão ANSI
© Hugo Sampaio - 15
Compiladores x Interpretadores
A única linguagem que o computador entende é a linguagem de máquina. Programas escritos em um linguagem de alto nível, devem ser traduzidos para a linguagem de máquina.
Os Programas que fazem esta tradução, classificam em:
- INTERPRETADORES
- COMPILADORES
© Hugo Sampaio - 16
Compiladores x Interpretadores
Os INTERPRETADORES, traduzem o código fonte
em linguagem de máquina através da
interpretação de cada instrução feita a medida que
o software é executado. Necessitam de um
componente interpretador presente na máquina.
Os COMPILADORES, por sua vez, traduzem o código
fonte em linguagem de máquina através da geração de
um programa .OBJ, que após ser linkeditado, torna-se um
arquivo executável. Em C os programas são compilados.
© Hugo Sampaio - 17
Como criar um programa
1) Digitar o programa em um editor de texto e gravar atribuindo a extensão “.C”;
2) Compilar o programa (fonte) criando um arquivo com extensão “.obj”. Chamado de programa objeto;
3) Link-editar o programa objeto criando finalmente o programa executado (com extensão “.exe”).
Basicamente três passos :
© Hugo Sampaio - 18
Estrutura básica de um programa
Um programa em C consiste de uma ou várias funções, onde uma delas precisa ser denominada “main” e deve existir em algum lugar de seu programa. Esta função marca o início da execução do programa.
Outras funções podem ser definidas pelo programador ou preencher a função main, porém em um programa executável em C, a função main deve sempre existir.
© Hugo Sampaio - 19
Estrutura básica de um programa
main(Argumentos) { /* início do corpo da função */
} /* término do corpo da função */
Uma função deve conter :
- Um header que consiste do nome da função- Uma lista de argumentos entre parênteses.
- Um bloco de instruções delimitado por chaves.
© Hugo Sampaio - 20
Estrutura básica de um programa
O nome da função, os parênteses e as chaves, são os únicos elementos obrigatórios de uma função Os comentários podem aparecer em qualquer
lugar de um programa, devendo ser colocados
entre os delimitadores /* e */
Letras minúsculas e maiúsculas não são
equivalentes em C.
Note que cada expressão dentro do bloco deve
terminar com um ponto-e-vírgula.
© Hugo Sampaio - 21
Exemplo de um programa em C
##include <stdio.h>
/* programa que imprime: Boa Noite */
void main ()
{
printf("Boa Noite");
}
© Hugo Sampaio - 22
void main(){ }
##include <stdio.h>
printf("Boa Noite");
Estrutura básica de um programa
Se utilizamos uma função no corpo da função main(), devemos incluir a biblioteca que contenha esta função. Por exemplo :
Se colocarmos a função pritnf() no corpo da função main(),
devemos incluir a biblioteca stdio.h. Isto é feito com a
diretiva : #include, Assim:
© Hugo Sampaio - 23
Ferramenta de Desenvolvimento
Borland C++ 5.02
Janela de códigoApós digitar, digite Ctrl+F9 para executar
Nome do Arquivo Fonte
Janela de mensagense alarmes
© Hugo Sampaio - 24
Ferramenta de Desenvolvimento
Observe onde você esta
carregando o código fonte
© Hugo Sampaio - 25
Questionário 1
Onde a linguagem C foi desenvolvida e quando?
Explique a diferença entre programas
interpretados e programas compilados.
Como é formada uma função na linguagem C?
Como inserir comentários em um programa em C?
© Hugo Sampaio - 26
Questionário 1
No programa abaixo, existem alguns erro, com a ajuda do compilador, tente descobri-lo
#include <stdiox.h>
#include <conio.h>
Main ()
(
printf("Boa Noite");
getch();
)
© Hugo Sampaio - 27
Regra de identificação
Todas as letras maiúsculas de A a Z e as minúsculas
de a a z , os dígitos de 0 a 9 e alguns caracteres
especiais, podem ser utilizados na criação de códigos
em C.
Os nomes de variáveis, funções e matrizes em C,
obedecem a regra de que voce pode usar letras e
números, porem o primeiro digito deve ser apenas
uma LETRA ou o caracter especial undescore (_).
Um nome não pode ser uma das palavras reservadas
da linguagem C.
© Hugo Sampaio - 28
Regra de identificação
Exemplo de nomes válidos :
a y12 soma1 _estoque
Exemplos de nomes não válidos :
2th (o primeiro caracter deve ser letra ou _ )
“a” (inicia com um caracter ilegal (“) )
numero-ordem (caracter ilegal (-))
nome completo (espaço em branco)
© Hugo Sampaio - 29
Regra de identificação
Um identificador de nome pode ter mais de 32
caracteres, porem somente os 32 primeiros
serão reconhecidos.
Algumas implementações do C, reconhece
apenas os 8 (oitos) primeiros, assim os nomes :
taxa_dia e taxa_diaria, nestes sistemas não tem
diferenca, pois o compilador reconhece apenas
os oitos primeiros caracteres.
© Hugo Sampaio - 30
Palavras reservadas
auto double int structbreak else long switchcase enum register typedefchar extern return unionconst float short unsignedcontinue for signed voiddefault goto sizeof volatiledo if static while
São apenas 32 palavras reservadas que não podem ser utilizadas para outro propósito
© Hugo Sampaio - 31
Tipos de Dados
Em C existem 5 tipos válidos:
tipo PalavraReservada
Quant.Bit
Bytes Faixa
Caracter Char 8 1 -128 a 127
Inteiro Int 16 2 -32768 a 32768
Ponto flutuante
Float 32 4 3.4E-38 a 3.4E+38
Pont. Flutuante duplo
Double 64 8 1.7E-308 a 1.7E+308
Sem valor void 0 0 Sem valor
© Hugo Sampaio - 32
Tipos de Dados
Modificadores de Tipos
Com exceção do tipo void, os demais tipos podem ter alguns modificadores. Um modificador é usado para alterar o significado do tipo para adequá-los melhor às necessidades do programador.
© Hugo Sampaio - 33
Tipos de Dados
Os modificadores são : signed, unsigned, long e short
Exemplo de utilização:
Se uma variável é declarada como char ela ocupa
8 bit e tem a faixa de valores de -128 a 127, mais
se o modificador unsigned é colocado antes da
palavra char, ela continua ocupando 8 bits, mais
sua faixa de valores vai de 0 a 255.
© Hugo Sampaio - 34
Tipo de Dados Inteiro
Os dados inteiros são caracterizados pelos números positivos ou negativos que não seja fracionário. Em C referenciamos este tipo de dados com os seguintes identificadores :
Tipo do Inteiro Qt.Bit Faixa
int 16 -32768 a 32767
long int 32 -2.147.483.648 a 2.147.483.648
unsigned int 16 De 0 até 65535
signed long int 32 De 0 até 4.292.967.295
© Hugo Sampaio - 35
Tipo de Dados Reais
Os dados reais são caracterizados pelos números positivos, negativos, inteiros e os fracionários. Em C referenciamos este tipo de dados com os seguintes identificadores :
Tipo do Inteiro Qt.Bit Faixa
float 32 de 3.4e-38 até 3.4e+38
double 64 de 1.7e-308 até 1.7e+308
Long double 128 de -3.4e-4932 até 1.1e+4932
© Hugo Sampaio - 36
Tipo de Dados Caracteres
Os dados caracteres são caracterizados pelas sequencias de letras, números e simbolos especiais delimitados por ( “ ” ) . Em C referenciamos este tipo de dados pelo identificadores : char podendo armazenar de 0 até 255 caracteres
© Hugo Sampaio - 37
Tipo de Dados Lógicos
Na linguagem C não existe o tipo de dados booleano , ou seja, não existe o valor lógico “false” ou “true” de forma predefinida.
Em C qualquer valor igual a 0 (zero), é considerado como valor lógico falso e qualquer valor diferente de 0 (zero), é considerado como valor lógico verdadeiro.
© Hugo Sampaio - 38
Constantes
Constantes são valores que permanecem fixos e na linguagem C temos 4 tipos básicos de constantes:
- Inteiras- ponto-flutuante- caracteres- string (cadeia de caracteres)
© Hugo Sampaio - 39
Constantes numéricas
As constantes do tipo Inteiras e de ponto-flutuante, representam números.
As constantes do tipo Inteiras podem ser escritas em três sistemas de numeração, sendo :
• decimal (base 10)• octal (base 8)• hexadecimal (base 16)
Uma constante inteira decimal pode ser formada por qualquer combinação dos dígitos de 0 a 9. Se tem mais de dois dígitos, o primeiro não pode ser zero. Ex.:
5 13 230 540
© Hugo Sampaio - 40
Constantes numéricas
Uma constante inteira octal pode ser formada por qualquer combinação dos dígitos de 0 a 7 e o primeiro deve ser zero. Ex.:
0 013 0656 0540
Uma constante inteira hexadecimal pode ser formada por qualquer combinação dos dígitos de 0 a 9 e de A a F (maiúsculas ou minúsculas). Deve sempre iniciar com 0x ou 0X. Ex.:
0x 0x1 0xABC 0xabc
Normalmente a magnitude de uma constante inteira é:
Decimal = 32767Octal = 07777Hexa = 0x7FFF
© Hugo Sampaio - 41
Constantes numéricas
As constantes do tipo ponto-flutuante é um número na base 10 que contem casas decimais e/ou um expoente. Ex.:
0. 0.5 1.3 230.323 .540e2
Observe que o caracter que separa a casa decimal é um ponto e não uma virgula
Para representar um número com expoente, trocamos a base 10 pela letra ´e´. Assim para representar 2 x 10², teremos:
200. ou 2e2 ou 2e+2 ou 2E2 ou 2.0e+2
© Hugo Sampaio - 42
Constantes caracteres
As constantes do tipo caracter consiste em um simples caracter colocado entre apóstrofos. Ex.:
´A´ ´x´ ´5´ ´$´
Uma constante de caracter tem valores inteiros correspondentes a um conjunto de caracteres especificos.
Normalmente os computadores utilizam o conjunto de caracteres ASCII, onde cada caracter é representado por uma combinação de 7 bits, Representando assim 2e+7 = 128 diferentes caracteres.
Desta forma, cada constante de caracter, tem um valor inteiro correspondente.
© Hugo Sampaio - 43
Constantes caracteres
Caracter
Valor
A 65
B 66
C 67
D 68
E 69
F 70
G 71
H 72
I 73
J 74
K 75
L 76
Caracter
Valor
a 97
b 98
c 99
d 100
e 101
f 102
g 103
h 104
i 105
j 106
k 107
l 108
Caracter
Valor
M 77
N 78
O 79
P 80
Q 81
R 82
S 83
T 84
U 85
V 86
W 87
X 88
Caracter
Valor
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
DEL 127
ESC 27
© Hugo Sampaio - 44
Constantes string
As constantes do tipo string consiste em um conjunto de caracteres colocado entre aspas. Ex.:
“hugo” “vasco” “São Luis” “Boa Noite !!!”“235-2234”“2*(I+3)/J”
Algumas seqüências de caracteres podem ser incluídas dentro da string para possibilitar a formatação. Ex.:
“Esta é a primeira linha\n e esta a segunda linha”
© Hugo Sampaio - 45
Seqüência de escape
Algums caracteres especiais e os não-imprimíveis, são expressos como uma seqüência de escape.
Uma sequencia de escape sempres começa co uma barra invertida (“\”) seguida por um caracter. Alguns comandos em C, são representados desta forma. Ex.:
Caracter Seqüência de escape
Valor ASCII
Nova linha (line feed) FD \n 10
Campainha (bell) \a 07
Tabulação horizontal \t 09
Tabulação vertical \v 11
Aspas (“) \” 34
Apóstrofo (´) \´ 39
Interrogação (?) \? 63
Barra invertida (\) \\ 92
Nulo (null) \0 00
© Hugo Sampaio - 46
Variáveis
As variáveis são o aspecto fundamental em qualquer linguagem de computador.
Uma variável nada mais é que um espaço de
memória reservado para armazenar um certo tipo
de dado. Uma variável deve receber um nome
para servir de referência e a cada instante ela
pode conter valores diferente.
© Hugo Sampaio - 47
Declaração de Variáveis
Declarar uma variável significa reservar um espaço em memória para um determinado tipo de dados e indicar que o conteúdo daquele espaço, será referenciado pelo o nome da variável.
Uma declaração de variável consiste em um tipo seguido do nome da variável. Exemplo:
int num; // uma variável do tipo int char a; // uma variável do tipo char
© Hugo Sampaio - 48
Declaração de variáveis:
Para serem usadas, as variáveis precisam ser declaradas de modo que o compilador possa reservar espaço na memória para o valor a ser armazenado. A forma geral de uma declaração é:
tipo lista_de_variaveis;
Exemplos: int i;unsigned int a, b, c;double salario;
© Hugo Sampaio - 49
Atribuição de valores às variáveis
Após ser declarada, a variável pode receber valores. O operador de atribuição "=" indica que o valor à direita será atribuído à variável.
O valor inicial pode ser atribuído de duas formas:
- Durante a declaração da variável Ex.: int i=0, j=10;
- Durante execução de uma a função
© Hugo Sampaio - 50
Tipos de Variáveis
O tipo de uma variável informa a quantidade de
memória, em bytes, que ela irá ocupar e a forma
como o seu conteúdo será armazenado.
Os tipos de dados básicos do C visto anteriormente
devem ser utilizados para prototipar uma variável
conforme a necessidade do programa.
© Hugo Sampaio - 51
Nomes de Variáveis
Você pode usar quantos caracteres quiser para um
nome de variável com o primeiro caracter sendo
obrigatoriamente um letra ou sublinhado(_).
Uma variável não pode ter o mesmo nome de uma palavra reservada do C e não deverá ter o mesmo nome de um função.
Na linguagem C, maiúsculas e minúsculas tem tratamento diferenciado, assim, cont, Cont e CONT são três variáveis distintas.
© Hugo Sampaio - 52
Atribuição de valores às variáveis
É possível atribuir a uma variável o valor resultante de uma expressão. Ex.:
int a;
a = (8+2)/2;
A atribuição de uma variável do tipo char, pode ser feita de duas formas: - Atribuindo uma constante de caracter:
char b = ‘A’;- Atribuindo o código ASCII correspondente antecedido pela barra invertida:
char b = ‘\65’
© Hugo Sampaio - 53
Analisando um Programa Exemplo
01 #include <stdio.h>0203 int a=5; // declaração de um inteiro04 int b=5; // declaração de um inteiro05 int soma; // declaração de um inteiro06 07 void main() 08 {09 soma=a+b; 10 printf("%d",soma); 11 }
© Hugo Sampaio - 54
Analisando um Programa Exemplo
01 #include <stdio.h>0203 int a=5, b=5, soma;0405 void main()06 {07 soma=a+b;08 printf("%d",soma);09 }
© Hugo Sampaio - 55
Atribuição de valores às variáveis
Na linguagem C, não temos o tipo ´string´ pre-definido, o que
nos leva a utilizar os vetores de caracter. Desta forma um string
em C será atribuída a um vetor do tipo char na sua inicialização.
char nome[20] = “Hugo Sampaio”;
A Atribuição de uma constante de caracter diretamente a um
vetor de caracter já declarado e não inicializado, só pode ser
feito com auxilio de outras funções.Ex.:
char nome[20];
strcpy(nome,“Hugo Sampaio”);
© Hugo Sampaio - 56
Analisando um Programa Exemplo
#include <stdio.h>
#include <conio.h>
char nome[20];
void main()
{
printf("Digite o seu nome : ");
scanf("%s", nome);
printf("Ola! %s ",nome);
getch();
}
© Hugo Sampaio - 57
Conversão de tipos
Algumas vezes o compilador faz uma conversão automática quando vai atribuir um valor de uma expressão a uma variável. Ex.: sendo:
void main(){ float f1,f = 21.45; char c1,c = 'A'; int i1,i = 10;
i1 = f; // i1 receberá o valor 21 printf("%d\n",i1); f1 = i; // f1 receberá o valor 10.00 printf("%f\n",f1); c1 = i; // c1 receberá o valor 10 printf("%d\n",c1); i1 = c; // i1 receberá o valor 65 printf("%d\n",i1); getch();}
© Hugo Sampaio - 58
Conversão de tipos
O Programador pode “forçar” a conversão. Ex.: sendo:
void main(){int a = 65; float x = 2.1, y = 8.95, z; char c;
c = (char)a;printf("Valor de c ( %c ) --> %d\n", c,c);c = (char)(a + (int)x);printf("Valor de c ( %c ) --> %d\n", c,c);
z = (float)((int)x * (int)y);printf("Valor de z ( %f ) --> %d\n", z,z);z = (float)((x * y));printf("Valor de z ( %f ) --> %d\n", z,z);
getch();}
© Hugo Sampaio - 59
Entrada e Saída
Para que exemplos possam ser construídos, necessitamos conhecer um pouco sobre entrada e saída de dados.
Um programa que não fornece resultados nem pede valores para operar não deve ter grande utilidade.
A entrada de dados será feita pelo teclado e a saída poderá ser vista na tela do computador.
Com isto, é possível resolver problemas bastante interessantes.
© Hugo Sampaio - 60
Biblioteca Padrão
Para termos acesso à biblioteca que contém as funções, macros e variáveis que facilitam a entrada e saída de dados, o programa deve conter a declaração
#include <stdio.h>
no início do programa.
Normalmente os programadores usam os símbolos menor (<) e maior (>), mas é possível a alternativa
#include "stdio.h"
© Hugo Sampaio - 61
Saída - A Função printf
A função printf permite que dados sejam escritos na tela do computador.
O formato é de uso simples e bastante flexível, permitindo que os dados possam ser apresentados de diversas maneiras.
Syntax: printf(controle, arg1, arg2, ...);
Onde os argumentos são impressos de acordo com a maneira indicada pelo controle. Um exemplo simples pode tornar a explicação mais clara.
© Hugo Sampaio - 62
Saída - A Função printf
O programa abaixo imprime o valor da variável ano.#include <stdio.h>
#include <conio.h>
// Biblioteca de entrada e saída
main()
{
int ano = 2008;
// Declarei ano como inteiro e ja defini seu valor.
printf(“ Estamos no ano %d ", ano );
getch();
}
Na tela do computador será impresso: Estamos no ano 2008;
CONTROLE
ARGUMENTO
© Hugo Sampaio - 63
Saída - A Função printf
O controle, que deve aparecer sempre entre " ", define como serão impressos os argumentos.
Neste controle podem existir dois tipos de informações: caracteres comuns e códigos de formatação.
Os caracteres comuns, como no exemplo (Estamos no ano) são escritos na tela sem nenhuma modificação.
Os códigos de formatação, aparecem precedidos por um % e são aplicados aos argumentos na ordem em que aparecem.
© Hugo Sampaio - 64
Códigos de Formatação
Deve haver um código de formatação para cada argumento. O código %d indica que o valor armazenado em ano deve ser impresso na notação inteiro decimal.
Código Comentário % c Caractere simples % d Inteiro decimal com sinal % i Inteiro decimal com sinal % e Real em notação científica com e % f Real em ponto flutuante % o Inteiro em base octal % s Cadeia Caracteres % u Inteiro decimal sem sinal % x Inteiro em base hexadecimal (letras minúsculas) % % Imprime o caracter %
© Hugo Sampaio - 65
Saída justificada
Um sinal de menos para especificar que o argumento deve ser tabulado a esquerda no seu campo de impressão pode ser acrescentado. Exemplo a seguir ilustra os dois tipos de justificação. main()
{
int ano = 2007;
printf("Justificado a esquerda Ano = %-8d\n", ano);
printf("Justificado a direita Ano = %8d\n", ano);
getch();
}
Observe
© Hugo Sampaio - 66
Especificador de Precisão
O especificador de precisão consiste de um ponto que separa o número que define o tamanho do campo do número que especifica o máximo número de dígitos a serem impressos a direita do ponto em um número do tipo float ou double
#include <stdio.h>
#include <conio.h>
main()
{
float r = 1.0/3.0;
printf("O resultado e = %9.5f\n", r);
getch();
}
Observe
© Hugo Sampaio - 67
Códigos de Formatação
Ao executar o exemplo verifique que \n não é impresso.
A barra inclinada é chamada de seqüência de escape, indicando que o próximo caracter não é para ser impresso mas representa caracteres invisíveis, por exemplo. Alguns destes caracteres são:
Código Descrição \n Passa para uma nova linha \t Tabulação \b Retorna um caracter \f Salta uma página \0 Caracter nulo
© Hugo Sampaio - 68
Entrada - A Função scanf
A função scanf pode ser utilizada para entrada de dados a partir do teclado. Esta função é equivalente à função printf e seu formato é:Syntax: scanf(controle, arg1, arg2, ...);
Uma diferença fundamental existe entre as duas funções é que os argumentos da função scanf são os endereços das variáveis que irão receber os valores lidos e não, como em printf, as próprias variáveis.
© Hugo Sampaio - 69
Entrada - A Função scanf
A indicação que estamos referenciando um endereço e não a variável se faz pelo operador &. Por exemplo, o comando
scanf("%d %d", &a, &b)
espera que dois valores inteiros sejam digitados no teclado. O primeiro é armazenado na variável a e o segundo em b.
© Hugo Sampaio - 70
Entrada - A Função scanf
Cada variável a ser lida, deverá ser precedida pelo caracter &
Para seqüência de caracteres (%s), o caracter & não deverá ser usado.
© Hugo Sampaio - 71
Entrada - A Função scanf
int main(){ int numero; char string[30]; printf("Digite uma string: "); scanf("%s",string); printf("Digite um numero: "); scanf("%d",&numero); printf("A string digitada foi: \t%s\n", string); printf("O numero digitado foi: \t%d\n", numero);}
© Hugo Sampaio - 72
Lendo e Imprimindo Caracteres
Para ler e escrever caracteres do teclado as funções de entrada e saída mais simples são getchar e putchar que estão na biblioteca stdio.h#include <stdio.h>#include <conio.h>
main(){ char c; int i;
printf("Entre com um caracter entre 0 e 9.\n"); c = getchar(); printf("O caracter lido foi o "); putchar(c);
getch();}
© Hugo Sampaio - 73
Lendo e Imprimindo Caracteres
Na definição original da função getchar a entrada é armazenada até que a tecla ENTER seja apertada. Com isto caracteres ficam em um buffer esperando para serem tratados. Em ambientes onde é necessário tratar o caracter imediatamente esta função pode não ser útil.
Muitos compiladores incluem funções para permitir entrada interativa de dados. As duas funções mais comuns são getch e getche e seus protótipos podem ser encontrados na biblioteca <conio.h>.
© Hugo Sampaio - 74
Lendo e Imprimindo Strings
Um string em C é um vetor de caracteres. Para usar strings é preciso primeiro definir um espaço para armazená-los. Para isto é preciso declarar o tamanho e o tipo do vetor. Por exemplo:
char nome[40];
Quando definir o tamanho do vetor observar que todo string em C termina com o caracter null ('\0'), que é automaticamente inserido pelo compilador.
Portanto o vetor nome pode armazenar no máximo 39 caracteres.
© Hugo Sampaio - 75
Lendo e Imprimindo Strings
Exemplo :
#include <stdio.h>
#include <conio.h>
void main ( )
{
char nome[40];
puts("Por favor, qual o seu nome.");
scanf("%s", nome);
printf(“Em que posso ajuda-lo %s?\n", nome);
getch();
}
© Hugo Sampaio - 76
Expressões e Operadores
Adição:
Expressão1 + expressão2
Primeiros as duas expressões serão avaliadas e só depois a adição é realizada.
Pode ter uma conversão de tipos, depois da
avaliação das expressões:float x,y;int z; z=y+x;
© Hugo Sampaio - 77
Expressões e Operadores
Subtração:
Expressão1 - expressão2
As duas expressões são avaliadas, depois a subtração é realizada, e o valor obtido é o valor da expressão.
- Expressão
A semântica de (-expressão) é a mesma do que (0 - expressão).
© Hugo Sampaio - 78
Expressões e Operadores
Multiplicação:
Expressão1 * expressão2
As duas expressões são avaliadas, depois a
multiplicação é realizada, e o valor obtido é o valor
da expressão.
© Hugo Sampaio - 79
Expressões e Operadores
Divisão:Expressão1 / expressão2
Diferente das outras linguagens, em C o “ / ” designa ao mesmo tempo a divisão dos inteiros e dos reais.
© Hugo Sampaio - 80
Expressões e Operadores
Divisão:
Caso os dois operandos inteiros sejam positivos, o
sistema arredonda o resultado da divisão :
7 / 2 retorna 3
Caso os dois operandos inteiros sejam de sinal
diferentes, o arredondamento depende do
compilador.
-7 / 2 ou 7 / -2 retornam -3 ou -4 (geralmente -4)
© Hugo Sampaio - 81
O Módulo %
Expressão1 % Expressão2
As duas expressões devem retornar valores de tipo inteiro
O módulo retorna o resto da divisão inteira.
7 % 2 retorna 1
Caso um dois operadores sejam negativo, o sinal do módulo depende da implementação, mas é geralmente o sinal do primeiro
7 % 2 retornam 1
-7 % 2 retornam -1
7 % -2 retornam 1
© Hugo Sampaio - 82
Operadores Relacionais
Operador Relação == Igual != Diferente > Maior
>= Maior ou igual < Menor
<= Menor igual
Expressão1 operador Expressão2
O resultado da comparação será um valor
lógico :
1 - Verdadeira e; 0 - Falsa.
© Hugo Sampaio - 83
Operadores Lógicos
Operador Relação && E (and) || Ou (or) ! Negação (not)
Expressão1 operador Expressão2
exemplos:
(a && b)
(a == 0) || (b != 0)
! ((a = = 0) && (b<3))
© Hugo Sampaio - 84
Operador &
É o operador de endereçamento (ponteiro): Ele permite apontar qualquer variável:
&a é o endereço da variável a
© Hugo Sampaio - 85
Incremento
x = x + 1;
x++;
++x;
s+=i; /* s=s+i*/
z = y++; /* z=y e depois y++ */
z = ++y; /* y++ e depois z = y (novo) */
© Hugo Sampaio - 86
Decremento
y = y - 1; /* isto decrementa y */
y--; /* isto decrementa y */
--y; /* isto decrementa y */
s-=i; /* s=s-i*/
z = y--; /* z =y e depois y- - */
z = --y; /* y-- e depois z=y (o novo)*/
© Hugo Sampaio - 87
Condicional (IF)
if (b >= 3.0)
a = 2.0;
else
a = 10.5;
Igual a :
a = (b >= 3.0 ? 2.0 : 10.5 );
c = (a > b ? a : b); /* c=maior(a,b) */
c = (a > b ? b : a); /* c=menor(a,b) */
© Hugo Sampaio - 88
Questionário 2
Baseado no que foi visto em sala de aula, responda:
Escreva um programa que declare variáveis do tipo inteiro, char e float, inicializando-as, e imprima os seus valores.
Faça um programa capaz de ler um valor real e escreve-lo com apenas uma casa decimal.
© Hugo Sampaio - 89
Questionário 2
Sabendo que os argumentos da função "printf" podem ser expressões (a+b, a/b, a*b...), e não somente argumentos, faça um programa capaz de ler um valor inteiro X e imprimir na tela o cubo, o quadrado e a metade de X.
Ex.: para X= 6, imprimir
Cubo = 18; Quadrado = 36; Metade = 3.
© Hugo Sampaio - 90
Exercícios
Escreva um programa que leia 3 números reais e imprima a média aritmética destes números.
Escreva um programa que ler uma temperatura em graus Celsius e apresenta o valor em Fahrenheit. (Formula: F = (9 X C + 160)/5)
Escreva um programa que ler uma temperatura em graus Fahrenheit e apresenta o valor em Celsius. (Formula: C = (F -32) * (5/9)
top related