Você está na página 1de 33

Universidade Federal de Viosa

Curso de Engenharia de Agrimensura e Cartogrfica

EAM 480
Programao aplicada a Eng. de Agrimensura e Cartogrfica

AULA 01

Prof. Afonso P. Santos


afonso.santos@ufv.br
Tel.: 3899-3029

Sumrio
Apresentao da Disciplina
A Linguagem C
Estrutura de um programa em C

Declarao de Bibliotecas
Funes
Palavras Reservadas
Variveis
Entrada e sada de dados
Comando de Pausa

Exemplo
Exerccios

EAM 480
Objetivos e Ementa
A disciplina objetiva oferecer ao aluno uma introduo linguagem de
programao C.
Sero apresentados os fundamentos e estrutura da linguagem, definies
de variveis, constantes, operadores e expresses. Comandos de controle
de fluxo. Conceitos de matrizes e vetores. Uso Ponteiros e Funes .
Comandos de entrada e sada. Programas grficos (mais amigvel) / IDE.
Alguns tpicos avanados na linguagem de programao sero abordados
tais como: tipos de dados definidos pelo usurio, operadores avanados,
entre outros.
Ao final do curso, o aluno dever ser capaz de utilizar com proficincia a
linguagem de programao C para implementar algoritmos desenvolvidos.

EAM 480
Plano de Aulas, Critrios de Avaliao e Referncias Bibliogrficas.

Disponvel no PVANET

EAM 480
Softwares utilizados
Dev-C++ (tambm conhecido como Dev-Cpp) um ambiente de
desenvolvimento integrado livre que utiliza os compiladores do projeto
GNU para compilar programas para o sistema operacional Microsoft
Windows. Suporta as linguagens de programao C e C++

C++ Builder um ambiente de desenvolvimento integrado (IDE)


produzido pela CodeGear (antiga Borland) para a escrita de programas na
linguagem C++ e C.
IDE ou Ambiente Integrado de Desenvolvimento, um programa de
computador que rene caractersticas e ferramentas de apoio ao
desenvolvimento de software com o objetivo de agilizar este
processo.

A Linguagem C

Linguagem C
Linguagem de uso geral;
Linguagem estruturada e modular;
Possibilidade de gerar cdigos muito eficiente e otimizados;
Dennis Ritchie inventou e implementou C;

Linguagem BCPL (Martin Richards) >> Linguagem B (Ken Thompson) >>


Linguagem C no ano de 1972 (Dennis Ritchie) ;
Em 1983 criao do padro ANSI que definiria a Linguagem C;

Linguagem C
A eficincia inerente a C, comparada com sua habilidade de operar
diretamente nos bits e bytes da memria do computador o que
diferencia de outras linguagens e a torna uma linguagem de
programao popular.
Inicialmente C foi usada na programao de software bsicos, porm
devido a sua portabilidade e eficincia tem sido usada para
desenvolvimentos de sistemas com finalidade geral

Linguagem C
C case sensitive, ou seja, h uma diferenciao entre letras maisculas e
minsculas.
Nvel de Linguagem (ver tabela abaixo).
Linguagem Estruturada (ver tabela abaixo)

Linguagem
Estruturada

Linguagem
No-Estruturada

COBOL
FORTRAN
BASIC

Pascal
C++
C

Nvel de
Linguagem

Linguagem de
Programao

Alto

Pascal
COBOL
FORTRAN
BASIC

(similar
linguagem
humana)

Mdio

C++
C

Baixo

Assembler

(similar
linguagem de
mquina)

Linguagem C
Definio de termos

Cdigo-fonte: o texto ou conjunto de palavras, em uma determinada


linguagem, escrita de forma ordenada e contendo instrues de forma
lgica.

Compilador: realiza a leitura do cdigo-fonte como um todo traduzindo


em cdigo-objeto.
Interpretador: realiza a leitura do cdigo-fonte linha por linha,
executando a instruo de cada linha por vez. Quando se utiliza de um
interpretador, toda vez em que for executar o programa necessrio a
utilizao do interpretador. Exemplos: Linguagens em BASIC, VB, PHP,
LISP, Javascript, entre outras.

Linguagem C
Definio de termos

Cdigo objeto: o nome dado ao cdigo resultante do processo de


