Você está na página 1de 54

Programao e A Linguagem

Prof. William Pelissari


williampelissari@unipar.br
1

Introduo
Por que programar ? Quando o homem necessita do auxilio do computador para executar algumas tarefas. O Que um programa ? Conjunto de instrues de uma determinada linguagem atravs das quais, um computador executa algumas tarefas.
Prof. William Pelissari- 2

Introduo
O Que uma linguagem ? Uma linguagem consiste de um conjunto de palavras reservadas e regras de sintaxe que possibilita criar programas de computadores.

Este conjunto de palavras possui regras de estruturao


lgica e sinttica prpria.

Prof. William Pelissari- 3

Exemplos de Cdigos: BASIC


Pseudo-cdigo leia(num) para n de 1 at 10 passo 1 faa tabnum*n imprima(tab) fim-para; BASIC 10 input num 20 for n=1 to 10 step 1 30 let tab=num*n 40 print chr$(tab) 50 next n

Prof. William Pelissari- 4

Exemplos de Cdigos: FORTRAN


Pseudo-cdigo leia(num) para n de 1 at 10 passo 1 faa tabnum*n imprima(tab) fim-para; FORTRAN read (num) do 10 n=1:10 tab=num*n write(tab) 10 continue

Prof. William Pelissari- 5

Exemplos de Cdigos: Assembly


Pseudo-cdigo leia(num) para n de 1 at 10 passo 1 faa tabnum*n imprima(tab) fim-para; Assembly (Intel 8088) MOV CX,0 IN AX,PORTA MOV DX,AX LABEL: INC CX MOV AX,DX MUL CX OUT AX, PORTA CMP CX,10 JNE LABEL
Prof. William Pelissari- 6

Exemplos de Cdigos: C
Pseudo-cdigo leia(num) para n de 1 at 10 passo 1 faa tabnum*n imprima(tab) fim-para; C scanf(&num); for(n=1;n<=10;n++){ tab=num*n; printf(\n %d, tab); };

Prof. William Pelissari- 7

Tipos de Linguagens: Baixo Nvel

So linguagens com foco na mquina, ou seja, utiliza instrues detalhadas que controla os circuitos internos do computador. Usualmente so genricamente chamadas de linguagens de mquina, Assembly ou de linguagem de montagem.

Prof. William Pelissari- 8

Tipos de Linguagens: Baixo Nvel

Vantagens: Maior velocidade de processamento e ocupam menor espao na memria. Desvantagens: Pouca portabilidade, ou seja, o cdigo gerado para um tipo de processador no serve para outro.

Prof. William Pelissari- 9

Tipos de Linguagens: Alto Nvel

So linguagens voltadas para que haja uma maior interao entre o homem e a mquina.

Necessitam de compiladores ou interpretadores para gerar as instrues do microprocessador.

Prof. William Pelissari- 10

Tipos de Linguagens: Alto Nvel

Vantagens: So compiladas ou interpretadas, tm maior portabilidade podendo ser executados em vrias plataformas com pouqussimas modificaes. Desvantagens: So mais lentas e ocupam mais memria.

Prof. William Pelissari- 11

Histrico

C foi originalmente desenvolvida por Dennis Ritchie

e K. Thompson nos Laboratrios Bell nos anos 70.Derivadas de duas linguagens anteriores chamadas BCPL e B.

Inicialmente para mquinas com o sistema operacional Tornou-se uma das mais importantes e populares nos Foi projetada para o desenvolvimento de programas

UNIX.

ltimos dias.

estruturados e modulares.
Prof. William Pelissari- 12

Histrico

Nos anos seguintes, a popularidade da linguagem C aumentou consideravelmente, aumentando tambm o surgimento de ferramentas de desenvolvimento. Inicialmente, muitas implementaes do C no traduziam fielmente a definio original, o que gerou alguns problemas de incompatibilidade A portabilidade proposta pela definio original ficou bastante comprometida.

Prof. William Pelissari- 13

Introduo
O Padro ANSI Buscando uma padronizao na definio da linguagem C, a American National Standard Institute (ANSI), desenvolveu um padro hoje bastante utilizado no mundo da linguagem C, chamado de C padro ANSI ou C ANSI. Quase todas as ferramentas de desenvolvimento da linguagem C atuais, seguem este padro.

Prof. William Pelissari- 14

Compiladores x Interpretadores
A nica linguagem que o computador entende a linguagem de mquina. Programas escritos em um linguagem de alto nvel, devem ser traduzidos para a linguagem de mquina. Os Programas que fazem esta traduo, classificam em: - INTERPRETADORES - COMPILADORES

Prof. William Pelissari- 15

Compiladores x Interpretadores
Os INTERPRETADORES, traduzem o cdigo fonte em linguagem de mquina atravs da interpretao de cada instruo feita a medida que o software executado. Necessitam de um componente interpretador presente na mquina. Os COMPILADORES, por sua vez, traduzem o cdigo fonte em linguagem de mquina atravs da gerao de um programa .OBJ, que aps ser linkeditado, torna-se um arquivo executvel. Em C os programas so compilados.

