Você está na página 1de 34

Introdução à

Programação
- Introdução à Linguagem C -

Prof. Dr. Adriano Caminha


adrianocaminha@id.uff.br
Profa. Dra. Vera Prudência Caminha
veraprudencia@id.uff.br

ICEx/UFF

Volta Redonda-RJ
© 1999-2020
Introdução à Programação – Introdução à Linguagem C –

Sumário

Comandos Condicionais Aninhados ....................................................... 03


Seleção de Múltipla Escolha ................................................................... 05
Exercícios .................................................................................................. 08
Comando de Repetição for ....................................................................... 09
Exercícios .................................................................................................. 11
Contadores e Acumuladores .................................................................... 12
Comando de Repetição while ................................................................. 13
Comando de Repetição do...while .......................................................... 14
Operador Condicional ou Ternário ......................................................... 15
Exercícios .................................................................................................. 16
Vetores ou Arrays Unidimensionais ....................................................... 16
Inicialização de Vetores ........................................................................... 17
Diretiva #define ........................................................................................ 19
Vetores de Caracteres .............................................................................. 21
Funções para Manipulação de Strings ................................................... 22
Exercícios .................................................................................................. 26
Matrizes Bidimensionais ......................................................................... 27
Exercícios .................................................................................................. 30

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 2
Introdução à Programação – Introdução à Linguagem C –

Comandos Condicionais Aninhados

→ Muitas vezes, os programas poderão envolver várias condições


excludentes (if...else...if...).

Sintaxe: if (condição 1) {
bloco de código 1
}
else if (condição 2){
bloco de código 2
}
...
else if (condição n){
bloco de codigo n
}
else{
bloco de código
}

→ Se condição 1 for verdadeira bloco de código 1 será


executado.
→ Caso contrário, as condições serão avaliadas sucessivamente até
que uma seja verdadeira ou chegue ao último else, onde o bloco de código
será executado.
→ Observe que apenas um bloco de código será executado.

Exemplo 1: Ler um número inteiro e mostrar se é menor que 200,


maior que 500 ou está entre 200 e 500.

#include <stdio.h>
int main()
{ int n;

printf("Inteiro: ");
scanf("%d", &n);

if (n < 200){
printf("Menor que 200.\n");
}
else if (n > 500) {
printf("Maior que 500.\n");
}
else{
printf("Entre 200 e 500.\n");
}

}
© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 3
Introdução à Programação – Introdução à Linguagem C –

Exemplo 2: Ler três números inteiros e imprimir o maior valor lido


(suponha números diferentes).

#include <stdio.h>
int main()
{ int a, b, c;
printf("Entre com três números inteiros: ");
scanf("%d, %d, %d", &a, &b, &c);
if (a>b && a>c)
{ printf("Maior: %d.\n", a);
}
else if(b>c){
printf("Maior: %d.\n", b);
}
else{
printf("Maior: %d.\n", c);
}
}

Exercício 1: Escreva um programa que leia um número inteiro e imprima


uma das mensagens: “Maior que 20”, “Igual a 20” ou “Menor que 20”.

Exercício 2: Ler a matrícula e as notas V1 e V2 de um aluno. Imprima a


matrícula, as notas e a média aritmética do aluno e uma das mensagens:

-“Aprovado”, se a média for maior que 6.0;


-“Reprovado” se a média for menor que 4.0;
-“Fazer VS” caso contrário.

Exemplo 3 (leitura de caractere após um valor numérico): Ler a


idade e o sexo de uma pessoa e imprime a idade e o sexo caso a pessoa seja
do sexo masculino.

#include <stdio.h>
int main()
{ int idade;
char sexo;

printf("Idade: ");
scanf("%d", &idade);

//Esvazia o buffer de entrada antes de ler o caractere


fgetc(stdin);

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 4
Introdução à Programação – Introdução à Linguagem C –

printf("Sexo (M ou F): ");


scanf("%c", &sexo);

if (sexo=='m' || sexo=='M'){
printf("%d - Sexo masculino.", idade);
}
else if (sexo=='f' || sexo=='F'){
printf("Sexo feminino .\n");
}
}

Seleção de Múltipla Escolha

→ switch…case é uma estrutura que simplifica o programa no uso


de decisão de múltiplos blocos quando a expressão de controle (condição)
envolver tipos int ou char.
→ O resultado da expressão é comparado ao valor de cada um dos
rótulos de cada case e os comandos são executados a partir desse rótulo.