compilao. uma forma intermediria similar a linguagem de mquina
do computador. Apesar de estar representado em binrio, no
executvel diretamente pelo processador, pois normalmente, o cdigoobjeto referencia partes de programa que no esto necessariamente
definidas no mesmo arquivo que o gerou, por exemplo, arquivos de
bibliotecas de sub-rotinas.

Cdigo de mquina: so um conjunto de instrues que o computador


entende para execut-las. Essas instrues so representadas por
sequncias de bits, chamadas de cdigo binrio j que so formados por
0 e 1.

Linguagem C
Definio de termos
Linkeditor: tambm chamado de Ligao um programa que une os
cdigos-objeto que foram compilados separadamente gerando um
programa executvel. A linkedio nada mais que a unio de
bibliotecas utilizadas com o cdigo escrito por um programador,
gerando assim um nico mdulo, denominado de programa executvel.
Biblioteca: Arquivos contendo funes que podem ser acopladas /
utilizadas no seu programa.
Tempo de compilao: So os eventos que ocorrem enquanto seu
programa est sendo compilado. Um exemplo de eventos so erros de
sintaxe (regra da linguagem de programao)

Tempo de execuo: So os eventos que ocorrem enquanto seu


programa est sendo executado.

Linguagem C
Definio de termos
Editor: o programa onde o cdigo-fonte escrito.

Debugger: auxilia o programador a eliminar, ou reduzir, a quantidade de


erros de execuo no programa. Possibilita a execuo passo-a-passo de
partes do programa, visualizao de valores das variveis, visualizao
dos contedos dos registros internos do processador, alterao em
tempo de execuo de contedos de memria, de variveis ou de
instrues, entre outros pontos.

IDE (Ambiente de Desenvolvimento Integrado): um programa de


computador que rene caractersticas e ferramentas de apoio ao
desenvolvimento de software com o objetivo de agilizar este processo.

Estrutura de um programa em C
A estrutura de um programa em C segue basicamente a seguinte ordem:

Declaraes de bibliotecas (#include <stdio.h>);


Definio de constantes (#define pi 3.1415);

Definio de tipos de dados (Struct )


Declarao de variveis globais;
Funes ( main() )

Estrutura de um programa em C

Escreva um programa que receba o ngulo em graus decimais e apresente


na tela em radianos.

Algoritmo:
Ler o ngulo em graus decimais
Converter o ngulo em radianos
RAD = DEG*PI/180.0
Escrever o resultado em tela

Declarao de Bibliotecas
A linha #include <stdio.h> diz ao compilador que ele deve incluir o arquivocabealho stdio.h.
Neste arquivo existem declaraes de funes teis para entrada e sada de
dados (std = standard, padro em ingls; io = Input/Output, entrada e sada ==>
stdio = Entrada e sada padronizadas).
Toda vez que voc quiser usar uma destas funes deve-se incluir este comando.
O C possui diversos Arquivos-cabealho.
Ex.: Bibiotecas de funes matemticas math.h
Declaraes iniciadas por # identificam comandos para o pr-processador (diretivas)
Declaraes deste tipo no so realmente compiladas: so pr-processadas
Exemplos
#include <stdio.h>
#define TAMANHO 10 definindo uma constante chamada TAMANHO
com valor igual 10

Funes

Um programa em C constitudo por uma ou mais funes

A identificao das funes pode ser qualquer nome, exceto as palavras


reservadas da linguagem C.

Porm tem que existir uma funo chamada main. Esta funo a
funo principal do programa e ser chamada quando o programa for
executado.

O contedo da funo delimitado por chaves { }.

O cdigo que estiver dentro das chaves ser executado sequencialmente


quando a funo for chamada.

Funes
tipo nome_funcao (lista de parmetros)
{
declaraes de variveis locais;
bloco de comandos;
}

Tipo tipo de valor (inteiro, flutuante) que a funo retornar


Funo que no tiver declarado o tipo, o compilador reconhecer como o tipo int (inteiro)
Funo que no retorna valor do tipo void

Lista de parmetros so os parmetros (variveis


externas) utilizados utilizado no corpo da funo

Palavras Reservadas

A linguagem C tem apenas 43 palavras reservadas no Turbo C, 32 nos


compiladores padro ANSI e 28 no C Padro.

Palavras chaves em C (padro ANSI)


auto
double
int
struct
break
else
long
switch
case
enum
register typedef
char
extern
return
union
const
float
short unsigned
continue
for
signed
void
default
goto
sizeof
volatile
do
if
static
while

Variveis

Varivel uma posio nomeada de memria, que tem como funo


armazenar um valor (que pode ser modificado pelo programa) de acordo
com o tipo pr-definido.

O nome de uma varivel chamado de identificador (letra, palavra...)

Pode ser dividido em Local e Global.

Variveis Locais

main()
{
int x;
x=10;
}

Tambm chamadas de variveis dinmicas ou automticas


So declaradas dentro de uma funo
So visualizadas apenas dentro da funo onde foram declaradas
So criadas em tempo de execuo quando a funo chamada
destruda aps o final da execuo da funo
Sobrepem uma varivel global de mesmo nome dentro da funo.

Variveis
Variveis Globais

int x;
main()
{
x=10;
}

declarada fora do corpo de qualquer funo;


Podem serem utilizadas em qualquer funo do cdigo fonte;
So alocadas em tempo de compilao e ocupam memria durante toda
a execuo do programa, logo, so guardas at o termino da execuo
do programa. Portanto, deve-se evitar o uso abusivo de variveis
globais;
Obs.:
Caso esteja trabalhando em uma aplicao com mais de um mdulo
(arquivos fontes) preciso fazer uma indicao ao compilador que
as variveis globais j esto declaradas em outro mdulo.
Para uma melhor organizao deve-se declarar todas as variveis
globais no incio do cdigo-fonte;

Tipo de dados

Uma varivel pode armazenar diferentes tipos de caracteres e nmeros:


Tipo

Descrio

Faixa de Valores

Bytes

char

Caractere. Geralmente so armazenados


em cdigos ASCII

-128 a 127

Nmero inteiro

-32767 a 32767

Nmero Real (Ponto Flutuante)

3.4e-38 a 3.4e+38

Nmero Real (Ponto Flutuante com


preciso dupla)

1.7e-308 a 1.7e+308

int
float

double
void
unsigned int
long int

serve para indicar que um resultado no tem um tipo definido


Nmeros inteiros positivos

0 a 65535

Nmeros inteiros longos

-2147483648 a 2147483648

A faixa de valores dos tipos de dados podem variar de acordo com o compilador.

Tipo de dados
Os termos signed, unsigned, short e long so chamados de modificadores de tipos.

Pode-se aplicar modificadores em dados do tipo caractere (char) e inteiro (int).

No caso do double podemos aplicar somente o long ;

Ao tipo float no so aplicados nenhum modificadores de tipos.

O modificador altera o significado de um tipo de dado bsico.

Long: empregado aos tipos de dados int e double para indicar um tipo de dado maior.
Tambm pode ser declarado em conjunto com o float, mas isto seria a mesma coisa de
usar o tipo double.

Short: Muito utilizado para indicar valores inteiros curtos (short int). Normalmente
possui o mesmo tamanho do tipo int, mas so armazenados em um numero menor de
bytes.

Signed: Este modificador usado em dados do tipo caractere (char) para permitir o uso
de sinal. Tambm pode ser usado com inteiros, porm isto seria redundante, pois sua
declarao padro j permite um nmero com sinal.

Unsigned: No permite o uso de sinais. Este modificador no indicado para o tipo int,
pois podem ocasionar algumas complicaes caso seja atribudo em algum lugar do
cdigo um valor negativo.

Tabela ASCII

Entrada e Sada de dados

A entrada e sada de dados realizada atravs da utilizao do arquivocabealho stdio.h;

printf() utilizado quando se quer escrever algo na tela do computador


(Sada);

scanf() utilizado quando se quer obter dados a partir do teclado (Entrada);

sintaxe:
printf (formatacao, arg1, arg2, ...)
formatacao - uma cadeia de caracteres
contendo textos e formataes que sero
utilizados para apresentar os resultados de
variveis, expresses, etc. delimitada por
aspas duplas.
arg1 a expresso ou varivel que ter
seu valor mostrado na tela.

sintaxe:
scanf (formatacao, arg1, arg2, ...)
formatacao - uma cadeia de caracteres
contendo formataes que sero utilizadas
para ler os dados que sero salvo em
alguma varivel. delimitada por aspas
duplas.
arg1 o endereo da varivel que
receber os dados lidos.

Entrada e Sada de dados


Note que no h nenhuma varivel a
ser mostrada em tela. O comando
apenas escreve um texto em tela. H
s uso da formatao.
A formatao %d, que um conversor
de tipo de dados. Ao digitar nmeros e
letras no computador, este entende
que um caractere, logo existe vrios
conversores de tipos. O %d converte o
caractere em nmero e vice-versa.

& um operador unrio que devolve o endereo de memria de seu operando. Logo o valor que o
usurio digita e o programa l atravs do comando scanf atribudo ao endereo de memria que a
varivel em questo est.
Se o usurio digitou 22, o comando funciona da seguinte forma: &idade 22. Logo o valor da varivel
idade igual a 22;

Entrada e Sada de dados


Declaraes de Converses (a serem utilizados
na formatacao dos comandos printf e scanf)
Conversor

Descrio

Caracteres especiais (a serem

%c

caractere nico

%d

nmero inteiro

utilizados na formatacao
comandos printf e scanf)

%f

nmero real (float)

%lf

nmero real (double)

\b

retrocesso

%s

string

\f

Nova pgina

%p

ponteiro

\n

Nova linha

%%

imprime %

\t

tabulao

apstrofo

\0

Caractere nulo ou fim


de string

\\

Barra invertida

Caractere

dos

Descrio

Entrada e Sada de dados


Formatando a sada dos dados:

Comando de Pausa
Utilize no cdigo-fonte, na ltima linha antes de fechar a funo
principal (main), a funo getch() ou system(pause);
getch() l um valor via teclado no retorna o caractere
pressionado na tela;
system(pause) pausa o programa at que o usurio pressione
alguma tecla. Imprime uma mensagem em tela pedindo para
pressionar alguma tecla.
Este comando necessita da declarao da biblioteca stdlib.h;
Se o interesse do programa final ter portabilidade, no recomendado
utilizar este comando j que o mesmo s executado no Windows.

Exemplos
Uso de Funes e variveis multiplicar nmeros

Exerccio

1) Dados os valores mximos (max) e mnimos (min) de um intervalo [max,


min], escrever um programa em C para re-escalonar valores (Vo), nesse
intervalo [max, min] para o intervalo entre [0,1]; onde,

VE

Vo min
max min

2) Escrever um programa em C para converter distncias obtidas num