Prof. William Pelissari- 16

Como criar um programa


Basicamente trs passos : 1) Digitar o programa em um editor de texto e gravar atribuindo a extenso .c ou .cpp; 2) Compilar o programa (fonte) criando um arquivo com extenso .obj. Chamado de programa objeto; 3) Link-editar o programa objeto criando finalmente o programa executado (com extenso .exe).

Prof. William Pelissari- 17

Estrutura bsica de um programa


Um programa em C consiste de uma ou vrias funes, onde uma delas precisa ser denominada main e deve existir em algum lugar de seu programa. Esta funo marca o incio da execuo do programa.

Outras funes podem ser definidas pelo programador ou preencher a funo main, porm em um programa executvel em C, a funo main deve sempre existir.

Prof. William Pelissari- 18

Estrutura bsica de um programa


main(Argumentos) { /* incio do corpo da funo */ } /* trmino do corpo da funo */

Uma funo deve conter : - Um header que consiste do nome da funo - Uma lista de argumentos entre parnteses.

- Um bloco de instrues delimitado por chaves.


Prof. William Pelissari- 19

Estrutura bsica de um programa


O nome da funo, os parnteses e as chaves, so os nicos elementos obrigatrios de uma funo

Os comentrios podem aparecer em qualquer lugar de

um programa, devendo ser colocados entre os delimitadores /* e */

Letras minsculas e maisculas no so equivalentes Note que cada expresso dentro do bloco deve

em C.

terminar com um ponto-e-vrgula.


Prof. William Pelissari- 20

10

Exemplo de um programa em C #include <stdio.h> /* programa que imprime: Boa Noite */ void main () { printf("Boa Noite"); }

Prof. William Pelissari- 21

Estrutura bsica de um programa


Se utilizamos uma funo no corpo da funo main(), devemos incluir a biblioteca que contenha esta funo. Por exemplo : Se colocarmos a funo printf() no corpo da funo main(), devemos incluir a biblioteca stdio.h. Isto feito com a diretiva : #include, Assim: #include <stdio.h> void main() { printf("Boa Noite"); }

Prof. William Pelissari- 22

11

Ferramenta de Desenvolvimento Borland C++ 5.02


Nome do Arquivo Fonte Janela de cdigo Aps digitar, digite Ctrl+F9 para executar

Janela de mensagens e alarmes

Prof. William Pelissari- 23

Ferramenta de Desenvolvimento

Observe onde voc esta carregando o cdigo fonte

Prof. William Pelissari- 24

12

Questionrio 1

Onde a linguagem C foi desenvolvida e quando?

Explique a diferena entre programas interpretados e programas compilados.

Como formada uma funo na linguagem C?


Como inserir comentrios em um programa em C?

Prof. William Pelissari- 25

Questionrio 1

No programa abaixo, existem alguns erros, com a ajuda do compilador, tente descobri-los #include <stdiox.h> #include <conio.h> Main () ( printf("Boa Noite"); getch(); )
Prof. William Pelissari- 26

13

Regra de identificao

Todas as letras maisculas de A a Z e as minsculas de a a z , os dgitos de 0 a 9 e alguns caracteres especiais, podem ser utilizados na criao de cdigos em C.

Os nomes de variveis, funes e matrizes em C, obedecem a regra de que voce pode usar letras e nmeros, porem o primeiro digito deve ser apenas uma LETRA ou o caracter especial undescore (_).

Um nome no pode ser uma das palavras reservadas da linguagem C.


Prof. William Pelissari- 27

Regra de identificao

Exemplo de nomes vlidos : a y12 soma1 _estoque

Exemplos de nomes no vlidos : 2th (o primeiro caracter deve ser letra ou _ )

(inicia com um caracter ilegal () )

numero-ordem (caracter ilegal (-)) nome completo (espao em branco)

Prof. William Pelissari- 28

14

Regra de identificao

Um identificador de nome pode ter mais de 32 caracteres, porem somente os 32 primeiros sero reconhecidos.

Algumas implementaes do C, reconhece apenas os 8 (oitos) primeiros, assim os nomes : taxa_dia e taxa_diaria, nestes sistemas no tem diferenca, pois o compilador reconhece apenas os oitos primeiros caracteres.
Prof. William Pelissari- 29

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

So apenas 32 palavras reservadas que no podem ser utilizadas para outro propsito
Prof. William Pelissari- 30

15

Tipos de Dados
Em C existem 5 tipos vlidos:
tipo Palavra Reservada Quant. Bit Bytes Faixa

Caracter Inteiro Ponto flutuante Pont. Flutuante duplo Sem valor

Char Int Float Double void

8 16 32 64 0

1 2 4 8 0

-128 a 127 -32768 a 32767 3.4E-38 a 3.4E+38 1.7E-308 a 1.7E+308 Sem valor

Prof. William Pelissari- 31

Tipos de Dados
Modificadores de Tipos Com exceo do tipo void, os demais tipos podem ter alguns modificadores. Um modificador usado para alterar o significado do tipo para adequ-los melhor s necessidades do programador.

