Você está na página 1de 23

Introdução à programação

Os programas de computador, também conhecidos com software, são constituídos


por uma série de instruções que o computador executa. O processo de definir as
instruções que o computador deve executar é conhecido como programação.
Toda programação obedece a uma sequencia lógica, essa sequencia damos o nome
de algoritmo.
Algoritmo: conjunto das regras e procedimentos lógicos perfeitamente definidos
que levam à solução de um problema em um número finito de etapas.
Quando escrevemos uma programação primeiramente é preciso conhecer o tipo de
linguagem a ser executada, existe diversas linguagem de programação, Assembly,
C, C++, pascal, FORTRAN entre outras, porém a linguagem que vamos trabalhar é o
C++. Além da linguagem temos que observar também o compilador, que é o programa
que montará o programa executável a partir do código fonte, algoritmo construído,
o compilador converte esse código fonte em 0’s e 1’s conhecida como linguagem de
máquina.

Estruturas de um programa em C
Para obter sucesso na programação é preciso seguir corretamente uma estrutura
de programação:
1º Cabeçalho
2º Funções
3º Definição de constantes
4º Inicialização do programa principal
5º Definição das variáveis
6º Desenvolvimento da lógica
7º Finalização do programa.

1º Cabeçalho: é a definição para o compilador da biblioteca a ser utilizada. As


bibliotecas definem um conjunto de instruções que podem ser utilizadas no código
fonte e ser entendida pelo compilador. Caso não seja digitada corretamente a
estrutura de definição, durante o processo de compilação apresentará erro na
instrução que precisaria dessa biblioteca para compilar.
Estrutura:
#include < nome_da_biblioteca.h >

- stdio (standard input output) saídas e entradas padrões. “ #include<stdio.h> ”


diz ao compilador que ele deve incluir o arquivo-cabeçalho stdio.h. Neste arquivo
existem declarações de funções úteis para entrada e saída de dados (std
=standard, padrão em inglês; io = Input/Output, entrada e saída ==> stdio =

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 3
Entrada e saída padronizadas). Toda vez que você quiser usar uma destas funções
deve-se incluir este comando.
Funções do sdtio:
 printf : Exibe no monitor informações de texto.
Estrutura:
printf(“ Texto que aparecerá no monitor”)
 scanf: Espera uma entrada pelo teclado e preenche uma variável com essa
informação.
Estrutura:
scanf(“código_da_variável”,&variável)

-stdlib (standard library é biblioteca padrão em inglês) “ #include<stdlib.h> ”


Ela possui funções envolvendo alocação de memória, controle de processos,
conversões e outras.
Funções do stdlib:

 system(“pause”): força a parada da execução do programa até que uma


tecla seja pressionada exibindo na tela “pressione qualquer tecla para
continuar”.
 system(“cls”): clear screen tem a função de limpar a tela.
 system(“color XY”): altera a cor do plano de fundo e letras do programa
executado sendo X o plano de fundo e Y as letras, podemos usar até 16
cores dadas em hexadecimal:
0 =Preto 6 = Amarelo C = Vermelho claro Lilás
1 = Azul 7 = Branco D = Lilás
2 = Verde 8 = Cinza E = Amarelo claro
3 = Verde-água 9 = Azul claro F = Branco brilhante
4 = Vermelho A = Verde claro
5 = Roxo B = Verde-água claro
Exemplo: system (“color 74”) corresponde ao plano de fundo branco e as letras
vermelhas.
_sleep: Executa uma parada na execução do programa
Estrutura: _sleep(tempo em milissegundos)
-conio
 getch: recebe uma letra do teclado e não mostra na tela.
Variável = getch()
 gets: recebe um string e não mostra na tela, diferente do scanf essa aceita espaço
na hora de pegar uma string, porém está mais sucinto a estouro de memória.
gets(variável);

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 4
 putchar: mostra na tela um caractere.
putchar(variável)
 puts: mostra na tela uma string.
puts(variável)
-math
Funções matemáticas
Trigonométricas
sin ( ): Retorna o valor do seno. Recebe como argumento o valor dos graus em double.
cos ( ): Retorna o valor do co-seno. Recebe como argumento o valor dos graus em double.
tan ( ): Retorna o valor da tangente. Recebe como argumento o valor dos graus em double.
Logaritmicas
log ( ): Retorna o valor do logaritmo na base 2. Exige um argumento do tipo double.
log10 ( ): Retorna o valor do logaritmo na base 10. Exige um argumento do tipo double.
Potências
pow ( ): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo
double, o primeiro é a base e o segundo o expoente. Por exemplo: se quisermos saber o
resultado da operação 210, faríamos pow (2, 10).
sqrt ( ): Retorna o valor da raiz quadrada. Recebe como argumento um double do qual ele
deve extrair a raiz.
-string
Funções de strigs
strcpy: copia a string-origem para a string- destino. Seu funcionamento é semelhante ao
da rotina apresentada na seção anterior.
Estrutura
strcpy (string_destino, string_origem);

strcat: A string de origem permanecerá inalterada e será anexada ao fim da string de


destino.
Estrutura
strcat (string_destino,string_origem);

strlen: A função strlen() retorna o comprimento da string fornecida. O terminador nulo


