Professional Documents
Culture Documents
CONCEITOS DE ALGORITMOS
Podemos utilizar a seguinte definição para algoritmo: Algoritmo são passos ordenados em
conjunto, que soluciona um problema. Primeiramente, precisamos entender o que é uma ação.
Entende-se por ação um evento que acorre num período de tempo finito, estabelecendo um efeito
intencionado e bem definido.
Por exemplo:
Vamos agora ao computador: trata-se de uma máquina capaz de seguir uma certa espécie de
algoritmo, chamado programa. Ele possui uma memória, capaz de armazenar dados, e uma
unidade aritmética, que é capaz de modificar os dados que estão na memória. Além disso,
comunica-se com o mundo exterior através de operações de entrada e saída.
Outro exemplo:
3) Calcular a média
obter quatro notas
calcular a média
mostrar a média
Refinando:
obter N1, N2, N3, N4
média é calculada somando-se as quatro notas e dividindo por quatro
mostrar a média calculada
ITENS FUNDAMENTAIS
A partir de agora veremos um conjunto particular de regras e convenções para o desenvolvimento
de algoritmos.
CONSTANTES:
Valores que não se modificam ao longo da execução do algoritmo.
Uma constante pode ser um valor numérico, um valor lógico ou literal.
Constante numérica: valor numérico com ou sem parte fracionária
Exemplos:
a) 10
2
b) 7,8*10
c) 3,14
d) –0,38
VARIÁVEIS:
Uma variável na matemática é a representação simbólica dos elementos de um certo conjunto.
Nos algoritmos, a cada variável corresponde uma posição de memória e o seu conteúdo pode
variar durante a execução do algoritmo.
As variáveis são identificadas por um nome ou identificador.
Formação de identificadores:
Um identificador é formado por 1 ou mais caracteres, sendo que o primeiro deve, obrigatoriamente,
ser uma letra e os seguintes letras ou dígitos. Não são permitidos símbolos especiais com exceção
do sublinhado ( _ ).
Usamos declarar variáveis em um algoritmo para que seja reservado área na memória para
armazenar a informação. Além disso, indicamos o tipo de informação que a variável irá conter.
Sintaxe:
DECLARE lista-de-identificadores TIPO
onde:
DECLARE: palavra-chave
Lista-de-identificadores: variáveis que serão utilizadas no algoritmo
TIPO: qual o conteúdo que a variável terá
Obs.: Palavra-chave tem um significado próprio, independente do algoritmo. Não pode ser
usada como identificador e sempre aparecerá sublinhada.
COMENTÁRIOS: É um texto, ou simplesmente uma frase, que aparece sempre delimitado por
chaves {comentário}, com o objetivo de explicar o algoritmo.
Exemplo:
declare NOTA numérico {Declaração de variáveis}
EXPRESSÕES ARITMÉTICAS:
Formadas por operadores aritméticos e operandos que são constantes e/ou variáveis do tipo
numérico.
EXPRESSÕES LÓGICAS:
Alguma ação durante a execução do algoritmo pode estar sujeita a uma condição. Esta condição é
representada por uma expressão lógica.
Os operadores são lógicos e os operandos são relações, constantes e/ou variáveis do tipo lógico.
RELAÇÕES:
Comparação realizada entre dois valores do mesmo tipo básico.
Operadores relacionais:
= (igual a)
<> ou ≠ (diferente de)
> (maior que)
< (menor que)
>= ou ≥ (maior ou igual a)
<= ou ≤ (menor ou igual a)
Exemplos:
a) A + B = 0 e C <> 1
b) TESTE ou A * B > 1
P Q peq p q p ou q
V V V V V V
V F F V F V
F V F F V V
F F F F F F
V: verdadeiro F: falso
INTRODUÇÃO À LINGUAGEM C
DEFINIÇÕES BÁSICAS
Simulação:
M N K Impresso Instruções Comentários
120 28 Declarações e Leituras
4 Achou MDC!
Linguagem C
Desenvolvida nos laboratórios Bell na década de 70, a partir da Linguagem B
(criada no final dos anos 60 por Ken Thompson), que foi reformulada por Brian Kernighan
e Dennis M. Ritchie e posteriormente renomeada para C.
Podendo ser considerada como uma linguagem de médio nível, pois possui
instruções que a tornam ora uma linguagem de alto nível e estruturada como o Pascal, se
assim se fizer necessário, ora uma linguagem de baixo nível pois possui instruções tão
próximas da máquina, que só o Assembler possui.
De fato com a linguagem C podemos construir programas organizados e concisos
(como o Pascal), ocupando pouco espaço de memória com alta velocidade de execução
(como o Assembler). Infelizmente, dada toda a flexibilidade da linguagem, também
poderemos escrever programas desorganizados e difíceis de serem compreendidos (como
usualmente são os programas em BASIC).
Devemos lembrar que a linguagem C foi desenvolvida a partir da necessidade de se
escrever programas que utilizassem recursos próprios da linguagem de máquina de uma
forma mais simples e portável que o assembler.
Uma análise superficial dos programas escritos em C e Clipper (Aula 01 -
Algoritmos Estruturados), nos permite perceber que a linguagem C supera em muito em
dificuldade o programa análogo em Clipper. Ora, então porque não desenvolvermos
programas somente em Clipper?
A inúmeras razões para a escolha da linguagem C como a predileta para os
desenvolvedores “profissionais”. As características da Linguagem C servirão para mostrar
o porquê de sua ampla utilização.
Características da Linguagem C
• Portabilidade entre máquinas e sistemas operacionais.
• Dados compostos em forma estruturada.
• Programas Estruturados.
• Total interação com o Sistema Operacional.
• Código compacto e rápido, quando comparado ao código de outras linguagem de
complexidade análoga.
Aplicações Escritas em C
EXEMPLO - 1
void main( )
{
int idade;
clrscr( );
printf (“ Digite sua idade “);
scanf (“ %d”,&idade );
printf ( “Sua idade é %d”,idade );
getch( );
}
OPERADORES MATEMÁTICOS
OPERADOR ACAO
- subtração
+ adição
* multiplicação
/ divisão
% resto da divisão
-- decremento
++ incremento
OPERADORES LOGICOS
OPERADOR ACAO
&& and
|| or
! not
OPERADORES RELACIONAIS
OPERADOR ACAO
> maior que
< menor que
>= maior ou igual
<= menor ou igual
== igual a
!= diferente de
VARIÁVEIS
Uma variável é um espaço de memória reservado para armazenar um certo tipo de dado e
tendo um nome para referenciar o seu conteúdo.
Duas variáveis globais não podem ter o mesmo nome, uma variável local pode ter o
mesmo nome de uma variável local de outra função.
DECLARANDO VARIAVEIS
tipo lista_variaveis;
INICIALIZANDO VARIAVEIS
FUNÇAO printf( )
FUNCAO scanf( )
FUNCAO OPERACAO
getchar ( ) lê um caractere; espera por <enter>
getche ( ) lê um caractere com eco; não espera por <enter>
getch ( ) lê um caractere sem eco; não espera por <enter>
putchar ( ) imprime um caractere na tela
gets ( ) lê uma string via teclado
puts ( ) imprime uma string na tela
Código Significado
\b Retrocesso (BackSpace)
\f Salto de Página (Form Feed)
\n Linha Nova (Line Feed)
\r Retorno do Carro (cr)
\t Tabulação Horizontal (TAB)
\’ Caracter com apóstrofo
\0 Caracter Nulo ou Fim de String (Seqüência)
\x Representação de byte na base hexadecimal
Exemplo: printf(“\x41”); causa a impressão da letra A na tela.
COMANDOS DE DECISÃO
Os comandos de decisão permitem determinar qual é a ação a ser tomada com base no resultado
de uma expressão condicional.
COMANDO IF-ELSE
if ( condição ) comando;
else comando;
Exemplo:
#include <stdio.h>
#include <conio.h>
void main( )
{
int magico, entrada;
magico = random(20); //gera um numero entre 0 e 20
clrscr( );
printf( “Adivinhe o numero: ”);
scanf(“%d”,&entrada);
if (entrada == magico) printf (“ == Você acertou ==”);
else printf (“ Você não acertou pressione qualquer tecla );
getch( );
}
switch( variável )
{
case constante1: seqüência de comandos; break;
case constante2: seqüência de comandos; break;
case constante3: seqüência de comandos; break;
.
.
default: seqüência de comandos;
}
Exemplo:
#include <stdio.h>
void main ( )
{
char opção;
clrscr( );
printf(“A - imprime a letra f”);
printf(“B - imprime a letra g”);
printf(“C - imprime a letra h”);
opção = getch( );
switch(opção)
{
case ‘a’: printf(“f”);break;
case ‘b’: printf(“g”);break;
case ‘c’: printf(“h”);break;
}
}
LAÇOS
Laços são comandos da linguagem C úteis sempre que uma ou mais instruções devam ser
repetidas enquanto uma certa condição estiver sendo satisfeita.
LAÇO WHILE
Um laço while é apropriado em situações em que o laço pode ser terminado inesperadamente,
por condições desenvolvidas dentro do laço.
Forma geral
Exemplo:
LAÇO DO WHILE
Este laço é bastante similar ao laço while e é utilizado em situações em que é necessário
executar o corpo do laço pelo menos uma vez e depois avaliar a expressão de teste.
Forma geral
do
{
comando ou bloco de comandos;
}
while(expressão de teste);
Exemplo:
void main( )
{
char op;
int sair = 0;
do
{
op = getche( );
switch(op)
{
case ‘s’: somatorio( );break;
case ‘f’ : fibonacci( );break;
case ‘q’: sair = 1;
}
}while(sair!=1);
}
LAÇO FOR
Exemplo:
Exemplo2:
void main( )
{
float num;
for (num=1;num<20;num++) raiz(num);
}
void raiz( float n)
{
printf(“\nn = %f raiz quadrada = %f”,n,sqrt(n));
}
FUNÇÕES
Exemplo:
void quadrado(int p)
{
int k;
k = p*p;
printf(“%i”,p);
}
void main( )
{
int k=25;
quadrado(k);
getch( );
}
COMANDO return
Exemplo:
FUNÇÕES RECURSIVAS
Um erro comum e difícil de detectar provém do facto de uma atribuição ser considerada
uma expressão em C e além disso qualquer expressão ter um valor lógico (TRUE ou
FALSE). Assim a seguinte instrução é sintacticamente correcta mas frequentemente não é
isso o que o programador pretende:
if (a = b) { ... };
Na instrução de cima o valor de b é atribuído a a e o if é avaliado como verdadeiro se esse
valor for diferente de 0. O que geralmente se pretende numa instrução como aquela será
comparar o valor de a com o valor de b:
if (a == b) { ... };
break e continue
No exemplo seguinte pretende-se ler uma série de inteiros do teclado e fazer qualquer coisa
com eles. No entanto se o valor lido for 0 terminamos a leitura, se o valor for negativo
escrevemos uma mensagem de erro e terminamos o ciclo, e se for maior do que 100
ignoramos esse valor e passamos à leitura do seguinte.
Include
Esta diretiva de compilação serve para especificar arquivos com definições de tipo, macro
substituições e protótipos de funções que serão usadas no programa. Como C tem uma
grande variedade destas funções e definições, é comum que elas estejam agrupadas em
arquivos diferentes de acordo com a natureza das tarefas que executam.
ou
A diferença entre estas duas formas está no local onde o compilador vai procurar o arquivo
no momento da compilação. No primeiro formato, o arquivo é procurado no diretório já
definido pelo TURBO C como sendo aquele que contem os "header files", isto é, os
arquivos com extensão .h que contém definições de tipos, dados e funções já prontas que
vem com o TURBO C. O segundo formato é usado quando queremos que o TURBO
busque o arquivo especificado no diretório atual do disco. Esta forma é usada normalmente
quando queremos incorporar arquivos por nós criados e salvos no diretório atual.