Prof. William Pelissari- 32

16

Tipos de Dados
Os modificadores so : signed, unsigned, long e short Exemplo de utilizao: Se uma varivel declarada como char ela ocupa 8 bit e tem a faixa de valores de -128 a 127, mais se o modificador unsigned colocado antes da palavra char, ela continua ocupando 8 bits, mais sua faixa de valores vai de 0 a 255.
Prof. William Pelissari- 33

Tipo de Dados Inteiro

Os dados inteiros so caracterizados pelos nmeros positivos ou negativos que no seja fracionrio. Em C referenciamos este tipo de dados com os seguintes identificadores :
Tipo do Inteiro Qt.Bit Faixa

int long int unsigned int unsigned long int

16 32 16 32

-32768 a 32767 -2.147.483.648 a 2.147.483.647 De 0 at 65535 De 0 at 4.294.967.295

Prof. William Pelissari34

17

Tipo de Dados Reais

Os dados reais so caracterizados pelos nmeros positivos, negativos, inteiros e os fracionrios. Em C referenciamos este tipo de dados com os seguintes identificadores :
Qt.Bit Faixa

Tipo do Inteiro

float double Long double

32 64 128

de 3.4e-38 at 3.4e+38 de 1.7e-308 at 1.7e+308 de -3.4e-4932 at 3.4e+4932

Prof. William Pelissari35

Tipo de Dados Caracteres

Os dados caracteres so caracterizados pelas sequencias de letras, nmeros e simbolos especiais delimitados por ( ) . Em C referenciamos este tipo de dados pelo identificadores : char podendo armazenar de 0 at 255 caracteres

Prof. William Pelissari36

18

Tipo de Dados Lgicos

Na linguagem C no existe o tipo de dados booleano , ou seja, no existe o valor lgico false ou true de forma predefinida. Em C qualquer valor igual a 0 (zero), considerado como valor lgico falso e qualquer valor diferente de 0 (zero), considerado como valor lgico verdadeiro.

Prof. William Pelissari37

Constantes

Constantes so valores que permanecem fixos e na linguagem C temos 4 tipos bsicos de constantes: Inteiras ponto-flutuante caracteres string (cadeia de caracteres)

Prof. William Pelissari- 38

19

Constantes numricas

As constantes do tipo Inteiras e de ponto-flutuante, representam nmeros. As constantes do tipo Inteiras podem ser escritas em trs sistemas de numerao, sendo : decimal (base 10) octal (base 8) hexadecimal (base 16)

Uma constante inteira decimal pode ser formada por qualquer combinao dos dgitos de 0 a 9. Se tem mais de dois dgitos, o primeiro no pode ser zero. Ex.: 5 13 230 540
Prof. William Pelissari- 39

Constantes numricas

Uma constante inteira octal pode ser formada por qualquer combinao dos dgitos de 0 a 7 e o primeiro deve ser zero. Ex.: 0 013 0656 0540 Uma constante inteira hexadecimal pode ser formada por qualquer combinao dos dgitos de 0 a 9 e de A a F (maisculas ou minsculas). Deve sempre iniciar com 0x ou 0X. Ex.: 0x 0x1 0xABC 0xabc

Normalmente a magnitude de uma constante inteira : Decimal = 32767 Octal = 07777 Hexa = 0x7FFF
Prof. William Pelissari- 40

20

Constantes numricas

As constantes do tipo ponto-flutuante um nmero na base 10 que contem casas decimais e/ou um expoente. Ex.: 0. 0.5 1.3 230.323 .540e2

Observe que o caracter que separa a casa decimal um ponto e no uma virgula Para representar um nmero com expoente, trocamos a base 10 pela letra e. Assim para representar 2 x 10, teremos: 200. ou 2e2 ou 2e+2 ou 2E2 ou 2.0e+2

Prof. William Pelissari- 41

Constantes caracteres

As constantes do tipo caracter consiste em um simples caracter colocado entre apstrofos. Ex.: A x 5 $

Uma constante de caracter tem valores inteiros correspondentes a um conjunto de caracteres especificos. Normalmente os computadores utilizam o conjunto de caracteres ASCII, onde cada caracter representado por uma combinao de 7 bits, Representando assim 2e+7 = 128 diferentes caracteres. Desta forma, cada constante de caracter, tem um valor inteiro correspondente.
Prof. William Pelissari- 42

21

Constantes caracteres
Caracter Valor Caracter Valor Caracter Valor Caracter Valor

A B C D E F G H I J K L

65 66 67 68 69 70 71 72 73 74 75 76

M N O P Q R S T U V W X

77 78 79 80 81 82 83 84 85 86 87 88

a b c d e f g h i j k l

97 98 99 100 101 102 103 104 105 106 107 108

0 1 2 3 4 5 6 7 8 9 DEL ESC

48 49 50 51 52 53 54 55 56 57 127 27

Prof. William Pelissari43

Constantes string