Sintaxe: switch(expressão)
{ case constante1:
bloco de código 1;
break;
case constante2:
bloco de código 2;
break;

...

case constanteN:
bloco de código n;
break;
default:
bloco de código;

Onde:
- expressão é do tipo int ou char;
- constante1, …, constanteN são constantes (variáveis ou valores)
int ou char;

→ O uso do comando break forçará a saída do comando switch e a


execução do próximo comando do programa.
© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 5
Introdução à Programação – Introdução à Linguagem C –

→ A cláusula default forçará a execução do bloco de código se


nenhum dos outros casos (case)for executado.

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 6
Introdução à Programação – Introdução à Linguagem C –

Exemplo 1: Ler um número real e executar uma das opções abaixo:


1 – Dobro;
2 – Metade;
3 – Quadrado.
Para qualquer outra opção, imprimir “Opção inválida”.

#include <stdio.h>
#include <math.h> //compilar com gcc nome -lm
int main()
{ int op;
float n;
printf("\nNúmero real: ");
scanf("%f", &n);
printf("\n\n1 - Dobro.\n2 - Metade.\n3 - Quadrado.\n\
nOpção: ");
scanf("%d", &op);

switch (op)
{ case 1:
printf("\nDobro = %f.\n\n", n*2);
break;
case 2:
printf("\nMetade = %f.\n\n", n/2);
break;
case 3:
printf("\nQuadrado=%f.\n\n", pow(n,2));
break;
default:
printf("\nOpção inválida.\n\n");
}
}

Exercício: Ler dois inteiros e mostrar as opções:


1 – Soma;
2 – Subtração;
3 – Produto;
4 – Divisão inteiro;
5 – Divisão real;
6 – Resto da divisão;

Após a seleção da opção desejada, imprima o resultado na tela. Para


qualquer outra opção imprima “Opção inválida”.

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 7
Introdução à Programação – Introdução à Linguagem C –

Exemplo 2: Ler o código de um determinado produto e mostrar a sua


classificação. Utilizar a seguinte referência:

Código Classificação
1 Alimento não perecível
2, 3 ou 4 Alimento perecível
5 ou 6 Vestuário
7 Higiene pessoal
8, 9 ou 10 Limpeza e utensílios domésticos
Qualquer outro código Inválido

#include <stdio.h>
int main()
{ int op;
printf("\nEscolha o código do produto: ");
scanf("%d", &op);

switch (op)
{ case 1:
printf("\nAlimento não perecível.\n\n");
break;
case 2: //sem break = união dos cases
case 3:
case 4:
printf("\nAlimento perecível.\n\n");
break;
case 5:
case 6:
printf("\nVestuário.\n\n");
break;
case 7:
printf("\nHigiêne pessoal.\n\n");
break;
case 8:
case 9:
case 10:
printf("\nLimpeza e utensílios domésticos.\
n\n");
break;
default:
printf("\nOpção inválida.\n\n");
}
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 8
Introdução à Programação – Introdução à Linguagem C –

Exercícios

1 – Escreva um programa que leia três números inteiros A, B e C,


calcule e imprima o valor da seguinte expressão:
D = (R + S)/2, onde R = (a+b)^2 e S = (B + C)^2

2 – Escreva um programa que leia um número real e mostre as


opções abaixo:
a – Calcula raiz quadrada;
b – Calcula a raiz cúbica;
c – Calcula o quadrado;

Após a seleção da opção, imprima o resultado. Para qualquer outra


opção imprima a mensagem “Opção Inválida”.

3 – Escreva um programa que leia a média de um aluno e imprima o


valor de seu conceito segundo a tabela abaixo:

Média Conceito
De 0.0 à 4.9 D
De 5.0 a 6.9 C
De 7.0 a 8.9 B
De 9.0 a 10.0 A

4 – Escreva um programa que leia o raio R de uma esfera e calcule o


volume e a área.
V = 4/3*pi*r^3

A = 4*pi*r^2

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 9
Introdução à Programação – Introdução à Linguagem C –

Comando de Repetição for

→ É a estrutura de repetição mais simples e é usada para repetir um


ou vários comandos quantas vezes forem necessárias.
→ É a estrutura mais indicada quando o número de repetições for
conhecido.
→ O controle do número de repetições é feito através de uma variável
contadora.

Sintaxe: for(inicialização; condição; incremento)


{ bloco de código
}

Onde:
- inicialização é uma expressão que contém o valor inicial da
variável contadora e só é executada uma vez no início.
- condição é uma expressão lógica e/ou relacional de controle de
repetição.
- bloco de código é o conjunto de instruções a ser executado.

Exemplo 1: Imprimir os números de 0 a 100.

#include <stdio.h>
int main()
{
int i; //variável de controle (índice do laço)
for(i=0; i<=100; i++) //crescente
{ printf("%d \t", i);
}
printf("\n");
}

Exemplo 2: Imprimir os números de 100 a 0.

#include <stdio.h>
int main()
{ int i;
for(i=100; i>=0; i--) //decrescente
{ printf("%d \t", i);
}
printf("\n");
}
© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 10
Introdução à Programação – Introdução à Linguagem C –

Exemplo 3: Imprimir os números pares entre 0 e 100, inclusive.

#include <stdio.h>
int main()
{ int i;
for(i=0; i<=100; i+=2)
{ printf("%d \t", i);
}
printf("\n");
}

Exemplo 4: Imprimir os números ímpares entre 0 e 100, inclusive.

#include <stdio.h>
int main()
{ int i;
for(i=1; i<=100; i+=2)
{ printf("%d \t", i);
}
printf("\n");
}

Exemplo 5: Ler 10 números inteiros e imprimir o valor do dobro de


cada número caso o número seja par.

#include <stdio.h>
int main()
{ int i, n;
for(i=0; i<10; i++)
{ printf("Entre com um número: ");
scanf("%d", &n);
if(n%2==0){
printf("%d.\n",n*2);
}
else {
printf("Impar.\n");
}
}
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 11
Introdução à Programação – Introdução à Linguagem C –

Exemplo 6: Ler 10 números reais e para cada número testar: se o


número for positivo, imprimir a raiz quadrada, senão, imprimir o quadrado
do número.

#include <stdio.h>
#include <math.h>
int main()
{
int i;
float n;
for(i=0; i<10; i++)
{ printf("Entre com um número real: ");
scanf("%f", &n);
if(n>0){
printf("Raiz = %.2f.\n", sqrt(n));
}
else if (n<0){
printf("Quadr = %.2f.\n", pow(n,2));
}
else {
printf("Zero ;D\n");
}
}
}

Exercícios

→ Faça os exercícios da Lista 2.

→ Procure revisar os seus algoritmos em Portugol correspondentes a


estes exercícios e tente reescrevê-los em linguagem C, este é o
processo normal de escrita de um bom programa.

→ Comece escrevendo os programas no caderno, só depois passe para


o seu editor para então os compilar e executar, anotando no caderno
os possíveis erros e correções.

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 12
Introdução à Programação – Introdução à Linguagem C –

Contadores e Acumuladores

→ Contador é uma variável usada para contar o número de vezes


que um certo cálculo ou bloco de comandos é executado, ou seja, calcular
uma certa quantidade.

Exemplo 1 (contador): Ler 10 números inteiros e contar quantos


pares foram informados.

#include <stdio.h>
int main()
{ int i, n, cont;

//para contar em loop é necessário


//inicializar o contador
cont = 0;

for( i = 0 ; i < 10; i++)


{ printf("\nInteiro: ");
scanf("%d", &n);

if( n % 2 == 0) //se for par


cont++; //conta (incrementa o contador)
}

printf("\nInformados %d pares.", cont);


}

→ Acumulador é uma variável usada para guardar a soma dos


conteúdos ou valores de outras variáveis.

Exemplo 2 (acumulador): Mostrar a soma dos inteiros de 0 a 100.

#include <stdio.h>
int main()
{ int i, soma;

soma=0; //necessário inicializar acumulador


for( i=0 ; i<=100 ; i++)
soma = soma + i; //soma ou acumula

printf("\nSoma = %d.\n\n", soma);


}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 13
Introdução à Programação – Introdução à Linguagem C –

Exercício: Ler 10 inteiros. Exibir a soma dos positivos e a


quantidade dos negativos.

Comando de Repetição while

→ O comando while repete o bloco, enquanto a condição for


verdadeira.
→ Primeiro, a condição é testada. Se for verdadeira, o bloco é
executado.
→ Se for falsa logo no início, o bloco nunca será executado.
→ CUIDADO: As variáveis usadas na condição devem ser
inicializadas antes do while.
→ CUIDADO: O valor da variável de controle da condição deve ser
alterado dentro do bloco de código. Caso contrário, entrará em loop
infinito quando for executado.

Sintaxe: while( condição )


{ bloco de código
}

Onde:
- condição é uma expressão relacional e/ou lógica (o resultado
deverá ser verdadeiro ou falso).

Exemplo 1: (mostrar os inteiros de 0 a 100)


#include <stdio.h>
int main()
{ //inicialização da variável de controle
int i = 0;

while( i <= 100 )


{ printf("%d \t ", i);
i++; //muda o valor da variável da condição
}

printf("\n\n");
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 14
Introdução à Programação – Introdução à Linguagem C –

Exemplo 2: (mostrar os inteiros de 100 a 0)


#include <stdio.h>
int main()
{ //inicialização da variável de controle
int i = 100;

while( i >= 0 )
{ printf("%d \t ", i);
i--; //muda o valor da variável da condição
}
printf("\n\n");
}
Exercício 1: Ler vários números inteiros e imprimir o triplo do
número caso seja positivo. Caso contrário, imprimir o dobro do número. O
programa encerra quando for digitado o valor 0 (zero).

Exercício 2: Ler vários números inteiros positivos. Imprimir


quantos números foram digitados e a soma dos números. Condição de
parada: 0 ou negativo.

Comando de Repetição do...while

→ Parecido com o repita, do Portugol, onde o bloco é executado


pelo menos uma vez, pois testa a condição no final.
→ Executa o bloco uma vez e repete o bloco enquanto a condição
for verdadeira.

Sintaxe: <inicialização variável de controle>


do
{
bloco de código
} while ( condição );

Exemplo 1: Ler 10 números reais e imprimir o quadrado de cada um.

#include<stdio.h>
int main()
{ int i=10; //inicialização
float n;

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 15
Introdução à Programação – Introdução à Linguagem C –

do
{
printf(“\n Real: ”);
scanf(“%f”, &n);
printf(“\t quadrado= %f”, n*n);
i--; //muda a variável de controle
} while ( i > 0 ); //verdadeiro = repete do
}

Exercício: Ler um inteiro e mostrar as seguintes opções:


1-dobro
2-cubo
3-raiz quadrada
4-sair
→Use do...while testando se a opção não é a de saída.
→Use switch...case e mostre cada resultado de acordo com cada
opção até que seja escolhida a opção de sair.

Operador Condicional ou Ternário

→ O operador ternário ? é usado em expressões condicionais.


→ Necessita de três operandos e seu uso poderá simplificar o comando
if...else simples.

Sintaxe: condição ? expressão1 : expressão2;

Leia: “Se condição for verdadeira então expressão1, senão


expressão2.”

Exemplo:
int a = 200, b = 100, c;
c = ( a > b ) ? a : b;
//a é maior que b, então c = 200

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 16
Introdução à Programação – Introdução à Linguagem C –

Exemplo 1: Ler dois inteiros e imprimir o menor.

#include <stdio.h>
int main()
{ int a, b, c;
printf("\n\nInforme dois inteiros: ");
scanf("%d, %d", &a, &b);

c = ( a < b ) ? a : b;

printf("\n\nMenor = %d.\n\n", c);


}

Exemplo 2: Ler três inteiros e imprimir o menor.

#include <stdio.h>
int main()
{ int a, b, c, d;
printf("Entre com três números inteiros: ");
scanf("%d, %d, %d", &a, &b, &c);

d = ( a<b && a<c ) ? a : ( b<c ) ? b : c;

printf("\n\nMenor = %d\n\n", d);


}

Exemplo 3: Ler dois inteiros e imprimir o menor.


#include <stdio.h>
int main()
{ int a, b;
printf("\n\nInforme dois inteiros: ");
scanf("%d, %d", &a, &b);

//uso no printf para selecionar a impressão


printf("\n\nMenor = %d.\n\n", (a<b)? a : b);
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 17
Introdução à Programação – Introdução à Linguagem C –

Exercícios

→ Faça os exercícios da Lista 2 reescrevendo versões das soluções


com while e do...while sempre que possível.

→ Procure revisar os seus algoritmos em Portugol correspondentes a


estes exercícios e tente reescrevê-los em linguagem C, este é o
processo normal de escrita de um bom programa.

→ Comece escrevendo os programas no caderno, só depois passe para


o seu editor para então os compilar e executar, anotando no caderno
os possíveis erros e correções.

Vetores ou Arrays Unidimensionais

→ Um vetor é um conjunto de variáveis referenciado por um único


nome, onde cada variável tem o mesmo tipo e é acessada através de um
índice.
→ O tamanho, na declaração, e os índices, nos acessos aos valores, são
escritos sempre entre colchetes.
→ Em C, o índice começa pelo 0 (zero).

Declaração de um vetor:

tipo nome[tamanho];

Exemplo: int vetor[10];

índices 0 1 2 3 4 5 6 7 8 9
vetor

→ Aloca memória para armazenar 10 inteiros e declara a variável


vetor como um vetor de 10 elementos.

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 18
Introdução à Programação – Introdução à Linguagem C –

→ Para acessar um determinado elemento do vetor, deve-se chamar o


elemento pelo nome da variável e pelo seu índice (entre colchetes).
Exemplo: vetor[0] = 7;
...
vetor[9] = 3;

Exemplo 1: Ler e imprimir um vetor com 5 inteiros.

#include <stdio.h>
int main()
{ int vet[5], i; //declara vetor vet tamanho 5

printf("\n\nLeitura:\n");
for(i=0; i<5; i++)
{ printf("\nInforme o elemento %d: ", i);
scanf("%d", &vet[i]); //vet posição i
}

printf("\n\nImpressao:\n\n");
for(i=0; i<5; i++)
printf("%d\t", vet[i]);

printf("\n\n");
}

Inicialização de Vetores

→ Os vetores ocupam espaço na memória.


→ A inicialização pode ser feita através de leitura ou atribuição de
valores.

Exemplo: Declaração sem inicialização.

float v[20]; //reserva espaço para 20 elementos float

Exemplo: Declaração com inicialização, para pequenos vetores.

int numDias[12] ={31,28,31,30,31,30,31,31,30,31,30,31};

→ Será inicializada uma variável chamada numDias contendo o


número de dias de cada mês do ano.

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 19
Introdução à Programação – Introdução à Linguagem C –

→ Nestes casos, o número de elementos pode ser omitido:

Exemplo: Na inicialização de pequenos vetores o tamanho está


implícito no número de elementos.

int numDias[] ={31,28,31,30,31,30,31,31,30,31,30,31};


→ É possível declarar variáveis para vetores do mesmo tipo numa
única declaração.

Exemplo: int x[10], y[20], z[30];

Exercício: O que faz o programa abaixo?

#include <stdio.h>
int main()
{ int i, v[10];

for(i=0; i<10; i++)


v[i] = 0;

printf("Elementos do vetor:\n\n");
for(i=0; i<10; i++)
printf("%d\t", v[i]);

printf("\n");
}

Resposta: Atribui zero para todas as posições do vetor e o imprime.

Exemplo 1: Ler um vetor com 10 elementos inteiros. Imprimir o vetor


na ordem inversa.

#include <stdio.h>
int main()
{ int i, x[10];

printf("\n\nLeitura:\n\n");
for(i=0; i<10; i++) //incrementando
{ printf("Digite um valor inteiro: ");
scanf("%d", &x[i]);
}
printf("\nInverso:\n");
for(i=9; i>=0; i--) //decrementando
printf("%d\t", x[i]); //apenas imprime invertido
//CUIDADO: desta forma NÃO gera um novo vetor!!

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 20
Introdução à Programação – Introdução à Linguagem C –

printf("\n\n");
}

Exemplo 2: Ler e imprimir um vetor com 10 posições. Imprimir


também a soma e a média dos elementos do vetor.

#include <stdio.h>
int main()
{ int x[10], soma=0, i;

printf("\nLeitura:\n\n");
for(i=0; i<10; i++)
{ printf("\nElemento %d: ", i);
scanf("%d", &x[i]);
}

printf("\n\nImpressao: "); //e soma


for(i=0; i<10; i++)
{ printf("%d\t", x[i]);
soma += x[i];
}

printf("\nSoma = %d", soma);


printf("\nMédia = %.2f\n", (float)soma/10);
}

Exercício: Ler e imprimir um vetor com 10 números inteiros. Logo


após, calcular e imprimir:
– A média entre os valores dos elementos do vetor.
– A quantidade de pares e a quantidade de ímpares.

Diretiva #define

→ A diretiva #define do preprocessador é usada para definir uma


constante simbólica.
→ Uma constante simbólica é um identificador que é substituído por
um valor pelo preprocessador na linguagem C, antes do programa ser
compilado.
→ Quando é preprocessado, todas as ocorrências da constante
simbólica são substituídas pelo valor ou texto de substituição.

Exemplo: #define MAX 10

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 21
Introdução à Programação – Introdução à Linguagem C –

Exemplo 1: Ler e imprimir dois vetores a e b com 10 elementos


inteiros cada. Logo após, gerar o vetor soma e o vetor dif a partir dos dois
vetores lidos.

#include <stdio.h>
#define MAX 10 //tamanho dos vetores
int main()
{ int i, a[MAX], b[MAX], soma[MAX], dif[MAX];

printf("\n\nLeitura:");
for(i=0; i<MAX; i++)
{ printf("\nElemento a[%d]: ", i);
scanf("%d", &a[i]);
}

for(i=0; i<MAX; i++)


{ printf("\nElemento b[%d]: ", i);
scanf("%d", &b[i]);

//vetores soma e diferença


soma[i] = a[i] + b[i];
dif[i] = a[i] - b[i];
}

//impressões
printf("\n\nVetor a: ");
for(i=0; i<MAX; i++)
printf("%d\t", a[i]);

printf("\nVetor b: ");
for(i=0; i<MAX; i++)
printf("%d\t", b[i]);

printf("\nVetor soma: ");


for(i=0; i<MAX; i++)
printf("%d\t", soma[i]);

printf("\nVetor diferença: ");


for(i=0; i<MAX; i++)
printf("%d\t", dif[i]);
}

printf("\n\n\n");
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 22
Introdução à Programação – Introdução à Linguagem C –

Exercício: Ler e imprimir dois vetores de inteiros de mesmo


tamanho (use #define para criar a constante com o tamanho). Logo após,
gerar e imprimir:
– O vetor produto entre os vetores lidos;
– O valor do produto interno entre eles;

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 23
Introdução à Programação – Introdução à Linguagem C –

Vetores de Caracteres

→ Um vetor de caracteres, também conhecido como string, é usado


para manipular textos, palavras, nomes, frases, etc.
→ Cada elemento do vetor também pode ser acessado
individualmente através de colchetes.
→ Uma variável do tipo string é declarada como um vetor de
caracteres.

Sintaxe: char nome_vetor[tamanho];

Exemplo: char nome[80];

→ Esta declaração cria uma variável nome como uma string ou vetor
de caracteres, permitindo um comprimento de 79 caracteres, mais o
caractere de fim de string ‘\0’.

nome
\0
0 1 2 ... 78 79

→ Sempre que o computador encontra qualquer valor entre aspas


duplas ele reconhece que se trata de uma string constante, ou seja, os
caracteres entre aspas mais o caractere nulo ‘\0’.

Exemplo 2: char nome[5] = ”Pedro”;


→ DECLARAÇÃO INVÁLIDA!!!

→ A última posição deve ser reservada para o caractere ‘\0’, então, só


é possível utilizar 4 caracteres na string acima, ou seja, tamanho - 1
caracteres.
→ Está errado atribuir 5 caracteres a um vetor de caracteres de
tamanho 5 (não se deve esquecer o espaço para caractere de fim de string).

Exemplo 3: char nome[5] = ”Caio”;


→ Essa sim, é uma declaração válida!!!

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 24
Introdução à Programação – Introdução à Linguagem C –

Funções para Manipulação de Strings

1 – gets (biblioteca stdio.h)


→ Lê uma string via teclado.
→ Este comando gera uma warning (aviso), ignore o aviso.

Sintaxe: gets(nome_vetor);

Exemplo:

#include <stdio.h>
int main()
{ char nome[50];
printf("\nSeu nome: ");
gets(nome); //%s para strings
printf("\n\nOlá, %s !\n\n",nome);
//%s para strings
}

2 – strcpy (biblioteca: string.h)


→ Copia a string-origem para a string-destino.

Sintaxe: strcpy(destino, origem);

Exemplo:

#include <stdio.h>
#include <string.h>
int main()
{ char s1[100], s2[100], s3[100];
printf("\nInforme uma string qualquer: ");
gets(s1);
//copiar o valor de s1 para s2
strcpy(s2, s1);
//copiar texto entre aspas para s3
strcpy(s3,"string informada: ");
//mostrar
printf("\n\n%s %s\n\n",s3 ,s2);
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 25
Introdução à Programação – Introdução à Linguagem C –

3 – strcat (biblioteca string.h)


→ Concatena duas strings.
→ A string origem ficará inalterada e será anexada ao final da
string destino.
→ Mas cuidado, o tamanho da string destino tem que ser suficiente
para conter a string resultado da concatenação.

Sintaxe: strcat(destino, origem);

Exemplo: (fonte: www.cplusplus.com)

#include <stdio.h>
#include <string.h>
int main()
{ char s1[100], s2[100];
printf("\nInforme uma string: ");
gets(s1);
strcpy(s2,"string informada: ");
strcat(s2, s1); //concatena
printf("\n\n%s\n\n", s2);
}

4 – strlen (biblioteca: string.h)


→ Retorna o tamanho da string fornecida, sem contar o caractere
‘\0’.
Sintaxe: int nomeVar = strlen(string_nome);

Exemplo:

#include <stdio.h>
#include <string.h>
int main()
{ char s1[100];
int tam;
printf("\nInforme uma string qualquer: ");
gets(s1);
tam = strlen(s1);
//mostrar

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 26
Introdução à Programação – Introdução à Linguagem C –

printf("\n\nA string \"%s\" tem %d caracteres.\n\n", s1,


tam);
}

5 – strcmp (biblioteca string.h)


→ Compara duas strings. Se as duas forem idênticas, a função
retorna 0 (zero), se forem diferentes, a função retorna um valor diferente de
zero.

Sintaxe: strcmp(destino, origem) //comparação

Exemplo:

#include <stdio.h>
#include <string.h>
int main()
{ char s1[100], s2[100];
printf("\nInforme uma string: ");
gets(s1);
gets(s2);

//comparando
if( strcmp(s1, s2) ) //se iguais → 0 (executa o else)
printf("\nDiferentes.\n");
else
printf("\nIguais.\n");
}

6 – toupper (biblioteca: ctype.h)


→ Retorna o caractere convertido para maiúsculo.

Sintaxe: char nome = toupper (caractere);

Exemplo:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 27
Introdução à Programação – Introdução à Linguagem C –

int main()
{ char s[100];
int i, tam;
printf("\nInforme uma string qualquer: ");
gets(s);
tam = strlen(s);

//maiusculas
for(i=0; i<tam; i++)
s[i] = toupper(s[i]); //um por um

//mostrar
printf("\n\n%s\n\n", s);
}

7 – tolower (biblioteca: ctype.h)


→ Retorna o caractere convertido para minúsculo.

Sintaxe: char nome = tolower (caractere);

Exemplo:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{ char s[100];
int i, tam;
printf("\nInforme uma string qualquer: ");
gets(s);
tam = strlen(s);

//minusculas
for(i=0; i<tam; i++)
s[i] = tolower(s[i]); //um por um

//mostrar
printf("\n\n%s\n\n", s);
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 28
Introdução à Programação – Introdução à Linguagem C –

Exercício Resolvido: Escreva um programa que execute as seguintes


ações, na ordem abaixo:
-Ler duas strings de no máximo 10 caracteres,
-Mostrar o tamanho de cada uma,
-Copiar a primeira para uma terceira string e imprimir esta terceira,
-Comparar as duas lidas e mostrar uma mensagem "iguais" ou
"diferentes",
-Concatenar a segunda lida para a terceira string e mostrar,
-Converter a terceira string para maiúsculas e mostrar.
-Converter a terceira string para minúsculas e mostrar.

Solução:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{ char s1[0], s2[10], s3[20];
int i, tam1, tam2, tam3;
//leitura
printf("\nInforme uma string qualquer: ");
gets(s1);
printf("\nInforme outra string qualquer: ");
gets(s2);
//tamanhos
tam1 = strlen(s1);
tam2 = strlen(s2);

//mostrar tamanhos
printf("\n\n%s = %d caracteres", s1, tam1);
printf("\n%s = %d caracteres", s2, tam2);

//copiar o valor de s1 para s3


strcpy(s3, s1);

//mostrar copiada
printf("\ns3 (copiada) = %s", s3);
//comparar
if( strcmp(s1, s2) ) //iguais → 0 → else
printf("\ns1 e s2 são diferentes.");
else
printf("\ns1 e s2 são iguais.");

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 29
Introdução à Programação – Introdução à Linguagem C –

//concatenar o valor de s2 com s3


strcat(s3, s2);

//mostrar concatenada
printf("\ns3 (concatenada) = %s", s3);

//maiusculas
tam3 = strlen(s3);
for(i=0; i<tam3; i++)
s3[i] = toupper(s3[i]);

//mostrar maiusculas
printf("\nMaiúsculas: %s\n\n", s3);
//minusculas
for(i=0; i<tam3; i++)
s3[i] = tolower(s3[i]);

//mostrar minusculas
printf("\nMinúsculas: %s\n\n", s3);
}

Exercícios

→ Faça os exercícios da Lista 2.

→ Procure revisar os seus algoritmos em Portugol correspondentes a


estes exercícios e tente reescrevê-los em linguagem C, este é o
processo normal de escrita de um bom programa.

→ Comece escrevendo os programas no caderno, só depois passe para


o seu editor para então os compilar e executar, anotando no caderno
os possíveis erros e correções.

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 30
Introdução à Programação – Introdução à Linguagem C –

Matrizes Bidimensionais

→ Uma matriz é um vetor cujos elementos são outros vetores.

Sintaxe:

tipo nome_matriz [num_linhas][num_colunas];

Exemplos:
int matriz[5][4]; //5 lin, 4 col
int a[5][3]; //5 lin, 3 col
float b[3][5]; //3 lin, 5 col

Exemplo com Esboço Gráfico:


int m[4][5]; //4 lin, 5 col

m 0 1 2 3 4

0
1
2
3

Exemplo 1: Ler e imprimir uma matriz de inteiros 3x3.

#include <stdio.h>
int main()
{ int a[3][3], l, c;
//leitura
for(l=0; l<3; l++) //linhas
for(c=0; c<3; c++) //colunas
{ printf("\n[%d][%d]:", l, c);
scanf("%d",&a[l][c]);
}
//impressão
printf("\n\nMatriz lida: \n\n");
for(l=0; l<3; l++)
{ for(c=0; c<3; c++)
{ printf("\t%d", a[l][c]);
}
printf("\n"); //prox linha da matriz
© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 31
Introdução à Programação – Introdução à Linguagem C –

}
printf("\n\n");
}
Exercício Resolvido 1: Escreva um programa que leia e imprima
uma matriz 3x4. Logo após, gere a matriz dobro. No final, imprima a matriz
dobro.

Solução:
#include <stdio.h>
int main()
{ int a[3][4], dobro[3][4], l, c;
//leitura
for(l=0; l<3; l++)
for(c=0; c<4; c++)
{ printf("\n[%d][%d]:", l, c);
scanf("%d", &a[l][c]);
}

//impressão
printf("\n\nMatriz lida: \n\n");
for(l=0; l<3; l++)
{ for(c=0; c<4; c++)
printf("\t%d", a[l][c]);
printf("\n"); //prox linha da matriz
}

//gerar matriz dobro e imprimir


printf("\n\nMatriz dobro: \n\n");
for(l=0; l<3; l++)
{ for(c=0; c<4; c++)
{ dobro[l][c] = 2 * a[l][c];
printf("\t%d", dobro[l][c]);
}
printf("\n"); //prox linha da matriz
}

printf("\n\n");
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 32
Introdução à Programação – Introdução à Linguagem C –

Exercício Resolvido 2: Ler e imprimir duas matrizes 3x2. Calcular


e imprimir a matriz soma.

Solução:
#include <stdio.h>
int main()
{ int a[3][2], b[3][2], soma[3][2], l, c;

//leitura
for(l=0; l<3; l++)
for(c=0; c<2; c++)
{ printf("\na[%d][%d]:", l, c);
scanf("%d", &a[l][c]);
}
for(l=0; l<3; l++)
for(c=0; c<2; c++)
{ printf("\nb[%d][%d]:", l, c);
scanf("%d", &b[l][c]);
}

//impressão
printf("\n\nMatriz A: \n\n");
for(l=0; l<3; l++)
{ for(c=0; c<2; c++)
printf("\t%d", a[l][c]);
printf("\n"); //prox linha da matriz
}

printf("\n\nMatriz B: \n\n");
for(l=0; l<3; l++)
{ for(c=0; c<2; c++)
printf("\t%d", b[l][c]);
printf("\n"); //prox linha da matriz
}

//gerar matriz soma e imprimir


printf("\n\nMatriz Soma: \n\n");
for(l=0; l<3; l++)
{ for(c=0; c<2; c++)
{ soma[l][c] = a[l][c] + b[l][c];
printf("\t%d", soma[l][c]);
}
printf("\n"); //prox linha da matriz
}

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 33
Introdução à Programação – Introdução à Linguagem C –

printf("\n\n");
}
Exercício 1: Ler e imprimir uma matriz 4x4 de inteiros. Logo após ,
imprimir:
-Os elementos da diagonal principal
-Os elementos acima da diagonal principal
-Os elementos abaixo da diagonal principal

Exercício 2: Declare a matriz a[4][4] de inteiros e preencha da


seguinte forma:
a[l][c] = (l * 4) + c + 1

Logo após, imprima a matriz a e a média aritmética dos valores


gerados.

Exercício 3: Leia duas matrizes de inteiros 4x4. Calcule a matriz


produto, seguindo as regras matemáticas, e mostre as três matrizes.

Exercícios

→ Faça os exercícios da Lista 3.

→ Procure revisar os seus algoritmos em Portugol correspondentes a


estes exercícios e tente reescrevê-los em linguagem C, este é o
processo normal de escrita de um bom programa.

→ Comece escrevendo os programas no caderno, só depois passe para


o seu editor para então os compilar e executar, anotando no caderno
os possíveis erros e correções.

© 1999 – 2020 Prof. Dr. Adriano Caminha e Prof. Dra. Vera Lúcia Prudência dos Santos Caminha – ICEx/UFF – Volta Redonda-RJ 34

Você também pode gostar