Anda di halaman 1dari 54

Introduo Programao / Programao e Algoritmia

Porqu estudar C
Linguagem de alto nvel
No entanto permite o acesso maior

parte das funcionalidades em Assembly

Rapidez
Consegue obter performances

semelhantes ao assembly atravs de instrues de alto nvel. reservadas

Simplicidade
Sintaxe simples e poucas palavras

Bibliotecas muito poderosas


Permitem estender as capacidades

bsicas da linguagem

Modular
Permite o desenvolvimento de

aplicaes com o desenvolvimento e integrao mdulos distintos.

Macros Permitem o processamento algortmico independentemente do tipos de dados. Portvel Existe um padro (ANSI) que garante a portabilidade das aplicaes Popular internacionalmente conhecida e muito utilizada. Evoluo Linguagem C++ Investimento no futuro a linguagem base das maioria das linguagens de ltima gerao (java , C# , etc. )

Evoluo da linguagem C

1. Desenvolvimento do algoritmo a tarefa mais importante de uma aplicao. nesta fase que projecta a aplicao e se inventam formas de resoluo de problemas 2. Edio do cdigo fonte a traduo do algoritmo para a linguagem C. A escrita de cdigo feita num ficheiro de texto com a extenso .C 3. Compilao do programa Verificao se o cdigo fonte est de acordo com as regras da linguagem. A compilao feita com recurso a um programa chamado compilador. O compilador gera o cdigo objecto

Ciclo de desenvolvimento de uma aplicao

4. Linkagem dos Objectos Serve para construir a aplicao executvel(.EXE) atravs da unio os diversos cdigos objectos e das bibliotecas da linguagem.

Ciclo de desenvolvimento de uma aplicao

5. Teste do programa Execuo da aplicao para verificao do seu funcionamento correcto.


Em caso de erro volta-se ao passo 1 (erro do programador)

Programao em C

Linguagem C
Em C o cdigo estruturado em um ou mais ficheiros com a

terminao .c e dentro desses ficheiros em directivas de compilao, instrues e blocos de cdigo


As directivas de compilao esto sempre no inicio Os blocos de cdigo so identificados com { } Os blocos de cdigo podem ter instrues especificas antes ou depois das { } Os blocos de cdigo podem estar dentro de outros blocos de cdigo, com excepo das funes As instrues terminao sempre com ; As instrues esto sempre dentro de blocos de cdigo, com excepo da declarao de variveis , que podem estar dentro ou fora

Ficheiro.c
Directiva Directiva
Instruo; Instruo;

Bloco de cdigo { Instruo; Instruo; Bloco de cdigo { Instruo; } Instruo }


Bloco de cdigo { Instruo; }

Linguagem C
Todos os programas em c possuem uma funo chamada

main A linguagem case sensitive


Programacao diferente de programacao
main() {
} void main() { }

int main() {}

int main( int argc, char* argv[]) { }

Linguagem C
A linguagem C no possui funes para fazer a interaco I/O

com o utilizador A linguagem possui a biblioteca stdio.h (standard input output) que permite fazer a entrada de dados e a sada de informao da nossa aplicao. A incluso de uma biblioteca feita atravs da directiva ao compilador #include <biblioteca.h>
Esta instruo permite utilizar as funes que esto na

biblioteca As bibliotecas tm extenso .h (header files)

printf
Instruo que permite a impresso de informao na consola printf = print formated A informao que vai ser escrita est dentro de parntesis e

dentro dos parntesis dentro de aspas


A instruo termina com um ;

Programa mal identado.

Caracteres especiais
Os caracteres especiais

comeam por \
Mudana de linha \n

Caracteres especiais
Impresso de caracteres especiais \ (barra) \ permite fazer a impresso do caracter especial

Erro de compilao

Caracteres especiais
\7 \a \b \n \r \t \v \\ \' \" \? \000 \xnn %% Bell (sinal sonoro do computador) Bell (sinal sonoro do computador) BackSpace New Line (mudana de linha) Carriage Return Tabulao Horizontal Tabulao Vertical Caracter \ (forma de representar 0 prprio caractere especial \ ) Caracter' (aspas simples) Caracter " (aspas) Caracter ? (ponto de interrogao) Caracter cujo cdigo ASCII em Octal e 00 Caracter cujo cdigo ASCII em Hexadecimal e nn caracter %

Comentrios
Todos os programas devem ter comentrios Os comentrios comeam com /* e terminam com */

Comentrios
Os comentrios servem para tornar o cdigo mais legvel

Os comentrios so ignorados pelo compilador

Os comentrios no tornam o programa mais rpido mas

aceleram o processo de desenvolvimento de software pois tornam o processo de identificao de erros mais fcil.

Tipos bsicos de dados

Tipos de dados
Simples
Numricos
inteiros reais
A0 Nome da varivel

D0

varivel

caracter A

0100 0001

Caracter

inteiro 50 00

Compostos
Arrays Estruturas Unies

Simbolos

0100 0001

0100 0001

Um nome Um Tipo Um s valor


Nome da varivel

Real 100 0001 -3,14156

0100 0001

0100 0001

100 0001

Variveis e constantes
Um programa para realizar trabalho til tm de manipular smbolos

( variveis e constantes)

Uma varivel um nome que damos a uma determinada posio de

memria para conter um valor de um determinado tipo que pode ser varivel

Exemplo : int idade; Valor inteiro que varivel em funo da pessoa

Uma constante um nome que damos a uma determinada posio


Exemplo : pi Valor de pi sempre o nmero real 3,14...

de memria para conter um valor de um determinado tipo que no se altera durante a execuo do programa

Declarao de Variveis
A declarao de variveis tem a seguinte sintaxe: A declarao de variveis sempre feita no inicio de bloco

de cdigo.

Quando uma varvel declarada fica sempre com um valor, o qual resulta do estado aleatrio dos bits que a constituem

Nomes das variveis


Regras Pode ser constitudo por letras do alfabeto (minsculas ou maisculas), dgitos
(0 ... 9) e ainda pelo caracter underscore (_). O primeiro caracter no pode ser um digito. Ter que ser uma letra ou o caracter underscore. Maisculas e minsculas representam caracteres diferentes, logo variveis distintas. No pode ter por nome uma palavra reservada da prpria Linguagem C.
auto break case char const continue double else enum extern float for int long register return short signed long switch typedef union unsigned void

default
do

goto
if

sizeof
static

volatile
while

Nomes dos variveis


Sugestes
As constantes so declaradas com letras maisculas
PI , NEPPER , MESES

As variveis comeam por letra minsculas


idade , nomeDoCliente

Utilizar os caracteres internacionais


No utilizar ou acentos

O nome da varivel deve ser descritivo daquilo que ela

armazena Sempre que o nome de uma varivel tenha mais que uma palavras deve utilizar-se o caracter underscore ou capitular as palavras
nome_principal_cliente

nomePrincipalCliente

Atribuio
Atribuir um valor a uma varivel

Pode-se inicializar as variveis aquando da sua declarao

Atribuio
Em C possvel atribuir o mesmo valor a vrias variveis

O operador = avaliado da direita para a esquerda

O operador devolve o valor da expresso

Operaes sobre inteiro

Qualquer operao entre inteiros retorna um inteiro

Escrever inteiros
O formato de escrita de um inteiro na funo printf %d

Leitura de inteiros
A leitura de dados feita pela funo scanf . Leitura formatada Sintaxe scanf(formato,&variavel);

Pode ser vrias variveis numa instruo

O formato enviado para a funo scanf no deve conter outros caracteres que no sejam os de indicadores de formato.

Bases de numerao
O C permite fazer o I/O nas bases Decimal
Formato

%d Digitos 0..9

Valores

Octal Formato

%o Digitos de 0..7 Primeiro dgito o (zero)

Valores

Hexadecimal Formato

%x ou %X Caracteres 09 e letras A..F Comeam por 0x ( zero xis)

Valores

Variaes de Inteiros
prefixos Short
Inteiro pequeno (2 bytes)

Formato %h ( short)
Formato %l (long) Formato %d Formato %u (unsigned)

Long
Inteiro grande (4 bytes)

Signed
Inteiro com sinal

unsigned
Inteiro sem sinal

Por defeito as variveis int so Signed Short ou long consoante o tipo de sistema operativo utilizado Declarao de variveis prefixo int nome = valor;

short int idade = 10; short idade = 10;

Usualmente omite-se o int

Variaes de inteiros

Para saber o tamanho em bytes de um tipo utiliza-se o

operador sizeof.

exemplos
Nota final da disciplina de IP
unsigned short int nota; unsigned short nota;

Soma das notas das disciplinas de uma aluno


unsigned short int somaNotas; unsigned short somaNotas;

Nmero de segundos de vida de uma pessoa


unsigned long int numMinutos; unsigned long numMinutos;

Diferena entre o nmero de segundos de duas pessoas


signed long difSegundos; long difsegundos;

Diferena entre o nmero de anos de duas pessoas


signed short int difAnos; short difAnos;

Nmeros reais
Existem dois tipos de nmeros reais float 4 bytes (preciso simples) double 8 bytes (preciso dupla) Notao usual

Formato %f

Notao cientfica
Formato %e

Operaes sobre reais

O resultado de um operador com um nmero real sempre

um nmero real.

Erros de arredondamento
As variveis reais podem conter erros de arredondamento

resultantes da sua representao limitada de bytes

Caracteres
Char Um byte ( 256 valores possveis) Formato %c Os caracteres so representados em C dentro de aspas

simples ( )

Leitura de caracteres
Funo scanf

Funo getchar

Teste de leitura

O ENTER ficou no buffer do teclado depois da primeira leitura Soluo


Colocar um espao em branco no formato de leitura %c

O espao em branco dentro do formato indica funo scanf que ignore todos os espaos, enter e tabs.

Agora sim ...

Caracteres e inteiros
Para o C os caracteres so nmeros inteiros de 8 bits que

podem ser manipulados pelo formato %c nas funes de I/O

Tabela ASCII

Casting
Transformao de valores em tipos de dados Sintaxe
(tipo) valor

A transformao de um tipo de dados noutro pode resultar na

perda de informao

Aproveita apenas os primeiros 8 bits

Caracteres e variaes

O formato de um caracter sempre %c independentemente

de ser signed ou unsigned

Overflow
Exemplo
unsigned char disparate = 255;

disparate = disparate + 3;

256

128

64

32

16

255 3 258

1 0 0

1 0 0

1 0 0

1 0 0

1 0 0

1 0 0

1 1 1

1 1 0

255 + 3 = 2

Formatos de variveis

Constantes
A definio de constantes tem a seguinte sintaxe const tipo simbolo = valor; O valor de uma constante no se altera ao longo do programa Por isso tem de ser inicializada na sua declarao No podem ser lidas

O formato de escrita de constantes igual s das variveis de igual tipo.


O nome das constantes normalmente constitudo por letras maisculas

Expresses computacionais
Math.h

acos Arco Coseno asin Aco Seno atan Arco Tangente cos Coseno cosh Cosenno Hiperblico cin seno sinh Seno hiperblico tan tangente tanh Tangente hiperblica

Trigonomtricas

Math.h
Calculo
exp Exponenciao de base e Log Logaritmo de base e Log10 Logaritmos de base 10 Pow potenciao Sqrt Raiz quadrada

Exemplos

Expresses computacionais
Constitudas por Constantes
24

Variveis x, a, b ,c Operadores X = ( -b + sqrt( pow(b,2) 4 * a * c) ) / ( 2 * a) ; +,-*/ Funes Potencia ( pow) Raiz quadrada (sqrt) parentesis

Exerccios

Exerccos
Defina variveis em C para manipular
A mdia das notas de um ano lectivo
O salrio de um trabalhador O nmero de alunos de um pas

O saldo de uma conta bancria


Nmero de dias entre duas datas O sexo de um aluno

Factor rhesus do sangue (+ e -)


A situao de uma aluno relativo aprovao A situao de uma aluno relativo matrcula.

Exerccio
Construa um programa que permita imprimir na consola:

Tabela ASCII

Exerccio
Construa um programa que calcule a rea ocupada pela cor

verde da seguinte figura:

Exerccio
Construa um programa que solicite ao utilizar uma quantia em

dinheiro e de seguida imprima o nmero de moedas de 2, 1, 50C , 20C, 10C, 5C, 2C e 1C que so necessrias para fazer essa quantia de forma a minimizar o nmero de moedas.
Construa um programa que solicite ao utilizador um caracter e

de seguida imprima o seu cdigo ASCII em decimal, octal, hexadecimal e binrio.


Construa um programa que calcule as razes de uma equao

de 2 grau.