As constantes do tipo string consiste em um conjunto de caracteres colocados entre aspas. Ex.: Prof. William vasco So Luis Boa Noite !!! 235-2234 2*(I+3)/J

Algumas seqncias de caracteres podem ser includas dentro da string para possibilitar a formatao. Ex.: Esta a primeira linha\n e esta a segunda linha
Prof. William Pelissari- 44

22

Seqncia de escape

Alguns caracteres especiais e os no-imprimveis, so expressos como uma seqncia de escape. Uma sequencia de escape sempre comea co uma barra invertida (\) seguida por um caracter. Alguns comandos em C, so representados desta forma. Ex.:
Caracter Nova linha (line feed) FD Campainha (bell) Tabulao horizontal Tabulao vertical Aspas () Apstrofo () Interrogao (?) Barra invertida (\) Nulo (null) Seqncia de escape \n \a \t \v \ \ \? \\ \0 Valor ASCII 10 07 09 11 34 39 63 92 00
Prof. William Pelissari45

Variveis
As variveis so o aspecto fundamental em qualquer linguagem de computador.

Uma varivel nada mais que um espao de memria reservado para armazenar um certo tipo de dado. Uma

varivel deve receber um nome para servir de referncia e


a cada instante ela pode conter valores diferentes.

Prof. William Pelissari- 46

23

Declarao de Variveis
Declarar uma varivel significa reservar um espao em memria para um determinado tipo de dados e indicar que o contedo daquele espao, ser referenciado pelo o nome da varivel. Uma declarao de varivel consiste em um tipo seguido do nome da varivel. Exemplo: int num; char a; // uma varivel do tipo int // uma varivel do tipo char

Prof. William Pelissari- 47

Declarao de variveis: Para serem usadas, as variveis precisam ser declaradas de modo que o compilador possa reservar espao na memria para o valor a ser armazenado. A forma geral de uma declarao : tipo lista_de_variaveis; Exemplos: int i; unsigned int a, b, c; double salario;

Prof. William Pelissari48

24

Atribuio de valores s variveis


Aps ser declarada, a varivel pode receber valores. O operador de atribuio "=" indica que o valor direita ser atribudo varivel. O valor inicial pode ser atribudo de duas formas:
-

Durante a declarao da varivel Ex.: int i=0, j=10; Durante execuo de uma a funo

Prof. William Pelissari- 49

Tipos de Variveis
O tipo de uma varivel informa a quantidade de memria, em bytes, que ela ir ocupar e a forma como o seu contedo ser armazenado.

Os tipos de dados bsicos do C visto anteriormente devem ser utilizados para prototipar uma varivel conforme a necessidade do programa.

Prof. William Pelissari- 50

25

Nomes de Variveis
Voc pode usar quantos caracteres quiser para um nome de varivel com o primeiro caracter sendo obrigatoriamente um letra ou sublinhado(_). Uma varivel no pode ter o mesmo nome de uma palavra reservada do C e no dever ter o mesmo nome de uma funo. Na linguagem C, maisculas e minsculas tem tratamento diferenciado, assim, cont, Cont e CONT so trs variveis distintas.
Prof. William Pelissari- 51

Atribuio de valores s variveis


possvel atribuir a uma varivel o valor resultante de uma expresso. Ex.:

int a; a = (8+2)/2;
A atribuio de uma varivel do tipo char, pode ser feita de duas formas: - Atribuindo uma constante de caracter:

char b = A;
Atribuindo o cdigo ASCII correspondente antecedido pela barra invertida:
-

char b = \65
Prof. William Pelissari- 52

26

Analisando um Programa Exemplo


01 02 03 04 05 06 07 08 09 10 11 #include <stdio.h> int a=5; int b=5; int soma; // declarao de um inteiro // declarao de um inteiro // declarao de um inteiro

void main() { soma=a+b; printf("%d",soma); }

Prof. William Pelissari- 53

Analisando um Programa Exemplo


01 02 03 04 05 06 07 08 09 #include <stdio.h> int a=5, b=5, soma; void main() { soma=a+b; printf("%d",soma); }

Prof. William Pelissari- 54

27

Baixando e instalando o Code::Blocks


Voc pode baixar o Code::Blocks no seguinte endereo: http://www.codeblocks.org/downloads/5 Ou v ao site do Code::Blocks, www.codeblocks.org, e v em Downloads, Binaries. Para Windows baixe o arquivo codeblocks8.02-setup.exe Execute o arquivo que voc acabou de baixar para instalar o Code::Blocks. Execute o Code::Blocks e ele ir lhe mostrar a lista de compiladores suportados, indicando (tomara que sim) que o GNU GCC Compiler foi detectado. Clique sobre ele, clique em Set as default e OK.

Prof. William Pelissari - 55

Seleo de Compilador no Code::Blocks

Seleo de compilador no Code::Blocks


Prof. William Pelissari - 56

28

Testando o ambiente e o compilador