documento cartogrfico em milhas para quilmetros, sendo que 1 milha
igual a 1.60934 quilmetros;

3) Escrever um programa em C para calcular a mdia do ngulo zenital


coletado em pontaria direta (PD) e indireta (PI). Os dados de entrada devem
ser o ngulo zenital (PD e PI)
A frmula para o clculo : Z mdio = (360 + PD PI)/2

Exerccio
4) Escrever um programa em C para o clculo da rea de um polgono
obtido atravs de imagem raster. O programa deve solicitar o n de
clulas (pixel) do polgono e a resoluo espacial (comprimento do pixel)
da imagem (considere o pixel sendo quadrado) e retornar a rea do
polgono.

5) Escrever um programa em C para obter a declividade (D) de um


terreno, atravs do ngulo de inclinao (i).
A frmula para o clculo : D = 100* tg(i);
6) Escrever um programa em C para obter a declividade (D) de um
terreno, atravs da diferena de altitude (Dn) e da distancia horizontal
(Dh) entre dois pontos. A frmula para o clculo : D = (Dn/Dh)*100;

Exerccio
7) Escrever um programa em C para converter ngulo vertical de
inclinao (i) em ngulo zenital (Z). A frmula para o clculo : Z = 90 i

8) Faa um programa em C para que o usurio entre com uma distncia


medida em um mapa e sua medida homologa no terreno. Calcule o
denominador da escala correspondente.
9) Faa um programa para converter graus decimais em graus, minutos e
segundos;
10) Faa um programa que calcule o efeito da curvatura terrestre (S) na
altimetria para uma dada distncia na superfcie esfrica (S).
Frmula: S = S/R ; onde R o raio terrestre.