não é contado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser
um a mais que o inteiro que strlen retorna.
Estrutura
strlen (string);
strcmp: compara a string 1 com a string 2. Se as duas forem idênticas a função retorna
zero. Se elas forem diferentes a função retorna não-zero.
Estrutura
strcmp (string1,string2);

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 5
2º  Funções: São subprogramas, criados pelo programador, que pode ajudar na clareza
e execução do programa principal. É extremamente importante que as funções sejam
declaradas antes da função principal “main”, pois essa é a primeira a ser executada e as
chamadas acontecem justamente nela, e antes da chamada é preciso que exista, na
programação o programa.

Argumentos:
Argumentos são as entradas que a função recebe. É através dos argumentos que passamos
parâmetros para a função.
Para retornamos um valor pela função usamos a função return(argumento), o argumento
será o retorno da função.

3º  Constantes: são dados gravados em memória que de forma alguma podemos alterar
seu valor.
Então, qual a vantagem em ocupar memória com um dado que não podemos mudar?
A diferença está em podermos reduzir números grandes ou dados sem muito significado
em algo simples, fácil de usar e relembrar.
Por exemplo, com uma constante poderemos definir que verdadeiro não será true, mas a
palavra "sim". Outro exemplo: Também podemos definir que o máximo de posições que um
vetor vai ter será 1000, então criamos uma constante chamada "max". Pronto, agora não
precisaremos mais nos lembrar que um vetor terá 1000 posições, basta criar o vetor e no
tamanho dele indicamos max.
Para criarmos uma constante usamos o pré-processador define. Define é um pré-
processador porque todas as constantes devem ser definidas antes do inicio do
programa.

pré-processador comando nome da constante valor


# define CONST 1

Exemplo: #define PI 3,14

Então toda vez que utilizado a palavra PI será como ter utilizado 3,14.

4º  Inicialização do programa principal:


O programa principal é a primeira rotina a ser executada pelo compilador.
Iniciamos utilizando, o tipo da rotina principal, geralmente int main (void) { .

5º  Definição das varáveis: variáveis são espaços reservados na memoria destinados a


alguns dados. Basicamente temos duas classificações s globais e locais, as variáveis
globais são aquelas que utilizam qualquer subrotina ou função, as locais somente podem
ser utilizadas nas funções a que ela pertence.

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 6
NOME TIPO SIMBOLO
inteiro int %d
real float %f
caractere char %c
palavra string %s
ponteiro - %p

Int: São valores inteiros limitados de -32768 à 32767 e ocupam 16 bits na memória.

float: São valores reais limitados de 3,4 E-38 à 3,4 E38 e ocupam 32 bits na memória. Nessa
declaração de variável o valor sempre será mostrado com 6 casas decimais, caso queira-se
reduzir a quantidade de casa decimais usamos entre o símbolo de porcentagem e a letra f
um ponto e a quantidade de casas decimais, exemplo “%.2f” mostrará duas casa decimais.

Char: Armazena um caractere, ou seja, uma letra ocupam 8 bits na memória.

String:é um vetor de caracteres terminado com um caractere nulo. O caractere nulo


é um caractere com valor inteiro igual a zero. (O terminador nulo também pode ser
escrito usando a convenção de barra invertida do C como sendo '\0'. Embora o assunto
vetores seja discutido posteriormente, veremos aqui os fundamentos necessários para
que possamos utilizar as strings. Para declarar uma string, podemos usar o seguinte
formato geral:
char nome_da_string[tamanho];
Isto declara um vetor de caracteres (uma string) com número de posições igual a
tamanho.
Note que, como temos que reservar um caractere para ser o terminador nulo, temos que
declarar o comprimento da string como sendo, no mínimo, um caractere maior que a maior
string que 12 pretendemos armazenar. Vamos supor que declaremos uma string de 7
posições e coloquemos a palavra João nela. Teremos:
J o a o \0 ... células que são inicializadas são as que contêm os caracteres 'J', 'o', 'a', 'o'
e '\0' .
Como as strings são vetores de caracteres, para se acessar um determinado caractere de
uma string, basta "indexarmos", ou seja, usarmos um índice para acessarmos o caractere
desejado dentro da string. Suponha uma string chamada str. Podemos acessar a segunda
letra de str da seguinte forma:
str[1] = 'a';
Por quê se está acessando a segunda letra e não a primeira? Na linguagem C, o índice
começa em zero. Assim, a primeira letra da string sempre estará na posição 0. A segunda
letra sempre estará na posição 1 e assim sucessivamente.
6º  Lógica de programação: é parte onde é desenvolvida a programação.

7º  Finalização: Para finalizar uma programação devemos usar ‘}’ fechando o programa
principal.

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 7
Antes de começarmos a programação vamos observar algumas coisas que serão relevantes
durante o processo:
Constantes de barra invertida
O C utiliza, para nos facilitar a tarefa de programar, vários códigos chamados códigos de
barra invertida. Estes são caracteres que podem ser usados como qualquer outro. Uma
lista com alguns dos códigos de barra invertida é dada a seguir:

código função
\t Tabulação horizontal (tab)
\a Efeito sonoro (beep)
\n Nova linha

Operadores Aritméticos e de Atribuição


Os operadores aritméticos são usados para desenvolver operações matemáticas.

Operador Ação
+ Soma
- Subtração ou troca de sinal
* Multiplicação
/ Divisão
% Resto da divisão
= Atribuição
++ Incremento
-- Decremento
>> Deslocamento de bit para direita
<< Deslocamento de bit para esquerda

O operador / (divisão) quando aplicado a variáveis inteiras, nos fornece o resultado da


divisão inteira; quando aplicado a variáveis em ponto flutuante nos fornece o resultado da
divisão "real". O operador % fornece o resto da divisão de dois inteiros.
Exemplo: y = 5 % 3
Y será igual a 2, pois 5 dividido por 3 é 1, e resto 2.
Essa operação será apenas para variáveis e constantes inteiras.
Os operadores de incremento e decremento são unários que alteram a variável sobre a
qual estão aplicados. O que eles fazem é incrementar ou decrementar, a variável sobre a
qual estão aplicados, de 1. Então
x++;
x--;
são equivalentes a
x=x+1;
x=x-1;

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 8
Estes operadores podem ser pré-fixados ou pós- fixados. A diferença é que quando são
préfixados eles incrementam e retornam o valor da variável já incrementada. Quando são
pós-fixados eles retornam o valor da variável sem o incremento e depois incrementam a
variável. Então, em
x=23;
y=x++;
teremos, no final, y=23 e x=24.

Operadores Relacionais e Lógicos

Operador Ação
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual a
== Igual a
!= Diferente de

É extremamente importante quando for fazer uma comparação de igualdade não colocar
apenas um símbolo de igualdade ”=”, pois isso é um erro gravíssimo de programação, uma
única igualdade é usada para atribuição de valores e duas igualdades ”==” como
comparação.
Operações com valores lógicos

Operador Ação
&& AND (E)
|| OR (OU)
! NOT (NÃO)

Modeladores (Casts)

Um modelador é aplicado a uma expressão. Ele força a mesma a ser de um tipo


especificado. Sua forma geral é:
(tipo)expressão.

Tabela de Precedências do C
Esta é a tabela de precedência dos operadores em C. Alguns (poucos) operadores ainda
não foram estudados, e serão apresentados em aulas posteriores.

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 9
Maior
Precedência () [] ->
! ~ ++ -- . -(troca de sinal)
(cast)
* / %
+ -
<< >>
<<= >>=
== !=
&
^
|
&&
||
= += -= *= /=
Menor precedência

Comentários:
Usa-se // quando o comentário é simples, ou seja, apenas naquela linha será feita o
comentário e na seguinte já faz parte do código executável.
Usa-se /* */ quando queremos fazer um comentário em múltiplas linhas, sendo assim
inicia-se o comentário com /* e para finaliza-lo usamos */ e tudo que estiver entre eles
será considerado como comentário pelo compilador.
Para finalizar um bloco de programação usamos o ponto e vírgula “;”, na maioria das linhas,
exceto as que inicializam instruções.
Vamos testar nossos conhecimentos através de uma programação simples, utilizando os
conceitos aprendidos até aqui.
Exercício 1: Deseja-se fazer um programa onde o usuário digite um valor e o programa
retorne o quadrado desse número vezes 10.
/* Exercício 1
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */

#include <stdio.h> //inclusão da biblioteca padrão de entradas e saídas


#include<stdlib.h> // inclusão da biblioteca padrão

int quadrado(int y){ //função quadrado.


return(y*y*); // retorna o valor passado vezes ele.
} //finaliza a função quadrado

#define DEZ 10 //define DEZ como uma constante de valor 10.

int main (void){ //inicialização da função principal.


int x, res; //cria as variáveis x e res do tipo inteiro.
Centro profissionalizante de Camaçari – CPC
Coordenado técnico/Professor: Joedson Leite Página 10
printf(“Digite um valor”); //informa ao usuário que ele deve digitar um número.
scanf(“%d”,&x); //atribui o valor digitado à variável x.

res=DEZ*quadrado(x); //chama a função quadrado com o valor de x e o retorno


//multiplica por 10 e armazena o valor em res.

printf("A resposta eh: %d \n”, res); // mostra o valor da resposta na tela.

system(“pause”); // aparece na tela a mensagem pressione qualquer tecla para


//continuar.

} //finaliza a função principal

Exemplo 2: Deseja-se fazer um programa onde o usuário informe o primeiro e último e o


programa retorne o último nome seguido do primeiro nome abreviado.
ex: Joedson Santos  Santos, J.

/* Exercício 2
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */

#include <stdio.h> //inclusão da biblioteca padrão de entradas e saídas


#include<stdlib.h> // inclusão da biblioteca padrão

int main (void){ //inicialização da função principal.


char p_nome[20], u_nome[20]; //cria as variáveis p_nome e u_nome do tipo char
//como um vetor de 20 posições cada.

printf(“Digite o primeiro nome”); //informa ao usuário que ele deve digitar o nome.
scanf(“%s”,&p_nome); //atribui o valor digitado à variável p_nome.

printf(“Digite o ultimo nome”); //informa ao usuário que ele deve digitar o ultimo nome.
scanf(“%s”,&u_nome); //atribui o valor digitado à variável u_nome.

printf("%s , %c. ”, u_nome, p_nome[0]); // mostra a mensagem.

system(“pause”); // aparece na tela a mensagem pressione qualquer tecla para


//continuar.

} //finaliza a função principal

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 11
Estruturas de controle de fluxo
 Estruturas de decisão:
- Instrução (IF) ‘se’:
Nessa instrução é testada uma determinada condição, se a condição for verdadeira
executa uma parte da programação, caso não esteja executa outro trecho.

Estrutura:
if (teste lógico) {
caso verdadeiro
}
else{
caso falso
}

O teste logico pode ser uma comparação, por exemplo, “x<2”, “valor==10”, “nome[0]!=’s’ ”. E
neste caso sendo a comparação verdadeira executa o primeiro bloco do if entre as chaves
(caso verdadeiro), senão executa o segundo bloco do else (caso falso).
Exemplo 3: deseja-se fazer um programa onde o usuário digite um valor e o programa
retorne se o valor é ímpar ou par.
Resolução: Para definirmos se um número é par ou ímpar, basta dividimos por 2 se o resto
for 0 o número é par, caso o resto for 1 significa que o número é ímpar.
Então:

/* Exercício 3
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */

#include <stdio.h> //inclusão da biblioteca padrão de entradas e saídas


#include<stdlib.h> // inclusão da biblioteca padrão

int main (void){ //inicialização da função principal.


int valor, resp; //cria a variáveis valor do tipo inteiro
printf(“Digite o valor”); //informa ao usuário que ele deve digitar o valor.
scanf(“%d”,&valor); //atribui o valor digitado à variável valor.
resp = valor%2; //Divide o valor digitado por 2 e armazena o resto em resp.
if(resp==1){ //compara se a variável resp é igual a 1.
printf(“Impar”); //caso resp seja igual a 1 imprime na tela Impar.
} //finaliza o primeiro bloco.
else{ //caso resp não seja igual a 1.
printf(“Par”); //caso resp não seja igual a 1 imprime na tela Par.
} //finaliza o segundo bloco.

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 12
system(“pause”); // aparece na tela a mensagem pressione qualquer tecla para
//continuar.

} //finaliza a função principal

Dentro da estrutura podemos fazer cascata com os if’s:


Exemplo 4: Deseja-se fazer um programa onde o usuário digite a idade e o programa
retorne a classificação etária:
Abaixo de 12 anos (CRIANÇA); Entre 12 e 18 anos (ADOLESCENTE); Entre 19 e 25 anos
(JOVEM); Entre 26 e 45 anos (ADULTO) ;Acima de 45 anos (ANCIÃO).

/* Exercício 4
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */

#include <stdio.h> //inclusão da biblioteca padrão de entradas e saídas


#include<stdlib.h> // inclusão da biblioteca padrão

int main (void){ //inicialização da função principal.


int idade; //cria a variáveis idade do tipo inteiro

printf(“Digite sua idade”); //informa ao usuário que ele deve digitar o valor.
scanf(“%d”,&idade); //atribui o valor digitado à variável idade.

if(idade<12){ //Testa idade se menor que 12


printf(“CRIANCA”); //imprime na tela criançã
}else if((idade>=12)&&(idade<=18)){ //testa idade se entre 12 e 18
printf(“ADOLESCENTE”); // imprime na tela adolescente
} else if((idade>=19)&&(idade<=25)){ //testa idade entre 19 e 25
printf(“JOVEM”); // imprime na tela jovem
}
else if((idade>=26)&&(idade<=45)){ //testa idade entre 26 e 45
printf(“ADULTO”); // imprime na tela adulto
}
else{ //caso nenhuma das outras opções seja verdadeira
printf(“ANCIAO”); // imprime na tela ancião
}

system(“pause”); // aparece na tela a mensagem pressione qualquer tecla para


//continuar.
} //finaliza a função principal

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 13
-Instrução (SWITCH) “chave”

É uma estrutura de decisão parecida com o if, porém ela é mais utilizadas quando se tem
opções pontuais.
Estrutura:
switch(variável de controle){
case ’1’:
bloco 1
break;
case ’2’:
bloco 1
break;
case ’3’:
bloco 1
break;
default:
}

A variável de controle é a variável que receberá o valor do programa para determinar a


opção a ser executada.
O Case determinado de acordo com a variável de controle. Caso a variável assuma valor 1 o
caso ‘1’ será executado, porém se não utilizado o “break” são executados todos os outros
casos após o determinado, o comando break faz com que terminando aquele caso indicado
a execução retorne do switch.
A opção default é executada caso a variável de controle não assuma nenhum valor dos
casos.
Exemplo 5: Deseja-se fazer um programa onde o usuário forneça dois valores e depois
apareça as seguintes opções:
1 – SOMA 3 – MULTIPLICAÇÃO
2 – SUBTRAÇÃO 4 – DIVISÃO
De acordo com a escolha o programa dê a resposta adequada, caso o usuário digite uma
opção que não está apareça a mensagem “opção inválida”.

/* Exercício 5
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */

#include <stdio.h>
#include<stdlib.h>

int main (void){

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 14
float v1, v2, res;
int escolha;

printf(“Digite dois valores”);


scanf(“%f %f”, &v1, &v2); // podemos fazer atribuições múltiplas.

printf (“Escolha a opção desejada \n 1 – SOMA \t 3 – MULTIPLICACAO \n 2 –


SUBTRACAO \t 4 – DIVISAO”); // apesar de está em duas linhas devemos digitar tudo
//em uma só linha.
scanf(“%d”,&escolha);

switch(escolha){
case ‘1’: //caso a escolha for 1
res=v1+v2;
printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal.
break;
case ‘2’: //caso a escolha for 2
res=v1-v2;
printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal.
break;
case ‘3’: //caso a escolha for 3
res=v1*v2;
printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal.
break;
case ‘4’: //caso a escolha for 4
res=v1/v2;
printf(“ A soma eh %.2f “,res); // aparece a resposta com duas casas decimais.
break;
default: //Caso a nenhum dos casos seja escolhido.
printf(“OPCAO INVALIDA”);
}
system(“pause”);
}

Inicialização de variáveis:
int x=10;
char letra = ‘j’
float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 };
int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
char str [10] = { 'J', 'o', 'a', 'o', '\0' };
char str [10] = "Joao";
char str_vect [3][10] = { "Joao", "Maria", "Jose" };
 Estrutura de repetição (laços):

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 15
- Instrução (FOR) “para”
É usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que
se possa ter um bom controle sobre o loop.
Estrutura:
for (inicialização; condição; incremento){
bloco repetido
}
Inicialização é o valor inicial da variável.
A condição será o teste lógico que fará a execução permanecer no laço.
Incremento é de quanto em quanto o valor inicial será acrescido até atingiro o limite do
teste lógico e parar a execução.
Exemplo 6: Deseja-se fazer um programa em que o usuário digite um valor positivo e o
programa retorne todos os valores pares de 0 até o valor digitado.

/* Exercício 6
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */

#include <stdio.h>
#include<stdlib.h>

int main (void){


int limite, x;
printf(“digite um numero positivo”);
scanf(“%d”,&limite);
for(x=0; x <= limite; x=x+2){
printf(“ %d \n”,x);

}
system(“pause”);
}

-Instrução (WHILE) “enquanto”


Essa instrução faz-se um teste, caso o teste seja verdadeiro é executado o laço ao final
do laço é feito novamente o teste e repetido enquanto a condição for verdadeira, a partir
do momento que se tornar falsa o laço deixará de ser repetido.
Estrutura :
while (condição){
bloco do laço
}

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 16
Exemplo 7: Deseja-se fazer um programa onde é perguntado ao usuário se ele deseja
continuar o programa caso ele responda (s) sim o programa retorna a perguntar caso diga
(n) não ele sai da programação.

/* Exercício 7
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */

#include <stdio.h>
#include<stdlib.h>
#include<conio.h> //biblioteca para usar o comando getch
int main(void){
char escolha;
escolha='s'; //atribuímos para o programa ser executado a primeira vez.
while(escolha=='s'){ //compara o valor
printf("Deseja continuar \n 's' - sim ou 'n' -nao");
escolha=getch(); //pega um caractere e não mostra na tela.
}
system("pause");
}

OBS:. Para pegar o caractere s ou n usou getch ao invés de usar scanf, isso porque o
comando scanf não funciona bem no compilador DEV C++, e para usa-lo incluímos a
biblioteca conio.
-Instrução (DO...WHILE) “execute enquanto”
Testa a condição e, se esta for verdadeira, volta para a declaração. A grande novidade no
comando do...while é que ele, ao contrário do for e do while, garante que a declaração será
executada pelo menos uma vez.
Um dos usos da estrutura do...while é em menus, nos quais você quer garantir que o valor
digitado pelo usuário seja válido.
Saltos incondicionais:
goto: essa instrução quando executada da um salto para o rótulo indicado. Não é
aconselhável se utilizar o goto durante a programação, pois essa instrução torna o
programa confuso.
O rótulo é um marcador que você pode utilizar o nome que quiser seguido de dois-pontos
“:”.
Estrutura

goto pulo;
printf(“não mostrara isso na tela”);
pulo:

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 17
Vetores e matrizes:
Vetores são variáveis que comportam mais de um campo, índices, como vimos em string
que é um vetor de caracteres. Declaramos o tipo a variável e o [tamanho].
Exemplo, char nome[20], onde significa a variável ‘nome’ que um vetor com 20 posições
válidas de 0 à 19 e a posição 20 recebe o fim de arquivo EOF “\0”.
Já as matrizes são um conjunto de vetores na mesma variável, vetor bidimensional,
tridimensional...
Sendo assim temos que fornecer as informações de mais de uma dimensão, exemplo, int
valor [10][20], neste caso à variável “valor” possui 10 linhas e 20 colunas .
É muito importante ressaltar que, nesta estrutura, o índice da esquerda indexa as linhas e
o da direita indexa as colunas. Quando vamos preencher ou ler uma matriz no C o índice
mais à direita varia mais rapidamente que o índice à esquerda.
Ponteiros
O C é altamente dependente dos ponteiros. Para ser um bom programador em C é
fundamental que se tenha um bom domínio deles. Por isto, recomendo ao leitor um carinho
especial com esta parte do curso que trata deles. Ponteiros são tão importantes na
linguagem C que você já os viu e nem percebeu, pois mesmo para se fazer um introdução
básica à linguagem C precisa-se deles.
Como Funcionam os Ponteiros
Os ints guardam inteiros. Os floats guardam números de ponto flutuante. Os chars
guardam caracteres. Ponteiros guardam endereços de memória. Quando você anota o
endereço de um colega você está criando um ponteiro. O ponteiro é este seu pedaço de
papel. Ele tem anotado um endereço. Qual é o sentido disto? Simples. Quando você anota
o endereço de um colega, depois você vai usar este endereço para achá-lo. O C funciona
assim. Você anota o endereço de algo numa variável ponteiro para depois usar.
Estrutura
tipo_do_ponteiro *nome_da_variável;
É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar um valor
mas sim um endereço para aquele tipo especificado.
Para atribuir um valor a um ponteiro recém-criado poderíamos igualá-lo a um valor de
memória. Mas, como saber a posição na memória de uma variável do nosso programa? Seria
muito difícil saber o endereço de cada variável que usamos, mesmo porque estes
endereços são determinados pelo compilador na hora da compilação e realocados na
execução. Podemos então deixar que o compilador faça este trabalho por nós. Para saber
o endereço de uma variável basta usar o operador &. Veja o exemplo:

int count=10;
int *pt;
pt=&count;
exemplo com ponteiro:
#include <stdio.h>
int main (void){

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 18
int num,valor;
int *p;
num=55;
p=&num; /* Pega o endereço de num */
valor=*p; // Valor e igualado a num de uma maneira indireta
printf ("\n\n%d\n",valor);
printf ("Endereco para onde o ponteiro aponta: %p\n",p);
printf ("Valor da variavel apontada: %d\n",*p);
system(“pause”); }
OBS:. No exemplo, o código %p usado na função printf() indica à função que ela deve
imprimir um endereço.
Abrindo e Fechando um Arquivo
O sistema de entrada e saída do ANSI C é composto por uma série de funções, cujos
protótipos estão reunidos em stdio.h . Todas estas funções trabalham com o conceito de
"ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usando o
comando typedef. Esta definição também está no arquivo stdio.h. Podemos declarar um
ponteiro de arquivo da seguinte maneira:
FILE *p;
p será então um ponteiro para um arquivo. É usando este tipo de ponteiro que vamos poder
manipular arquivos no C.
- fopen: Esta é a função de abertura de arquivos.
Estrutura: FILE *fopen (char *nome_do_arquivo,char *modo);
O nome_do_arquivo determina qual arquivo deverá ser aberto. Este nome deve ser válido
no sistema operacional que estiver sendo utilizado. O modo de abertura diz à função
fopen() que tipo de uso você vai fazer do arquivo. A tabela abaixo mostra os valores de
modo válidos:
Tipo Significado
“r ” Abre um arquivo texto para leitura. O arquivo deve existir antes de ser
aberto.
“w ” Abrir um arquivo texto para gravação. Se o arquivo não existir, ele será
criado. Se já existir, o conteúdo anterior será destruído.
“a ” Abrir um arquivo texto para gravação. Os dados serão adicionados no fim do
arquivo ("append"), se ele já existir, ou um novo arquivo será criado, no caso de
arquivo não existente anteriormente.
“r+ ” Abre um arquivo texto para leitura e gravação. O arquivo deve existir e pode
ser modificado.
“ w+” Cria um arquivo texto para leitura e gravação. Se o arquivo existir, o conteúdo
anterior será destruído. Se não existir, será criado.
“a+ ” Abre um arquivo texto para gravação e leitura. Os dados serão adicionados no
fim do arquivo se ele já existir, ou um novo arquivo será criado, no caso de
arquivo não existente anteriormente.

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 19
A condição !fp testa se o arquivo foi aberto com sucesso porque no caso de um erro a
função fopen() retorna um ponteiro nullo (NULL).
Toda vez que estamos trabalhando com arquivos, há uma espécie de posição atual no
arquivo. Esta é a posição de onde será lido ou escrito o próximo caractere. Normalmente,
num acesso sequencial a um arquivo, não temos que mexer nesta posição pois quando lemos
um caractere a posição no arquivo é automaticamente atualizada.

- exit: Aqui abrimos um parênteses para explicar a função exit()


Estrutura: void exit (int codigo_de_retorno);
Para utilizá-la deve-se colocar um include para o arquivo de cabeçalho stdlib.h. Esta
função aborta a execução do programa. Pode ser chamada de qualquer ponto no programa
e faz com que o programa termine e retorne, para o sistema operacional, o
código_de_retorno. A convenção mais usada é que um programa retorne zero no caso de
um término normal e retorne um número não nulo no caso de ter ocorrido um problema. A
função exit() se torna importante em casos como alocação dinâmica e abertura de
arquivos pois nestes casos, se o programa não conseguir a memória necessária ou abrir o
arquivo, a melhor saída pode ser terminar a execução do programa.
Poderíamos reescrever o exemplo da seção anterior usando agora o exit() para garantir
que o programa não deixará de abrir o arquivo:

#include <stdio.h>
#include <stdlib.h> /* Para a função exit() */
main (void)
{
FILE *fp;
...
fp=fopen ("exemplo.doc","w");
if (!fp){
printf ("Erro na abertura do arquivo. Fim de programa.");
exit (1);
}
...
system(“pause”);
}

- fclose: Quando acabamos de usar um arquivo que abrimos, devemos fechá-lo. Para tanto
usa-se a
função fclose():
int fclose (FILE *fp);
O ponteiro fp passado à função fclose() determina o arquivo a ser fechado. A função
retorna zero no caso de sucesso.
Fechar um arquivo faz com que qualquer caractere que tenha permanecido no "buffer"
associado ao fluxo de saída seja gravado. Mas, o que é este "buffer"? Quando você envia

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 20
caracteres para serem gravados em um arquivo, estes caracteres são armazenados
temporariamente em uma área de memória (o "buffer") em vez de serem escritos em
disco imediatamente. Quando o "buffer" estiver cheio, seu conteúdo é escrito no disco de
uma vez. A razão para se fazer isto tem a ver com a eficiência nas leituras e gravações de
arquivos. Se, para cada caractere que fossemos gravar, tivéssemos que posicionar a
cabeça de gravação em um ponto específico do disco, apenas para gravar aquele
caractere, as gravações seriam muito lentas.
Assim estas gravações só serão efetuadas quando houver um volume razoável de
informações a serem gravadas ou quando o arquivo for fechado.
A função exit() fecha todos os arquivos que um programa tiver aberto.
Lendo e Escrevendo Caracteres em Arquivos
- putc: é a função de escrita de arquivo. Seu protótipo é:
int putc (int ch,FILE *fp);
Escreve um caractere no arquivo.
O programa a seguir lê uma string do teclado e escreve-a, caractere por caractere em um
arquivo em disco (o arquivo arquivo.txt, que será aberto no diretório corrente).

#include <stdio.h>
#include <stdlib.h>

int main(){
FILE *fp;
char string[100];
int i;
fp = fopen("arquivo.txt","w"); /* Arquivo ASCII, para escrita */
if(!fp){
printf( "Erro na abertura do arquivo");
exit(0);
}
printf("Entre com a string a ser gravada no arquivo:");
gets(string);
for(i=0; string[i]; i++) putc(string[i], fp); /* Grava a string, caractere a caractere */
fclose(fp);
system(“pause”);
}

Depois de executar este programa, verifique o conteúdo do arquivo arquivo.txt (você pode
usar qualquer editor de textos). Você verá que a string que você digitou está armazenada
nele.
- getc
Retorna um caractere lido do arquivo.
Estrutura : int getc (FILE *fp);

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 21
- feof
EOF ("End of file") indica o fim de um arquivo. Às vezes, é necessário verificar se um
arquivo chegou ao fim. Para isto podemos usar a função feof(). Ela retorna não-zero se o
arquivo chegou ao EOF, caso contrário retorna zero.
Estrutura
int feof (FILE *fp);

Outra forma de se verificar se o final do arquivo foi atingido é comparar o caractere lido
por getc com EOF. O programa a seguir abre um arquivo já existente e o lê, caractere por
caractere, até que o final do arquivo seja atingido. Os caracteres lidos são apresentados
na tela:

#include <stdio.h>
#include <stdlib.h>

int main(){
FILE *fp;
char c;
fp = fopen("arquivo.txt","r"); /* Arquivo ASCII, para leitura */
if(!fp){
printf( "Erro na abertura do arquivo");
exit(0);
}
while((c = getc(fp) ) != EOF) /* Enquanto não chegar ao final do
arquivo */
printf("%c", c); /* imprime o caracter lido */
fclose(fp);
system(“pause”);
}

A seguir é apresentado um programa onde várias operações com arquivos são realizadas,
usando as funções vistas nesta página. Primeiro o arquivo é aberto para a escrita, e
imprime-se algo nele. Em seguida, o arquivo é fechado e novamente aberto para a leitura.
Verifique o
exemplo.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(){
FILE *p;
char c, str[30], frase[80] = "Este e um arquivo chamado: ";

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 22
int i;
/* Le um nome para o arquivo a ser aberto: */
printf("\n\n Entre com um nome para o arquivo:\n");
gets(str);
if (!(p = fopen(str,"w"))){ /* Caso ocorra algum erro na abertura do arquivo..*/
/* o programa aborta automaticamente*/
printf("Erro! Impossível abrir o arquivo!\n");
exit(1);
} /* Se não houve erro, imprime no arquivo e o fecha ...*/
strcat(frase, str);
for (i=0; frase[i]; i++)
putc(frase[i],p);
fclose(p); /* Abre novamente para leitura */
p = fopen(str,"r");
c = getc(p); /* Le o primeiro caractere */
while (!feof(p)) { /* Enquanto não se chegar no final do arquivo */
printf("%c",c); /* Imprime o caractere na tela */
c = getc(p); /* Le um novo caractere no arquivo */
}
fclose(p); /* Fecha o arquivo */
}

Estruturas

Uma estrutura agrupa várias variáveis numa só. Funciona como uma ficha pessoal que
tenha nome, telefone e endereço. A ficha seria uma estrutura. A estrutura, então, serve
para agrupar um conjunto de dados não similares, formando um novo tipo de dados.

Para se criar uma estrutura usa-se o comando struct. Sua forma geral é:
struct nome_do_tipo_da_estrutura
{
tipo_1 nome_1;
tipo_2 nome_2;
...
tipo_n nome_n;
} variáveis_estrutura;
O nome_do_tipo_da_estrutura é o nome para a estrutura. As variáveis_estrutura são
opcionais e seriam nomes de variáveis que o usuário já estaria declarando e que seriam do
tipo nome_do_tipo_da_estrutura.

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 23
LISTA DE EXERCÍCIO

1. Efetuar a leitura de um número inteiro e apresentar o resultado do quadrado desse número.

2. Ler dois valores inteiros (variáveis A e B) e efetuar as operações de adição, subtração,


multiplicação e divisão de A por B, apresentando ao final os quatro resultados obtidos.

3. Converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 ):

4. Escrever um algoritmo que leia um número X e calcule:


a. O resto da divisão de X / 5
b. X*2 + 20
c. Raiz quadrada de X

5. Elabore um algoritmo que leia N números, calcule a soma e mostre-a no final.


Ex. lista de números: 3,5,7,4,3,2,1,9,12,15,9 | Soma dos números = 70

6. Faça um algoritmo que leia um número inteiro e imprima o seu fatorial.

7. Elabore um algoritmo que o usuário entre com o valor da tensão em Volts e o programa retorne
o valor fornecido em Quilovolts(KV) e em milivolts(mV):

8. Elabore um algoritmo onde seja solicitado ao usuário se ele deseja saber o valor da corrente,
tensão ou resistência. Dependendo da sua escolha ele calculará:
I = V/R
V = R*I
R = V/R
Solicitando as outras duas variáveis da formula e mostre o resultado dando a unidade, no caso da
resistência ‘R’ no lugar do ‘Ω’, caso o valor seja menor que 0,001 a resposta venha em míli e caso o
valor seja superior a 1000 a resposta virá em quilo.

9. Elabore um algoritmo onde seja solicitado ao usuário dos valores de resistência R1 e R2, depois
seja solicitado se eles estão associados em paralelo(p) ou em série(s), em seguida o programa
retorna o valor da resistência equivalente. Ao final o programa pergunte se deseja encontrar outra
resistência equivalente. Se a resposta for sim(s), novamente retorne a perguntar por R1 e R2 e
continue até a resposta for diferente de (s).
10.
RT(paralelo)= (R1*R2)/(R1+R2)
Rt(série)= R1+R2

11. Elabore um algoritmo o usuário entre com as informações de tensão total, R1 e R2 e pela
formula de divisor de tensão retorne o valor da tensão em R1:

V1 = VT * ( R1 / ( R1+R2 ))

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 24
12. Elabore um algoritmo onde o usuário informe o nome completo a data de nascimento o dia,
mês e ano, individualmente, a data atual dia, mês e ano e o programa retorne o primeiro nome, o
segundo abreviado e a idade.

13. Elabore um programa onde o usuário forneça um valor inicial, um valor final e o programa
retorne todos os números pares entre os dois valores fornecidos.

14. Elabore um algoritmo onde o usuário forneça dois valores e o programa retorne em ordem
decrescente os valores ímpares entre eles.

15. Elabore um algoritmo onde seja solicitado 10 valores aleatórios e o programa retorne os
valores em ordem crescente e decrescente.

16. Escreva um programa onde o usuário forneça uma palavra de ate 20 letras e o programa
retorne a quantidade de vogais que existe nessa palavra.

17. Elabore um algoritmo que o usuário escreva uma frase de até 200 caracteres e o programa
retorne a quantidade de palavras que há nessa frase.

18. Criar um programa onde seja criado um banco de dados no word com as seguintes
informações, nome do colaborador, idade, salário e função. Todas as informações devem ser
solicitadas através de um algoritmo.

19. Criar um programa para ler as informações no documento word criado na questão anterior.

20. Elabore um algoritmo onde pergunte quantos alunos há na classe e depois solicite a nota de
cada um dos alunos e o programa retorne a média das notas da sala.

21. Crie um programa para calcular a média de uma aluno a partir de 4 notas, depois se a média
for menor que 5 apareça a mensagem reprovado, se for maior ou igual a 5 e menor que 6 aparecerá
conselho de classe, se for maior ou igual a 6 e menor ou igual a 10 aprovado e se a média der maior
que 10 deverá aparecer a mensagem “algum valor foi digitado errado”.

22. Elabore um programa para simular uma urna eletrônica onde uma senha libere a votação e
serão inscritos 5 candidatos na tela apareça as opções (votar) e (apuração) as duas opções terá
acesso através de uma senha de 4 dígitos, caso a senha seja digitada errada 3 vezes a tela fique
toda branca com a mensagem alerta piscando em vermelho durante 10 segundos, depois pede a
senha de desbloqueio de 8 dígitos.

Centro profissionalizante de Camaçari – CPC


Coordenado técnico/Professor: Joedson Leite Página 25

Você também pode gostar