Este passo opcional, mas serve como uma pequena introduo ao Code::Blocks, e para verificar se o ambiente foi instalado corretamente. Com o Code::Blocks aberto, clique em: File New project Escolha Empty project clique Go Clique Next Em Project title coloque o ttulo (ex: Ol Mundo). Em Folder to create project in escolha a pasta onde seu projeto vai ficar. Nos campos abaixo voc define o nome do arquivo de projeto (.cbp) e visualisa como vai ficar a estrutura de pastas. Clique Next. Prof. William Pelissari - 57

Testando o ambiente e o compilador

Nesta prxima tela voc escolhe o compilador (O GNU GCC Compiler j vai estar selecionado, pois definimos ele como padro). Aqui tambm voc escolhe se quer que o Code::Blocks crie as configuraes de debug e release, bem como os locais onde ele ir armazenar os executveis gerados (por padro na subpasta bin) e os arquivos objeto (por padro na subpasta obj). Deixe como est e clique Finish. Seu projeto foi criado. Vamos navegar um pouco no Code::Blocks e ver onde so definidas as principais propriedades do projeto.

Prof. William Pelissari - 58

29

Configurando Bibliotecas

Para utilizar bibliotecas externas e engines voc vai precisar informar ao Code::Blocks onde procurar pelos cabealhos (.h) e pelas bibliotecas (.a, .dll) que faro parte do seu projeto. Para fazer isto, v no menu Project >> Build options... A primeira aba, Compiler settings, lista basicamente as opes do compilador, e permite utilizar #defines ao nvel de todo o projeto. Na aba Linker settings onde voc vai informar quais bibliotecas sero linkadas ao seu projeto. Em Link libraries basta clicar em Add para adicionar as bibliotecas (libs). Basta os nomes, sem extenso, j que o caminho para elas voc vai informar em outra aba. Na aba Search directories onde voc vai informar onde o Code::Blocks ir encontrar os arquivos.

Prof. William Pelissari - 59

Conhecendo o Ambiente
A aba Compiler onde devem estar as pastas que contm os cabealhos (.h) que voc ir utilizar. Basta clicar em Add e ir adicionando as pastas. A aba Linker onde ficam as pastas que contm os arquivos .a e .dll que sero linkados ao seu projeto. Note que ao lado esquerdo voc tem o nome do seu projeto e os nomes das configuraes (no caso Debug e Release). Todas as modificaes que voc fizer nas abas mostradas, afetaro apenas a configurao que estiver selecionada, ou afetaro todo o projeto se o nome do projeto estiver selecionados. Isto importante, pois alguns cabealhos e bibliotecas so nicas para qualquer configurao, e portanto mais fcil setar ao nvel do projeto. Outras so separadas em debug e release, portanto devem ser definidas de forma diferentes para cada configurao. Clique Cancel para sair desta tela.

Prof. William Pelissari - 60

30

Conhecendo o Ambiente

Outra tela que vale uma visita indo no menu Project >> Properties... Aqui voc pode mudar o ttulo do seu projeto, e alterar outras configuraes. Clique na aba Build targets. Aqui voc modifica os modos de compilao (ou build targets), que na maioria dos casos sero Debug e Release. Em Type voc define o tipo de aplicao (console, GUI (com janelinha), ou se uma DLL ou uma biblioteca o que voc est desenvolvendo). Em Output filename voc define o nome e local do executvel resultante. No vou entrar em detalhes para no alongar muito. Clique em Cancel. Let's code!

Prof. William Pelissari - 61

Conhecendo o Ambiente
Let's code! Clique no menu File >> New >> Empty file. Quando o Code::Blocks perguntar se deseja adicionar o arquivo ao seu projeto, clique Yes. Uma janela para salvar o arquivo ir aparecer. Salve como main.cpp. Na tela seguinte, ele ir lhe perguntar em quais configuraes deseja adicionar este arquivo. Clique em Select all, OK. Digite o cdigo abaixo no arquivo main.cpp: #include <stdio.h> /* programa que imprime: Ol Mundo */ void main() {

printf(Ol Mundo!);

Ficou difcil de visualizar o resultado ?


Prof. William Pelissari - 62

31

Conhecendo o Ambiente

Ajuste o cdigo no arquivo main.cpp, conforme abaixo: #include <stdio.h> /* programa que imprime: Ol Mundo */ void main() {
printf(Ol Mundo!); getch();

Prof. William Pelissari - 63

Comandos do Ambiente

Para compilar e executar o programa, a barra de ferramentas do Code::Blocks oferece algumas opes: Build: (Ctrl+F9) Compila (constri) o programa. Run: (Ctrl+F10) Executa o programa j compilado. Build and run: (F9) Faz os dois passos acima. Compila o programa, e se no houver erros j o executa. Rebuild: (Ctrl+F11) Recompila todo o programa, mesmo os arquivos que j foram compilados antes. Clique em Build and run. Se o programa foi compilado e executou corretamente, sua configuraao est ok.

Prof. William Pelissari - 64

32

Atribuio de valores s variveis


Na linguagem C, no temos o tipo string pre-definido, o que nos leva a utilizar os vetores de caracter. Desta forma um string em C ser atribuda a um vetor do tipo char na sua inicializao.

char nome[20] = William Pelissari;


