Escolar Documentos
Profissional Documentos
Cultura Documentos
Grupo Unis
Mini-Curso
Linguagem C
• Semana da Tecnologia
• Grupo Unis
• OBJETIVOS
– Caracterizar Linguagens de Programação;
– Caracterizar a linguagem C;
– Dev-Cpp – Compilador C/C++
– Estruturas Básicas em C;
– Identificadores;
– Operadores Relacionais, Lógicos e Aritméticos;
– Comandos de Entrada e Saída;
– Estruturas Condicionais;
– Estruturas de Controle/Repetição;
– Funções.
2
• Semana da Tecnologia
• Grupo Unis
• Algumas Sugestões....
•Apostilas
• Curso de Linguagem C – UFMG
3
Linguagem C
Introdução e
Primeiros Passos
4
Introdução
Por que programar ?
O Que é um programa ?
6
Exemplos de Códigos: BASIC
Pseudo-código BASIC
leia(num) 10 input num
para n de 1 20 for n=1 to 10
até 10 passo 1 step 1
faça
30 let tab=num*n
tabnum*n
40 print chr$(tab)
imprima(tab)
50 next n
fim-para;
7
Exemplos de Códigos:
FORTRAN
Pseudo-código FORTRAN
leia(num) read (num)
para n de 1 do 10 n=1:10
até 10 passo 1 tab=num*n
faça
write(tab)
tabnum*n
10 continue
imprima(tab)
fim-para;
8
Exemplos de Códigos:
Assembly
Pseudo-código Assembly (Intel 8088)
leia(num) MOV CX,0
IN AX,PORTA
para n de 1
MOV DX,AX
até 10 passo 1
faça LABEL:
INC CX
tabnum*n
MOV AX,DX
imprima(tab) MUL CX
fim-para; OUT AX, PORTA
CMP CX,10
JNE LABEL
9
Exemplos de Códigos: C
Pseudo-código C
leia(num) scanf(&num);
para n de 1 for(n=1;n<=10;n++){
até 10 passo 1 tab=num*n;
faça
printf(”\n %d”,
tabnum*n tab);
imprima(tab) };
fim-para;
10
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.
11
Tipos de Linguagens: Baixo
Nível
12
Tipos de Linguagens: Alto
Nível
Necessitam de compiladores ou
interpretadores para gerar as instruções do
microprocessador.
13
Tipos de Linguagens: Alto
Nível
14
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.
- INTERPRETADORES
- COMPILADORES
15
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.
16
Linguagem C
Sobre a linguagem C
17
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.
19
ANSI
O Padrão ANSI
20
Características
Linguagem de propósito genérico;
Usada para escrever processadores de texto,
planilhas, sistemas operacionais, programas de
comunicação, programas para automação
industrial, SGBDs, navegadores e servidores
Web, etc.
Possui características de alto e de baixo nível;
Excelente performance;
Muito popular;
Sintaxe de C serve de base para muitas
outras linguagens.
21
Características
Deu origem a outras linguagens de
programação, entre elas C++, Java, C#, PHP,
Ruby, Python, etc.
Muito usada no desenvolvimento de:
Compiladores, interpretadores, editores de texto,
banco de dados, computação gráfica,
manipulação e processamento de imagens,
controle de processos, …
22
Características
Portabilidade
Geração de códigos executáveis
compactos e rápidos
Interação com o sistema operacional
Facilidade de uso
Linguagem estruturada
Confiabilidade
Simplicidade
Case sensitive
Maiúsculas e minúsculas fazem diferença.
23
Estrutura básica de um
programa C
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.
24
Estrutura básica de um
programa
main(Argumentos)
{ /* início do corpo da função */
27
Linguagem C
Dev C
Ambiente de Desenvolvimento
Linguagem C
28
Tela Principal
29
Painel Principal
30
Painel Principal
• Clicando em Arquivo
31
Painel Principal
• Clicando em Arquivo
32
Painel Principal
• Clicando em Arquivo
33
Painel Principal
• Clicando em Arquivo
34
Painel Principal
• Clicando em Arquivo
35
Painel Principal
• Clicando em Arquivo
36
Painel Principal
• Clicando em Arquivo
-Menus de impressão.
37
Painel Principal
• Clicando em Arquivo
- Sair.
38
Painel Principal
39
Painel Principal
• Clicando em Editar
40
Painel Principal
• Clicando em Editar
41
Painel Principal
• Clicando em Editar
42
Painel Principal
• Clicando em Editar
43
Painel Principal
• Clicando em Editar
44
Painel Principal
• Clicando em Editar
45
Painel Principal
46
Painel Principal
47
Painel Principal
48
Painel Principal
49
Painel Principal
50
Painel Principal
51
Painel Principal
52
Painel Principal
53
Painel Principal
54
Meu primeiro programa em C
55
Meu primeiro programa em C
56
Meu primeiro programa em C
-Retorna 0. 61
Linguagem C
Identificadores
62
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.
64
Regra de identificação
65
Palavras reservadas
auto double int struct
break else long switch
case enum register typedef
char extern returnunion
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
67
Tipos de Dados
Modificadores de Tipos
68
Tipos de Dados
Os modificadores são :
signed, unsigned, long e short
Exemplo de utilização:
69
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 :
70
Tipo de Dados Reais
71
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
72
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.
73
Constantes
- Inteiras
- ponto-flutuante
- caracteres
- string (cadeia de caracteres)
74
Constantes numéricas
Decimal = 32767
Octal = 07777
Hexa = 0x7FFF
76
Constantes numéricas
As constantes do tipo ponto-flutuante é um número na base 10 que contem
casas decimais e/ou um expoente. Ex.:
Observe que o caracter que separa a casa decimal é um ponto e não uma
virgula
78
Constantes caracteres
Caracter Valor Caracter Valor Caracter Valor Caracter Valor
A 65 M 77 a 97 0 48
B 66 N 78 b 98 1 49
C 67 O 79 c 99 2 50
D 68 P 80 d 100 3 51
E 69 Q 81 e 101 4 52
F 70 R 82 f 102 5 53
G 71 S 83 g 103 6 54
H 72 T 84 h 104 7 55
I 73 U 85 i 105 8 56
J 74 V 86 j 106 9 57
K 75 W 87 k 107 DEL 127
L 76 X 88 l 108 ESC 27
79
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”
int main(void)
{
int numero;
unsigned int numero2;
signed long numero3;
81
Exemplos - Atribuições
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
float decimal;
decimal = 10.123456; // Numero Fracionário
printf("%f\n",decimal);
decimal = 10e5; // 10*10 ^ 5 = 1.000.000
printf("%f\n",decimal);
decimal = 0775; // Octal = 509
printf("%f\n",decimal);
decimal = 0xFF; // Hexadecimal = 255
printf("%f\n",decimal);
system("PAUSE");
return 0;
}
82
Exemplos - Atribuições
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char letra;
char texto[11] = “TESTE”; // 10 Caracteres + \0
letra='A‘;
letra="A"; // Gera erro, string
letra="ALO MUNDO!";// Gera erro, string
texto='ALO';// Gera erro, caracter
texto="A";// Gera erro, string menor de 10 caracteres
texto="ALO MUNDO!"; // Não se pode atribuir string diretamente
printf("%s\n",texto); // Mostra o valor de texto
strcpy(texto,"ALO MUNDO!"); deve-se usar strcpy da biblioteca string.h
printf("%s\n",texto);
system("PAUSE");
return 0;
}
83
Seqüência de escape
Algums caracteres especiais e os não-imprimíveis, são
expressos como uma seqüência de escape.
84
Seqüência de escape
Caracter Seqüência de escape Valor ASCII
Nova linha (line feed) FD \n 10
Campainha (bell) \a 07
Tabulação horizontal \t 09
Aspas (“) \” 34
Apóstrofo (´) \´ 39
Interrogação (?) \? 63
Barra invertida (\) \\ 92
85
Exemplos - Escape
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Pula\nLinha");
printf("\nTabulacao\tTabulacao\tTabulacao");
printf("ASPAS DUPLAS \"");
printf("ASPAS SIMPLES \'");
printf("INTERROGACAO \?");
printf("BARRA INVERTIDA \\ \0");
printf("\a"); // Gera Beep
system("PAUSE");
return 0;
}
86
Variáveis
87
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.
88
Declaração de variáveis:
tipo lista_de_variaveis;
Exemplos:
int i;
unsigned int a, b, c;
double salario;
89
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.
91
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’;
92
Analisando um Programa
Exemplo
01 #include <stdio.h>
02 #include <stdlib.h>
03 int a=5; // declaração de um inteiro
04 int b=5; // declaração de um inteiro
05 int soma; // declaração de um inteiro
06 int main(void)
07 {
08 soma=a+b;
09 printf("%d",soma);
10 system(“pause”);
11 }
93
Analisando um Programa
Exemplo
01 #include <stdio.h>
02 #include <stdlib.h>
03 int a=5, b=5, soma;
04 int main(void)
05 {
06 soma=a+b;
07 printf("%d",soma);
08 system(“pause”);
09 }
94
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];
int main()
{
printf("Digite o seu nome : ");
scanf("%s", nome);
printf("Ola! %s ",nome);
getch();
} 96
String
Uma string em C é um vetor de caracteres
terminado com um caractere nulo.
O caracter nulo é um caractere com valor inteiro
igual a zero
O terminador nulo também pode ser representato em
C por '\0'.
O comprimento da string deve ser pelo menos 1
caractere maior que o que pretendemos armazenar,
pois um caractere é reservado ao terminador nulo.
A função gets() lê uma string e insere o terminador
nulo na string quando a tecla Enter for pressionada.
97
String
Usamos um índice para acessar o caractere
desejado dentro da string.
str[1] = 'a';
Em C, o índice inicia em zero.
char str[10] = "Joao";
A declaração acima inicializa a string str com os
caracteres 'J' 'o' 'a' 'o' e '\0'.
O código de controle %s na função printf()
é usado para exibir uma string.
98
String
Podemos ler uma string usando scanf().
Não usamos o e comercial (&) para strings, pois o
nome de um vetor já é um endereço de memória
do começo do vetor.
scanf("%s", texto);
Infelizmente scanf() lê somente até o primeiro
espaço, ou seja, lê somente uma palavra.
Para contornar isso, usamos a função gets que lê
até encontrar o caracter de fim de linha (enter).
gets(texto);
99
String
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char nome[6];
printf("Digite um nome: ");
gets(nome);
printf("Ola, %s\n", nome);
system("pause");
}
100
String
O problema de gets é que ele pode
provocar sérios problemas de segurança,
pois permite o armazenamento de
caracteres além da capacidade da string.
Uma solução mais segura é usar a função
fgets que limita o tamanho máximo a ser
lido.
fgets(texto, 50, stdin);
101
String
#include <stdio.h>
#include <stdlib.h>
main() {
char nome1[21], nome2[21];
printf("Digite um nome: ");
gets(nome1);
printf("Digite um nome: ");
fgets(nome2,21,stdin);
printf("\nNomes:\n%s - %s\n\n", nome1, nome2);
system("pause");
}
102
String
#include <stdio.h>
#include <stdlib.h>
main(){
char nome[10] = "Joao";
printf("String: %s\n", nome);
printf("Terceira letra: %c\n", nome[2]);
printf("Quarta letra: %c\n", nome[3]);
nome[2] = 'h';
nome[3] = 'n';
printf("Agora a terceira letra eh: %c\n", nome[2]);
printf("Agora a quarta letra eh: %c\n", nome[3]);
printf("String resultante: %s\n", nome);
system("pause");
}
103
String
#include <stdio.h>
#include <stdlib.h>
main(){
char nome[10];
printf("\n\nDigite um nome: ");
gets(nome);
printf("\nString: %s\n", nome);
printf("Terceira letra: %c\n", nome[2]);
printf("Quarta letra: %c\n", nome[3]);
printf("o tamanho da string eh: %d\n",
strlen(nome));
printf("o ultimo caractere eh: %c\n",
nome[strlen(nome)-1]);
nome[2] = 'h';
nome[3] = 'n';
printf("Agora a terceira letra eh: %c\n", nome[2]);
printf("Agora a quarta letra eh: %c\n", nome[3]);
printf("String resultante: %s\n", nome);
system("pause");
} 104
String – funções
strlen(texto) — Retorna o tamanho da string
texto em número de caracteres.
strcpy(destino, fonte) — Copia a string fonte
para a string destino.
strcat(destino, fonte) — Concatena a string
fonte no fim da string destino.
strcmp(str1, str2) — Compara duas cadeias e
caracteres e retorna um valor
= 0 - se str1 e str2 forem iguais
< 0 - se str1 for menor que str2
> 0 - se str1 for maior que str2
105
String – funções
#include <stdio.h>
#include <string.h>
main() {
char nome1[] = "Regis";
printf("%s\n\n",nome1);
char nome2[100];
strcpy(nome2, "Isaac");
printf("%s\n\n",nome2);
strcat(nome2," Newton");
printf("%s\n\n",nome2);
strcpy(nome2,"Maria");
printf("%s\n\n",nome2);
system("pause");
}
106
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:
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();
}
107
Conversão de tipos
O Programador pode “forçar” a conversão. Ex.: sendo:
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();
}
108
Exemplo 2
#include <stdio.h>
main() {
int Dias;
/*
* Declaracao de
* Variaveis
*/
float Anos;
printf("Entre com o numero de dias: ");
/* Entrada de Dados */
scanf("%d", &Dias);
Anos=Dias/365.25; // Conversao Dias->Anos
printf("\n\n%d dias equivalem a %f anos.\n", Dias, Anos);
system("pause");
}
109
Exemplo 3
#include <stdio.h>
main() {
int x;
printf("Digite um numero");
scanf("%d",&x);
printf("%d\n",x);
system("pause");
}
110
Exemplo 4
#include <stdio.h>
main() {
int x;
printf("Digite um numero");
scanf("%d",&x);
printf("O dobro e %d\n", 2 * x);
system("pause");
}
111
Entrada e Saída
#include <stdio.h>
main() {
char Ch;
Ch='D';
printf("%c", Ch);
printf("%d", Ch); // Imprime como inteiro
system("pause");
}
113
Entradas e Saídas
Para obter o caractere pressionado:
getche()
Imprime o caractere na tela antes de retorná-lo.
getch()
Apenas retorna o caratere pressionado sem imprimi-lo
na tela.
Essas funçoes são encontradas no arquivo
conio.h que somente está disponível para
Windows. Não é padrão ANSI.
114
getch()
#include <stdio.h>
#include <conio.h>
main() {
printf("Tecle algo...");
char ch=getch();
printf("Voce pressionou a tecla %c\n", ch);
system("pause");
}
115
Equivalente ANSI
Diferenças:
Requer o pressionamento da tecla <ENTER>
após a entrada de teclado.
#include <stdio.h>
main() {
char ch;
printf("Tecle algo...");
scanf("%c", &ch);
printf("Voce pressionou a tecla %c\n", ch);
system("pause");
}
116
printf() e scanf()
Forma geral da função printf():
printf (string_de_controle,lista_de_argumentos);
Forma geral da função scanf():
scanf (string_de_controle,lista-de-argumentos);
117
Biblioteca Padrão
#include <stdio.h>
no início do programa.
118
Saída - A Função printf
CONTROLE
120
Saída - A Função printf
O controle, que deve aparecer sempre entre " ", define como
serão impressos os argumentos.
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 %
122
Formatação Numérica
%<numero>d
Escreve um inteiro na tela, preenchendo com espaços à
<espaco><espaco>10
123
Formatação Numérica
%0<numero>d
Escreve um inteiro na tela, preenchendo com zeros à
0010
124
Formatação Numérica
%<numero1>.0<numero2>d
Escreve um inteiro na tela, preenchendo com espaços à
125
Formatação Numérica
%f
Escreve um ponto flutuante na tela, sem formatação.
printf("%f", 10.0);
Exibe:
10.000000
126
Formatação Numérica
%e
Escreve um ponto flutuante na tela em notação
científica.
printf("%e", 10.02545);
Exibe:
1.002545e+01
127
Formatação Numérica
%<tamanho>.<decimais>f
Escreve um ponto flutuante na tela, com tamanho
<tamanho> e <decimais> casas decimais.
O ponto também conta no tamanho.
printf("%6.2f", 10.0);
Exibe:
<espaço>10.00
128
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.
Observe
main()
{
int ano = 2007;
printf("Justificado a esquerda Ano = %-8d\n", ano);
printf("Justificado a direita Ano = %8d\n", ano);
getch();
}
129
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() Observe
{
float r = 1.0/3.0;
printf("O resultado e = %9.5f\n", r);
getch();
}
130
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, ...);
132
Entrada - A Função scanf
133
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);
system("system");
}
134
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;
getch();
}
135
Exercícios
136
Solução
#include <stdio.h>
main() {
int i;
char c;
float f;
i = 10;
c = ‘A’;
f = 10.5589;
printf(“\n Inteiro: %i“, i);
printf(“\n Char: %c“, c);
printf(“\n Real: %f“, f);
system("pause");
}
137
Exercícios
138
Solução
#include <stdio.h>
main() {
float f;
printf(“\nDigite um número: “);
scanf(“%f“, &f);
printf(“\n Real: %.1f“, f);
system("pause");
}
139
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.
Atribuição (=)
Aritméticos
*e/
%
+e-
141
Operadores Relacionais
== igual
!= diferente de
> maior que
< menor que
>= maior ou igual
<= menor ou igual
142
Operadores Lógicos
&& (e)
|| (ou)
! (não)
143
Operador Ternário
Operador que usa três argumentos:
expr ? valor1 : valor2
Se expr avaliar for verdadeira, valor1 será o resultado
da expressão.
Se expr for falsa, valor2 será o resultado da expressão.
int x, y, maior;
...
maior = x > y ? x : y;
...
144
Operador Ternário
#include <stdio.h>
main() {
int n1, n2;
printf("Digite um numero: ");
scanf("%d", &n1);
printf("Digite outro numero: ");
scanf("%d", &n2);
printf("O maior e: %d\n", n1 > n2 ? n1 : n2);
system("pause");
}
145
Expressões
O resultado de uma expressão lógica ou
relacional é:
0 (falso)
1 ou qualquer outro número diferente de zero
(verdadeiro)
Para facilitar:
NÃ0
S1M
146
Operadores de incremento e
decremento
Incremento (++)
Decremento (--)
a++;
Incrementa o valor da variável a em uma
unidade.
A posição do operador de incremento e
decremento determina a ordem de
execução do que está em seu derredor.
147
Operadores de incremento e
decremento
#include <stdio.h>
main() {
int a = 10;
printf("%d", ++a);
system("pause");
}
#include <stdio.h>
main() {
int a = 10;
printf("%d", a++);
system("pause");
}
148
Atribuições Simplificadas
149
Linguagem C
Estruturas de Controle
Desvio / Decisão
150
if ... else ...
if (expressão) {
if (expressão) {
comandos;
comandos;
} else {
}
comandos;
}
#include <stdio.h>
#include <stdio.h>
main() {
main() {
int idade = 21;
int idade = 15;
if (idade < 18) {
if (idade < 18) {
printf("Invalida\n");
printf("Invalida\n");
} else {
}
printf("OK\n");
system("pause");
}
}
system("pause");
} 151
Par ou ímpar
#include <stdio.h>
main() {
int a;
printf("Digite um numero inteiro: ");
scanf("%d", &a);
if (a % 2 == 0) {
printf("O valor eh par.\n");
} else {
printf("O valor eh impar.\n");
}
system("pause");
}
152
Exercício
Escreva um programa em linguagem C
para receber um número e dizer se ele é
positivo, negativo ou zero.
153
Positivo, Negativo ou Zero
#include <stdio.h>
main() {
int n;
printf("Digite um numero: ");
scanf("%d", &n);
if (n > 0) {
printf("positivo");
} else if (n < 0) {
printf("negativo");
} else {
printf("zero");
}
printf("\n");
system("pause");
} 154
Decisão Múltipla
O comando switch simplifica uma expressão onde
uma variável inteira ou caracter deve fazer
diferentes operações, dependendo do seu valor.
switch (variavel) {
case valor:
comandos;
break;
case valor:
comandos;
break;
default:
comandos;
} 155
Decisão Múltipla
#include <stdio.h>
main() {
int num;
printf("Digite um numero inteiro: ");
scanf("%d", &num);
switch (num) {
case 1: printf("um"); break;
case 2: printf("dois"); break;
case 3: printf("tres"); break;
case 4: printf("quatro"); break;
case 5: printf("cinco"); break;
default: printf("nao conheco");
}
printf("\n");
system("pause");
156
}
Exercício
Dada uma letra, escreva na tela se essa
letra é ou não é uma vogal.
Dica: a função toupper(c) converte um char
para caixa alta e a função tolower(c)
converte um char para caixa baixa.
157
Exercício
#include <stdio.h>
main() {
char letra;
printf("Digite uma letra: ");
scanf("%c", &letra);
switch (tolower(letra)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': printf("A letra %c e uma vogal", letra); break;
default: printf("A letra %c nao e uma vogal", letra);
}
printf("\n");
system("pause");
}
158
Linguagem C
Estruturas de Controle
Repetição
159
Laços condicionais
160
Laço condicional
...
int i = 0;
while (i < 10) {
printf("olá!");
i = i + 1;
}
...
161
Laços usando for
Em C, a declaração da variável deve ser
realizada antes do for.
for (inicializacao; condicao; incremento) {
codigo;
}
int i;
for (i = 0; i < 10; i++) {
printf("olá!");
}
162
I’ll not throw paper airplanes in class
163
I’ll not throw paper airplanes in class
#include <stdio.h>
int main(void) {
int count;
for(count=1;count<=500; count++)
printf("I’ll not throw paper
airplanes in class!");
system(”pause”);
return(0);
}
164
Exemplo – Linha de *
#include <stdio.h>
int main() {
int i, n;
printf("Digite um numero: ");
scanf("%d", &n);
for (i=0; i < n; i++) {
printf("*");
}
printf("\n");
system(”pause”) ;
return(0);
} 165
Exemplo – Quadrado de *
#include <stdio.h>
int main() {
int coluna, linha, n;
printf("Digite um numero: ");
scanf("%d", &n);
main()
{
int i;
for (i = 0; i < 100; i++) {
if(i > 50 && i < 60) {
continue;
}
printf("%d\n", i);
}
system(”pause”)~;
}
167
Linguagem C
Funções
168
Introdução às funções
Uma função é um bloco de código de
programa que pode ser usado diversas vezes
em sua execução.
O uso de funções permite que o programa
fique mais legível, mais bem estruturado.
Um programa em C consiste, no fundo, de
várias funções colocadas juntas.
169
Introdução às funções
Argumentos
Argumentos são as entradas que a função
recebe. É através dos argumentos que
passamos parâmetros para a função.
As funções printf() e scanf() são funções que
recebem argumentos.
170
Declaração
tipo_de_retorno
nome_da_função
(declaração_de_parâmetros)
{
corpo_da_função
}
171
Exemplo – media de 2
números
#include<stdio.h>
int main() {
float num_1, num_2, media;
puts("Digite dois numeros:");
scanf("%f %f", &num_1, &num_2);
media = media2(num_1, num_2);
printf("\nA media destes numeros eh %f", media);
system(”pause”);
}
172
Exemplo - soma
#include <stdio.h>
int main() {
float n1, n2;
printf("Digite um numero: ");
scanf("%f", &n1);
printf("Digite outro numero: ");
scanf("%f", &n2);
printf("Soma: %f\n", soma(n1, n2));
system(”pause”);
return 0; 173
}
Procedimentos
Em C não há procedimentos. O mais
próximo de procedimentos em C são as
funções que nada retornam, ou seja, cujo
retorno é void.
174
Exemplo - repeticao
#include <stdio.h>
int main() {
char palavra[20];
printf("Digite uma palavra: ");
fgets(palavra, 20, stdin);
repete(palavra, 10);
system(”pause”);
return 0; 175
}
Exemplo de Função
#include <stdio.h>
/* Funcao simples: so imprime Ola! */
mensagem() {
printf("Ola! ");
}
main() {
mensagem();
printf("Eu estou vivo!\n");
system("pause");
}
176
Exemplo de função
#include <stdio.h>
/* Calcula o quadrado de x */
int square(int x) {
return x * x;
}
main() {
int num;
printf("Entre com um numero: ");
scanf("%d", &num);
printf("\n\nO quadrado e %d\n", square(num));
system("pause");
}
177
Exemplo de função
#include <stdio.h>
int prod(int x, int y) {
return (x*y);
}
main() {
int saida;
saida=prod(12, 7);
printf("A saida e: %d\n", saida);
system("pause");
}
178
Exemplo de função
#include <stdio.h>
float prod(float x, float y) {
return (x*y);
}
main() {
float saida;
saida=prod(45.2, 0.0067);
printf("A saida e: %f\n", saida);
system("pause");
}
179
Exercício
Escreva uma função para receber dois
números e, depois, exibir a sua soma.
180
Solução
#include <stdio.h>
main() {
float n1, n2;
printf("Digite um numero: ");
scanf("%f", &n1);
printf("Digite outro numero: ");
scanf("%f", &n2);
printf("A soma e: %f\n", (n1 + n2));
system("pause");
}
181
Exercícios
182
Solução
#include <stdio.h>
main() {
float n1;
printf("Digite um numero: ");
scanf("%f", &n1);
printf(“\n Cubo: %f“, n1 * n1 * n1);
printf(“\n Quadrado: %f“, n1 * n1);
printf(“\n Metade: %f“, n1 / 1);
system("pause");
}
183