A Atribuio de uma constante de caracter diretamente a um vetor de caracter j declarado e no inicializado, s pode ser feito com auxilio de outras funes.Ex.:

char nome[20]; strcpy(nome,William Pelissari);


Prof. William Pelissari- 65

Analisando um Programa Exemplo


#include <stdio.h> #include <conio.h> char nome[20]; void main() { printf("Digite o seu nome : "); scanf("%s", nome); printf("Ola! %s ",nome); getch(); }

Prof. William Pelissari- 66

33

Converso de tipos
Algumas vezes o compilador faz uma converso automtica quando vai atribuir um valor de uma expresso a uma varivel. Ex.: sendo: void main() { float f1,f = 21.45; char c1,c = 'A'; int i1,i = 10; i1 = f; // i1 receber printf("%d\n",i1); f1 = i; // f1 receber printf("%f\n",f1); c1 = i; // c1 receber printf("%d\n",c1); i1 = c; // i1 receber printf("%d\n",i1); getch(); }
Prof. William Pelissari- 67

o valor 21 o valor 10.00 o valor 10 o valor 65

Converso de tipos
O Programador pode forar a converso. Ex.: sendo:
void main() { int a = 65; float x = 2.1, y = 8.95, z; char c; c = (char)a; printf("Valor de c ( %c ) --> %d\n", c,c); c = (char)(a + (int)x); printf("Valor de c ( %c ) --> %d\n", c,c); z = (float)((int)x * (int)y); printf("Valor de z ( %f ) --> %d\n", z,z); z = (float)((x * y)); printf("Valor de z ( %f ) --> %d\n", z,z); getch(); }
Prof. William Pelissari- 68

34

Entrada e Sada Para que exemplos possam ser construdos, necessitamos conhecer um pouco sobre entrada e sada de dados. Um programa que no fornece resultados nem pede valores para operar no deve ter grande utilidade. A entrada de dados ser feita pelo teclado e a sada poder ser vista na tela do computador. Com isto, possvel resolver problemas bastante interessantes.

Prof. William Pelissari69

Biblioteca Padro Para termos acesso biblioteca que contm as funes, macros e variveis que facilitam a entrada e sada de dados, o programa deve conter a declarao #include <stdio.h> no incio do programa. Normalmente os programadores usam os smbolos menor (<) e maior (>), mas possvel a alternativa #include "stdio.h"

Prof. William Pelissari70

35

Sada - A Funo printf A funo printf permite que dados sejam escritos na tela do computador. O formato de uso simples e bastante flexvel, permitindo que os dados possam ser apresentados de diversas maneiras.

Syntax: printf(controle, arg1, arg2, ...);


Onde os argumentos so impressos de acordo com a maneira indicada pelo controle. Um exemplo simples pode tornar a explicao mais clara.
Prof. William Pelissari71

Sada - A Funo printf O programa abaixo imprime o valor da varivel ano. #include <stdio.h> #include <conio.h> // Biblioteca de entrada e sada main() { ARGUMENTO int ano = 2012; // Declarei ano como inteiro e ja defini seu valor. printf( Estamos no ano %d ", ano ); getch(); } CONTROLE Na tela do computador ser impresso: Estamos no ano 2012;
Prof. William Pelissari72

36

Sada - A Funo printf O controle, que deve aparecer sempre entre " ", define como sero impressos os argumentos. Neste controle podem existir dois tipos de informaes: caracteres comuns e cdigos de formatao. Os caracteres comuns, como no exemplo (Estamos no ano) so escritos na tela sem nenhuma modificao. Os cdigos de formatao, aparecem precedidos por um % e so aplicados aos argumentos na ordem em que aparecem.
Prof. William Pelissari73

Cdigos de Formatao
Deve haver um cdigo de formatao para cada argumento. O cdigo %d indica que o valor armazenado em ano deve ser impresso na notao inteiro decimal.
Cdigo %c %d %i %e %f %o %s %u %x %% Comentrio Caractere simples Inteiro decimal com sinal Inteiro decimal com sinal Real em notao cientfica com e Real em ponto flutuante Inteiro em base octal Cadeia Caracteres Inteiro decimal sem sinal Inteiro em base hexadecimal (letras minsculas) Imprime o caracter %
Prof. William Pelissari74

37

Sada justificada
Um sinal de menos para especificar que o argumento deve ser tabulado a esquerda no seu campo de impresso pode ser acrescentado. Exemplo a seguir ilustra os dois tipos de justificao. Observe main() { int ano = 2012; printf("Justificado a esquerda Ano = %-8d\n", ano); printf("Justificado a direita Ano = %8d\n", ano); getch(); }

Prof. William Pelissari75

Especificador de Preciso
O especificador de preciso consiste de um ponto que separa o nmero que define o tamanho do campo do nmero que especifica o mximo nmero de dgitos a serem impressos a direita do ponto em um nmero do tipo float ou double #include <stdio.h> #include <conio.h> Observe main() { float r = 1.0/3.0; printf("O resultado e = %9.5f\n", r); getch(); }
Prof. William Pelissari76

38

Cdigos de Formatao
Ao executar o exemplo verifique que \n no impresso. A barra inclinada chamada de seqncia de escape, indicando que o prximo caracter no para ser impresso mas representa caracteres invisveis, por exemplo. Alguns destes caracteres so:
Cdigo \n \t \b \f \0 Descrio Passa para uma nova linha Tabulao Retorna um caracter Salta uma pgina Caracter nulo

Prof. William Pelissari77

Entrada - A Funo scanf A funo scanf pode ser utilizada para entrada de dados a partir do teclado. Esta funo equivalente funo printf e seu formato : Syntax: scanf(controle, arg1, arg2, ...); Uma diferena fundamental existe entre as duas funes que os argumentos da funo scanf so os endereos das variveis que iro receber os valores lidos e no, como em printf, as prprias variveis.

Prof. William Pelissari78

39

Entrada - A Funo scanf A indicao que estamos referenciando um endereo e no a varivel se faz pelo operador &. Por exemplo, o comando scanf("%d %d", &a, &b) espera que dois valores inteiros sejam digitados no teclado. O primeiro armazenado na varivel a e o segundo em b.

Prof. William Pelissari79

Entrada - A Funo scanf

Cada varivel a ser lida, dever ser precedida pelo caracter & Para seqncia de caracteres (%s), o caracter & no dever ser usado.

Prof. William Pelissari80

40

Entrada - A Funo scanf int main() { int numero; char string[30]; printf("Digite uma string: "); scanf("%s",string); printf("Digite um numero: "); scanf("%d",&numero); printf("A string digitada foi: \t%s\n", string); printf("O numero digitado foi: \t%d\n", numero); }
Prof. William Pelissari81

Lendo e Imprimindo Caracteres Para ler e escrever caracteres do teclado as funes de entrada e sada mais simples so getchar e putchar que esto na biblioteca stdio.h #include <stdio.h> #include <conio.h> main() { char c; int i; printf("Entre com um caracter entre 0 e 9.\n"); c = getchar(); printf("O caracter lido foi o "); putchar(c); getch(); } Prof. William Pelissari82

41

Lendo e Imprimindo Caracteres Na definio original da funo getchar a entrada armazenada at que a tecla ENTER seja apertada. Com isto caracteres ficam em um buffer esperando para serem tratados. Em ambientes onde necessrio tratar o caracter imediatamente esta funo pode no ser til. Muitos compiladores incluem funes para permitir entrada interativa de dados. As duas funes mais comuns so getch e getche e seus prottipos podem ser encontrados na biblioteca <conio.h>.

Prof. William Pelissari83

Lendo e Imprimindo Caracteres

Prof. William Pelissari84

42

Lendo e Imprimindo Strings Um string em C um vetor de caracteres. Para usar strings preciso primeiro definir um espao para armazen-los. Para isto preciso declarar o tamanho e o tipo do vetor. Por exemplo: char nome[40];

Quando definir o tamanho do vetor observar que todo string em C termina com o caracter null ('\0'), que automaticamente inserido pelo compilador.
Portanto o vetor nome pode armazenar no mximo 39 caracteres.
Prof. William Pelissari85

Lendo e Imprimindo Strings Exemplo : #include <stdio.h> #include <conio.h> void main ( ) { char nome[40]; puts("Por favor, qual o seu nome."); scanf("%s", nome); printf(Em que posso ajuda-lo %s?\n", nome); getch(); }

Prof. William Pelissari86

43

Expresses e Operadores

Adio:
Expresso1 + expresso2

Primeiro as duas expresses sero avaliadas e s depois a adio realizada.


Pode ter uma converso de tipos, depois da avaliao das expresses: float x,y; int z; z=y+x;

Prof. William Pelissari87

Expresses e Operadores

Subtrao:
Expresso1 - expresso2

As duas expresses so avaliadas, depois a subtrao realizada, e o valor obtido o valor da expresso.
- Expresso A semntica de (-expresso) a mesma do que (0 - expresso).
Prof. William Pelissari88

44

Expresses e Operadores

Multiplicao:
Expresso1 * expresso2 As duas expresses so avaliadas, depois a multiplicao realizada, e o valor obtido o valor da expresso.

Prof. William Pelissari89

Expresses e Operadores

Diviso:
Expresso1 / expresso2 Diferente das outras linguagens, em C o / designa ao mesmo tempo a diviso dos inteiros e dos reais.

Prof. William Pelissari90

45

Expresses e Operadores

Diviso:
Caso os dois operandos inteiros sejam positivos, o sistema arredonda o resultado da diviso : 7 / 2 retorna 3 Caso os dois operandos inteiros sejam de sinal diferentes, o

arredondamento depende do compilador.

-7 / 2 ou 7 / -2

retornam -3 ou -4 (geralmente -4)


Prof. William Pelissari91

O Mdulo % Expresso1 % Expresso2 As duas expresses devem retornar valores de tipo inteiro O mdulo retorna o resto da diviso inteira.

7 % 2 retorna 1
Caso um dois operadores sejam negativo, o sinal do mdulo depende da implementao, mas geralmente o sinal do primeiro 7 %2 -7 % 2 7 % -2 retornam 1 retornam -1 retornam 1
Prof. William Pelissari92

46

Operadores Relacionais Expresso1 operador Expresso2

Operador == != > >= < <=

Relao Igual Diferente Maior Maior ou igual Menor Menor igual

O resultado da comparao ser um valor lgico :


1 - Verdadeira e; 0 - Falsa.
Prof. William Pelissari93

Operadores Lgicos Expresso1 operador Expresso2

Operador && || !

Relao E (and) Ou (or) Negao (not)

exemplos: (a && b) (a == 0) || (b != 0) ! ((a = = 0) && (b<3))


Prof. William Pelissari94

47

Operador &

o operador de endereamento (ponteiro): Ele permite apontar qualquer varivel: &a o endereo da varivel a

Prof. William Pelissari95

Incremento x = x + 1; x++; ++x; s+=i; z = y++; z = ++y; /* s=s+i*/ /* z=y e depois y++ */ /* y++ e depois z = y (novo) */

Prof. William Pelissari96

48

Decremento

y = y - 1; y--; --y; s-=i; z = y--; z = --y;

/* isto decrementa y */ /* isto decrementa y */ /* isto decrementa y */ /* s=s-i*/ /* z =y e depois y- - */ /* y-- e depois z=y (o novo)*/

Prof. William Pelissari97

Condicional (IF) if (b >= 3.0) a = 2.0; else a = 10.5; Igual a : a = (b >= 3.0 ? 2.0 : 10.5 ); c = (a > b ? a : b); c = (a > b ? b : a); /* c=maior(a,b) */ /* c=menor(a,b) */

Prof. William Pelissari98

49

Questionrio 2
Baseado no que foi visto em sala de aula, faa: Escreva um programa que declare variveis do tipo inteiro, char e float, inicializando-as, e imprima os seus valores. Faa um programa capaz de ler um valor real e escreve-lo com apenas uma casa decimal.

Prof. William Pelissari99

Questionrio 2
Sabendo que os argumentos da funo "printf" podem ser expresses (a+b, a/b, a*b...), e no somente argumentos, faa um programa capaz de ler um valor inteiro X e imprimir na tela o cubo, o quadrado e a metade de X. Ex.: para X= 6, imprimir Cubo = 18; Quadrado = 36; Metade = 3.

Prof. William Pelissari100

50

Exerccios
Escreva um programa que leia 3 nmeros reais e imprima a mdia aritmtica destes nmeros. Escreva um programa que leia uma temperatura em graus Celsius e apresenta o valor em Fahrenheit. (Formula: F = (9 X C + 160)/5) Escreva um programa que leia uma temperatura em graus Fahrenheit e apresenta o valor em Celsius. (Formula: C = (F -32) * (5/9)

Prof. William Pelissari101

Exerccios
Escreva um programa que leia 3 nmeros reais e se a soma dos 3 nmeros for maior do que 50 imprima a mdia aritmtica destes nmeros, seno imprima a soma. Escreva um programa que leia uma temperatura em graus Celsius e se a temperatura for maior do que 38 graus escreva Temperatura muito quente, se for menor do que 10 graus escreva Temperatura muito fria, e para a temperatura entre 11 e 37 graus escreva Temperatura Normal.

Prof. William Pelissari102

51

Exerccios
1) Faa um algoritmo que, dada a idade de um nadador, classifique-o em uma das seguintes categorias: infantil A = 5 - 7 anos. infantil B = 8 - 10 anos. juvenil A = 11 - 13 anos. juvenil B = 14 - 17 anos. senior = maiores de 18 anos.

Prof. William Pelissari103

Exerccios
2 - Suponha-se que em um mercado exista apenas os produtos a, b e c. O produto a vale R$10,00, o b R$ 5,25 e o c R$ 20,00. Um cliente comprou: 5 produtos a, 3 produtos b e 7 produtos c. Faa um programa que calcule o valor da conta deste cliente e a imprima na tela. (valor com apenas duas casas depois da vrgula).
Prof. William Pelissari104

52

Exerccios
3 - Faa um programa que calcule o salrio lquido de um funcionrio, onde ser informado o Valor da Hora trabalhada, o nmero de Horas trabalhadas no ms e o percentual de desconto de INSS. Deve saber qual seu salrio bruto para realizar o desconto.

Prof. William Pelissari105

Exerccios
4 - Faa um programa que leia o ano de fabricao, modelo, valor e cor de 4 carros. -Apresente a marca e cor dos veculos com valor acima de 30.000 ou ano de fabricao acima de 2001; -Apresente o veculo mais caro da cor Prata ou Preto.

Prof. William Pelissari106

53

Exerccios
5 - Um empregado recebeu 30% de aumento em seu salrio, faa um programa que leia o salrio atual, calcule o valor do acrscimo e o salrio final, apresentando esses valores para o usurio.

Prof. William Pelissari107

54