Vous êtes sur la page 1sur 36

Sumrio a

1 A linguagem de Programao C ca 1.1 Conceitos Introdutrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.2 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 2 2 3 3 4 4 5 7 7 7 9 10 11 11 11 11 11 12 12 13 14 14

Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linguagem de programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca Tipos de Linguagens de programao ca . . . . . . . . . . . . . . . . . . . . . . . . .

A linguagem C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 Particularidades da linguagem C . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fases de elaborao de um programa em C . . . . . . . . . . . . . . . . . . . . . . ca O Compilador GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Organizao de um programa em C . . . . . . . . . . . . . . . . . . . . . . . . . . ca Compilao de um programa em C . . . . . . . . . . . . . . . . . . . . . . . . . . . ca

2 A sintxe da linguagem C a 2.1 Primeiros programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.1.3 2.2 Impresso de mensagem no display . . . . . . . . . . . . . . . . . . . . . . . . . . . a Soma de dois nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A sintaxe do C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 Tipos bsicos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a Modicadores dos tipos bsicos de dados a . . . . . . . . . . . . . . . . . . . . . . .

Identicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3

Expresses C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o

3 Comandos de Controle 3.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca

3.1.1 3.1.2 3.1.3 3.1.4 3.1.5

Comandos de seleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca O comando for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comando while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comando switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comando do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14 16 24 25 27 29 29 31 32 33

4 Matrizes e Strings 4.0.6 4.0.7 4.0.8 4.0.9 Matrizes Unidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Matrizes bidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Matrizes de Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a funo gets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca

Cap tulo 1

A linguagem de Programao C ca
1.1
1.1.1

Conceitos Introdutrios o
Programa

Um programa de computador uma sequncia de linhas de texto, contendo instrues espec e e co cas, em uma linguagens de programao (programa fonte), em acordo com um determinado algoritmo desenvolvido por ca um programador. Aps compilado, transforma-se em programas executveis (programa objeto, software). o a Este conjunto de palavras, que formam linhas de comandos, devero estar dentro da padronizao da a ca linguagem escolhida, obedecendo critrios de execuo. e ca

1.1.2

Programar

Programar um computador, denir detalhadamente os passos lgicos que o computador precisa seguir e o para executar uma tarefa determinada, como por exemplo a soluo particular de um problema. ca

1.1.3

Algoritmo

Algoritmo a descrio de um conjunto de comandos que, resultam numa sucesso nita de aes. Ao e ca a co ca um acontecimento que, a partir de um estado inicial, aps um per e o odo de tempo nito, produz um estado nal previs e bem denido. vel

1.1.4

Linguagem de programao ca

Uma linguagem de programao um mtodo padronizado para expressar instrues para ca e e co um Computador. E um conjunto de regras sintticas e semnticas usadas para denir um a a programa de computador. Uma linguagem permite que um programador especique precisamente sobre quais dados um computador vai atuar, como estes dados sero armazenados ou transimitidos e quais aes devem ser tomadas a co sob vrias circunstncias. O conjunto de palavras, compostos de acordo com essas regras, constituem o a a 1

Conceitos Introdutorios

cdigo fonte ou programa fonte de um software. Esse cdigo fonte depois traduzido (atravs de o o e e um programa compilador) para cdigo de mquina ou programa objeto, que executado pelo o a e processador.

1.1.5

Tipos de Linguagens de programao ca

Exsten trs tipos de linguagens de programao de computadores: de alto, mdio e baixo n e ca e vel. Linguagens de baixo n vel: so linguagens totalmente orientadas para a mquina, ou seja, so as que a a a mais se aproximam do Cdigo de Mquina, ou seja, dos 0 e 1, e h a necessidade de se conhecer o a a solidamente o hardware. Os programas resultantes destas linguagens so de pequen a ssimo tamanho e de extrema rapidez. Exemplo: Assembly, Linguagem C. C uma linguagem de programao relae ca tivamente minimalista que opera prximo do hardware, e mais semelhante ` linguagem assembly o e a do que as restantes linguagens. Certamente, C por vezes referida como uma assembly porttil. e a O cdigo de C pode ser compilado para e corrido em quase todos os computadores. C t o e picamente chamada de uma linguagem de baixo n ou de n mdio, indicando assim o quanto perto ela vel vel e opera com o hardware. Linguagens de Alto N vel: uma linguagem mais orientada para o problema, de modo que o e programador deve dar pouca ou nenhuma ateno `s caracter ca a sticas do computador que ir executar a o programa. Os programas resultantes destas linguagens no so to rpidos. Exemplo: Delphi, a a a a Fortran, Visual Basic, Pascal, o antigo Clipper, etc.

1.2

A linguagem C

C uma linguagem de programao estruturada e padronizada criada em 1972 por Dennis Ritchie e Ken e ca Thompson no centro de Pesquisas da Bell Laboratories. Uma de suas primeiras aplicaes prticas foi a co a reescrita do Sistema Operacional UNIX, at ento escrito em assembly. Em meados de 1970 o UNIX saiu e a do laboratrio para ser liberado para as universidades. Foi o suciente para que o sucesso da linguagem o atingisse propores tais que, por volta de 1980, j existiam vrias verses de compiladores C oferecidas co a a o por vrias empresas, no sendo mais restritas apenas ao ambiente UNIX, porm compat a a e veis com vrios a outros sistemas operacionais. O C uma linguagem de propsito geral, no entanto mais utilizada e o e escrever compiladores, analisadores lxicos, bancos de dados, editores de texto, etc.. A linguagem C e pertence a uma fam de linguagens cujas caracter lia sticas so: portabilidade, modularidade, compilao a ca separada, recursos de baixo n vel, gerao de cdigo eciente, conabilidade, regularidade, simplicidade ca o e facilidade de uso [1]. Muitas linguagens de programao foram inuenciadas por C, sendo que a mais ca utilizada atualmente C++, que por sua vez foi uma das inspiraes para Java [2]. e co

Conceitos Introdutorios

1.2.1

Particularidades da linguagem C

C uma linguagem de programao relativamente minimalista que opera bem prximo do hardware, e ca o e mais semelhante ` linguagem assembly do que as restantes linguagens. Certamente, C por vezes e a e referida como uma assembly porttil. O cdigo de C pode ser compilado para ser rodado em quase a o todos os computadores/sistemas operativos. C t e picamente chamada de uma linguagem de baixo n vel ou de n vel mdio, indicando assim o quanto perto ela opera com o hardware. Essa propriedade no e a foi acidental; A Linguagem C foi criada com um objectivo em mente: facilitar a criao de programas ca extensos com menos erros recorrendo ao paradigma da programao algor ca tmica ou procedimental [3]. A linguagem de programao C formada por 32 palavras-chave (ou palavras reservadas) e pelo conjunto ca e de regras sintaticas [4]

1.2.2

Fases de elaborao de um programa em C ca

1. Plantear o problema a ser resolvido, observando as capacidades e limitaes do computador. co 2. Elaborao de um algoritmo (geralmente um uxograma), o qual bsicamente um mtodo parca e a e ticular de recioc nio no qual so denidos com clareza os passos ou instrues necessrias para a a co a soluao imaginada. c 3. Codicao das nossas instrues numa linguagem de programao de alto n ca co ca vel (PROGRAMA FONTE). 4. Compilao do programa fonte, isto traduo do programa escrito em linguagem de programao ca e ca ca de alto n vel para linguagem de mquina (PROGRAMA OBJETO). O Montador (assembler) a e o programa que transforma o cdigo escrito na linguagem Assembly em linguagem de mquina, o a substituindo as instrues, variveis pelos cdigos binrios e endereos de memria correspondentes. co a o a c o Os compiladores de vrias linguagens de alto n a vel fazem a compilao dos programas em duas ca etapas, na primeira transformando o cdigo fonte em cdigo Assembly e em seguida gerando o o o binrio com a ajuda de um Assembler. a 5. Teste do programa. Para que uma seqncia de instrues seja um programa em C, ele dever ser escrito empregando a ue co a sintaxe da linguagem C. Um programa em C podem ser elaborados atravs do aux de um editor de e lio texto como por exemplo o VI, VIM, PICO, EMACS, KWRITE, KEDIT que frequentemente acompanham as distribuies do sistema operacional GNU/LINUX. Os arquivos de texto contendo programas devero co a ser gravados com a extenso .c, exemplo: a area.c autoconsistente.c correlation.c

Conceitos Introdutorios caos.c

1.2.3

O Compilador GCC

O GNU Compiler Collection (chamado usualmente por GCC) um conjunto de compiladores de line guagens de programao produzido pelo projecto GNU. E software livre distribu pela Free Software ca do Foundation (FSF) sob os termos da GNU GPL, e um componente-chave de conjunto de ferramene tas GNU. E o compilador padro para sistemas operativos UNIX e Linux e certos sistemas operativos a derivados tais como o Mac-OS X [5]. Originalmente suportava somente a linguagem de programao C e era designado GNU C Compiler ca (compilador C GNU). Com o tempo ganhou suporte `s linguagens C++, Fortran, Ada, Java e Objectivea C, entre outras.

1.2.4

Organizao de um programa em C ca

A gerao do programa executvel a partir do programa fonte obedece a uma seqncia de operaes antes ca a ue co de tornar-se um executvel. Depois de escrever o programa fonte em um editor de textos, o programador a aciona o compilador que no Linux chamado pelo comando gcc. Essa ao desencadeia uma seqncia e ca ue de etapas, cada qual traduzindo a codicao do usurio para uma forma de linguagem de n inferior, ca a vel que termina com o executvel criado pelo lincador ou linkeditor. a Todo programa em C consiste em uma ou mais funes. A unica funo que necessriamente precisa co ca a estar presente a denominada main() que a primeira funo a ser chamada quando a execuo do e e ca ca programa comea. c A forma geral de um programa em C a seguinte: e declara~es globais co tipo devolvido main{lista de par^metros} a { seq^ncia de comandos ue }

tipo devolvido f1{lista de par^metros} a { seq^ncia de comandos ue }

tipo devolvido f2{lista de par^metros} a { seq^ncia de comandos ue }

Conceitos Introdutorios . . . tipo devolvido fN{lista de par^metros} a { seq^ncia de comandos ue }

Comentrios no programa so colocados entre /* e */ no sendo considerados na compilao. Cada a a a ca instruo encerra com ; (ponto e v ca rgula) que faz parte do comando.

1.2.5

Compilao de um programa em C ca

O processo de compilao envolve os seguintes passos: ca 1. Criar o programa, 2. Compilar o programa, 3. Linkeditar o programa com as funes necessrias da biblioteca. co a Para elaborar os programas em C usando o sistema de arquivos do LINUX empregaremos o seguinte esquema;

Conceitos Introdutorios

bin

home

usr

nmsotomayor

programas

programa1

programa2

programa3

Figura 1.1: Sistema de arquivos para armazenamento dos programas.

Cap tulo 2

A sintxe da linguagem C a
2.1
2.1.1

Primeiros programas
Impresso de mensagem no display a

Um dos processos mais simples que pode ser resolvido por um computador imprimir uma mensagem e no display a pedido do programador. A mesagem pedida ser: a Ola pessoal! Este o meu primeiro programa em C. e A mensagem estar sujeita a uma formatao simples isto a frase Ol pessoal! dever aparecer na a ca e a a primeira linha, com uma tabulao, e a segunda frase, Este o meu primeiro programa em C., na ca e segunda linha tambm com uma tabulao. Embora o algoritmo simples, mostramos o uxograma e ca e correspondente na gura 2.1.

INICIO

Print Ol pessoal!

FIM
Figura 2.1: Fluxograma para um processo que ordena ao computador imprimir uma mensagem no display.

Primeiros Programas A seguir apresentamos o cdigo ou programa fonte do processo na linguagem C, o #include <stdio.h> /*Este programa imprime uma mensagem*/ void main() { printf("\n\tOl pessoal!\n\tEste o meu primeiro programa em C\n\n"); a e } Para editar o cdigo usamos o software VI coma sintxe: o a vi teste.c aps salvar o programa fonte, compilamos ele atravs do comando: o e gcc teste.c

Ser gerado um arquivo executvel com o nome genrico a.out. Para testarou rodaro programa a a e usamos o comando: ./a.out que indica executar o arquivo a.out no diretrio corrente. o E possivel criar um nome espec co para o cdigo executvel, para isso empregamos o comando: o a gcc teste.c -o teste.exe Ao inves do genrico a.out ser criado o arquivo executvel teste.exe o qual pode ser rodadocom o e a a comando: ./teste.exe A primeira linha um cabealho da biblioteca padro C (<stdio.h> do ingls standard input/output e c a e header=cabealho padro de entrada/sa c a da). Possui denies de subrotinas relativas `s operaes de co a co entrada/sa da, como leitura de dados digitados no teclado e exibio de informaes na tela do programa ca co de computador. A diretiva #include <stdio.h> indica ao processador para tratar o contedo do arquivo u especicado como se esses contedos aparecem no programa principal, no ponto em que a diretiva aparece. u A segunda linha insere um comentrio Este programa imprime uma mensagem. Comentrios no a a a sa processados pelo compilador e servem apenas como gu de referncia ao programador. Comentrios o a e a iniciam aps / e terminam com /. o A terceira linha o in do programa principal (main), a seguir todo o que estiver entre as chaves e cio { e } constitui o conjunto de instrues do programa principal. Cada intruo do programa tem que co ca terminar com o caracter ;. O termo void indicativo de que o programa principal no retorna valores. e a

Primeiros Programas

A funo printf() parte de um conjunto de funes pr-denidas armazenadas na biblioteca padro ca e co e a de rotinas da linguagem C stdio.h. Ela permite apresentar na tela os valores de qualquer tipo de dado. O primeiro argumento de printf() uma cadeia de caracteres chamados de controle, colocados entre e aspas. Esta cadeia pode especicar atravs de caracteres especiais (chamados seqncias de converso) e ue a quantos outros argumentos estaro presentes nesta invocao da funo. Uma cadeia de caracteres sem a ca ca seqncias de converso ser impressa na tela. ue a a

2.1.2

Soma de dois n meros u

Um outro processo simples que pode ser resolvido pelo computador somar dois nmeros reais e imprimir e u o resultado da soma. Para isso ser necessrio primeiramente fornecer a ele os valores dos nmeros a a a u serem somados. A gura 2.2 mostra o uxograma correspondente.

INICIO

LER a, b

SOMA=a + b

Print SOMA

FIM
Figura 2.2: Fluxograma para um processo que ordena ao computador somar dois nmeros a e b e mostrar u o resultado da soma no display.

#include <stdio.h> void main() { int a,b,soma; printf("\n\tIngresse o valor de a: "); scanf("%d",&a); printf("\n\tIngresse o valor de b: ");

Primeiros Programas scanf("%d",&b); soma=a+b; printf ("\n\tA soma de %d e %d e: %d \n\n", a,b,soma); }

10

2.1.3

Exemplos

1. Faa um programa em linguagem C que pea o seu nome e idade e imprima esses dados no display. c c #include <stdio.h> int main () { char nome[100]; int idade; printf ("\n\t\tDigite o seu nome completo:\n\n\t\t"); scanf("%[A-Z a-z]",&nome); printf ("\n\t\tDigite a sua idade:\n\n\t\t"); scanf("%d",&idade); printf ("\n\t\tO seu nome completo : %s\n",nome); e printf ("\n\t\tA sua idade : %d anos\n\n",idade); e return(0); } 2. Faa um programa em linguagem C que calcule a mdia aritmtica de duas notas e imprima o c e e valor no display. #include <stdio.h> void main() { float nota1,nota2,media; printf("\n\tIngresse o valor da nota1: "); scanf("%f",&nota1); printf("\n\tIngresse o valor da nota2: "); scanf("%f",&nota2); media=(nota1+nota2)/2.0; printf ("\n\tA media das notas %f e %f e: %f \n\n", nota1,nota2,media); }

Primeiros Programas

11

2.2

A sintaxe do C

A sintaxe C, composta por um conjunto de regras detalhadas para cada construo vlida inerente e ca a a linguagem. Estas regras esto relacionadas com variveis, tipos de dados, declaraes, funes e a a co co expresses. Primeiramente vamos denir cada uma destas construes. o co

2.2.1

Tipos bsicos de dados a

A linguagem C conta com cinco tipos bsicos de dados que podem ser utilizados. Eles so dados do tipo: a a caractere char inteiro int ponto utuante oat ponto utuante de preciso dupla double a sem valor void Outros tipos de dados usados em C podem ser denidos apartir de cada um desses cinco.

2.2.2

Modicadores dos tipos bsicos de dados a

Um modicador usado para mudar o signicado de um tipo bsico de dado, com exeo do tipo void, e a ca os outros tipos bsicos de dados podem ter mais de um modicador precedendo-o. Eles so: a a signed unsigned long short

2.2.3

Identicadores

So nomes usados para se fazer referncia a variveis, funes, rtulos e vrios outros objetos denidos a e a co o a pelo usurio. Identicadores poder ter de um a vrios caracteres. Por regra o primeiro caracter deve ser a a uma letra ou um sublinhado, as letras maisculas diferem das minsculas. u u

2.2.4

Variveis a

E uma posio nomeada de memria, empregada para armazenar um valor que pode ser modicado pelo ca o programa. Todas as variveis em C devem ser declaradas antes de serem usadas. A forma geral de uma a declaraao de variveis : c a e

Primeiros Programas tipo lista_de_variaveis;

12

As variveis da lista de variveis tero todas o mesmo tipo e devero ser separadas por v a a a a rgula. Como o tipo default do C o int, quando vamos declarar variveis int com algum dos modicadores de tipo, e a basta colocar o nome do modicador de tipo. Assim um long basta para declarar um long int. tipo_da_varivel nome_da_varivel = constante; a a Isto importante pois quando o C cria uma varivel ele no a inicializa. Isto signica que at que e a a e um primeiro valor seja atribu ` nova varivel ela tem um valor indenido e que no pode ser utilizado do a a a para nada. Nunca presuma que uma varivel declarada vale zero ou qualquer outro valor. a

2.2.5

Constantes

Constantes so valores xos que o programa no pode alterar. As constantes em C podem ser de qualquer a a um dos cinco tipos de dados bsicos. A forma como cada constante representada depende do seu tipo. a e Exemplos: char "b", "\n", "\0" int 2, 32000, -130 long int 100000, -467 short int 100, -30 unsigned int 50000, 35678 float 0.0, 23.7, -12.3e-10 double 12546354334.0, -0.0000034236556 Constantes string Em C poss a manipulao de constantes de tipo string que um conjunto de caracteres colocados e vel ca e entre aspas duplas. Por exemplo primeiro programa uma string (cadia de caracteres). Embora C e e permita a denio de de constantes string ela no possui formalmente um tipo de dado string. ca a

2.2.6

Operadores

Operadores aritmticos e Os operadores aritmticos so usados para desenvolver operaes matemticas. A seguir apresentamos a e a co a lista dos operadores aritmticos do C: e

Primeiros Programas

13

Operador + / % ++ Operadores Relacionais

Ao ca Soma (inteira e ponto utuante) Subtrao ou Troca de sinal ca Multiplicao (inteira e ponto utuante) ca Diviso (inteira e ponto utuante) a Resto de diviso (de inteiros) a Incremento (inteiro e ponto utuante) Decremento (inteiro e ponto utuante)

Os operadores relacionais do C realizam comparaes entre variveis. So eles: co a a operador <= < > >= = != Operadores Lgicos o Para fazer operaes com valores lgicos (verdadeiro e falso) temos os operadores lgicos: co o o operador && !! ! Operadores bit a bit operador & ! >> << ao ca conjuno lgica ca o disjuno lgica ca o OR exclusivo XOR Complemento de um Deslocamento ` esquerda a Deslocamento ` direita a ao ca conjuno lgica ca o disjuno lgica ca o negao lgica ca o equivalente matemtico a menor igual que < menor que > maior que maior ou igual que = igual que = diferente de

2.3

Expresses C o

Expresses C so combinaes vlidas de variveis, constantes e operadores. Quando montamos exo a co a a presses temos que levar em considerao a ordem com que os operadores so executados. o ca a

Cap tulo 3

Comandos de Controle
3.1 Introduo ca
1

Comandos de controle de uxo so aqueles que permitem ao programador alterar a sequncia de execuo a e ca do programa. Segundo padronizao da ANSI ca grupos: Seleo (if e switch); ca Iterao (while, for, e do while); ca Desvio (break, continue, goto, e return); Rtulo (case, default e label); o Expresso a Bloco Vamos estudar inicialmente os comandos de seleo. ca os comandos de controle de programas pertencem a seis

3.1.1

Comandos de seleo ca

Comando if O comando if empregado quando h a necessidade de uma toma de deciso do tipo SE isto for e a a verdadeiro faa aquilo, CASO CONTRARIO, faa o outro. Neste caso haver um desvio do uxo do c c a programa dependendo da validade de determinada condio. Se a condio for verdadeira o uxo do ca ca programa direcionado em um sentido, entretanto, se a condio no for verdadeira o uxo do programa e ca a direcionado em outro sentido. e A forma geral do comando if : e
1 American

National Standards Institute (Instituto Nacional Americano de Padronizaao) c

14

Comandos de Controle if (condi~o) ca { ----------; comandos 1; ----------; } else { ----------; comandos 2; ----------; }

15

Se a condi~o verdadeira ento a primeira seqncia de instrues executada, caso contrrio a ca e a ue co e a segunda seqncia de instrues executada. ue co e Exemplo Encontre as ra zes reais da equao: ca ax2 + bx + c = 0 O algoritmo do programa mostrado na gura 3.1, e
INICIO

(3.1)

LER a, b, c

D=b2- 4*a*c

NO H SOL. REAL

<
D:0

>
X1=(-b+ D)/2a

X2=(-b- D)/2a

PRINT X1,X2

FIM

Figura 3.1: Algoritmo em uxograma para o exerc do exemplo 1. cio

Comandos de Controle

16

A idia resolver a equao ax2 +bx+c = 0 para quaisquer valores das constantes a, b e c. Declaramos e e ca inicialmente todas as variveis (a, b, c, delta, x1, e x2) como sendo do tipo float. So introduzidos os a a valores das constantes, e primeiramente calculado o valor do discriminante (). Em seguida h a e a necessidade de determinar se o discriminante maior ou menor que zero. Se maior ou igual que e e zero o uxo do programa desviado para calcular os valores das ra reais e imprimir esses valores. Se e zes menor do que zero a equao no ter ra e ca a a zes reais, e o uxo desviado para imprimir apenas essa e mensagem. Aps vem o m do programa. o #include <stdio.h> void main() { float a,b,c,delta,x1,x2; printf("\n\tIngresse o valor de a: "); scanf("%d",&a); printf("\n\tIngresse o valor de b: "); scanf("%d",&b); printf("\n\tIngresse o valor de c: "); scanf("%d",&c); delta=(b**2)-4*a*c; if (delta >= 0) { x1=(-b+sqrt(delta))/2*a; x2=(-b-sqrt(delta))/2*a; printf ("\n\tAs razes para %d, %d, e %d s~o: %d e %d \n\n", a,b,c,x1,x2); a } else printf ("\n\tPara %d, %d, e %d n~o h razes reais\n\n", a,b,c); a a }

3.1.2

O comando for

O loop (lao) for usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira c e que se possa ter um bom controle sobre o loop. Sua forma geral : e for (express~o_de_inicializa~o;condi~o_de_lao;incremento) a ca ca c { ---------------------; ---------------------; seq^ncia de comandos; ue ---------------------;

Comandos de Controle }

17

A express~o_de_inicializa~o um comando de atribuio que usado para colocar um valor na a ca e ca e varivel de controle do lao. A condi~o_de_lao uma expresso relacional que determina quando o a c ca c e a lao acaba. O incremento dene como a varivel de controle do lao varia cada vez que o lao repetido. c a c c e Note que as trs partes so separadas por ponto e v e a rgula. Uma vez que a condio se tone falsa, a ca execuo do programa continua no comando seguinte ao for [4]. ca Exemplo 1. Faa um programa que calcule a soma dos n primeiros nmeros naturais. c u O algoritmo do programa mostrado na gura 3.2, e

INICIO

LER n

soma = 0

contador = 0

>
PRINT soma

contador : n

<
contador = contador +1

soma = soma+contador

FIM

Figura 3.2: Algoritmo em uxograma para o exerc do exemplo 1. cio Com base no algoritmo mostrado foi constru o seguinte programa em linguagem C, do

Comandos de Controle #include <stdio.h> #include <math.h> void main() { int contador,n,soma; printf("\n\tIngresse o valor de n: "); scanf("%d",&n); soma=0; for (contador=1; contador <= n; contador++) soma=soma+contador; printf ("\n\tA soma dos %d, primeiros nmeros naturais : %d \n\n", n,soma); u e } 2. Faa um programa que calcule o fatorial de um nmero n. c u

18

O algoritmo do programa mostrado na gura 3.3, pose ser observado qu foi realizada uma mudana e e c em relao ao acumulador. Neste caso o acumulator a varivel fatorial a qual inicializada em ca e a e 1,0.

INICIO LER n

fatorial = 1

contador = 0

PRINT fatorial

>

contador : n

Loop

<
contador = contador +1

fatorial = fatorial*contador FIM


Figura 3.3: Algoritmo em uxograma para o exerc do exemplo 2. cio O programa semelhante ao do exemplo anterior com pequenas mudanas, e c

Comandos de Controle #include <stdio.h> #include <math.h> void main() { int contador,n; double fatorial; printf("\n\tIngresse o valor de n: "); scanf("%d",&n); fatorial=1.0; for (contador=1; contador <= n; contador++) fatorial=fatorial*contador; printf ("\n\tO fatorial de %d, : %f \n\n", n,fatorial); e }

19

3. Faa um programa em linguagem C que calcule da mdia do per c e odo de um aluno de determinada disciplina. Ingresse com o nome do aluno, as notas das duas provas, assim como as notas das duas listas. Calcule as mdias aritmticas das provas e das listas, e em seguida a mdia do per e e e odo. Faa com que o c programa apresente como sa o nome do aluno, a mdia do per da e odo e a condio de aprovado, de ca exameou reprovadodo aluno.

Comandos de Controle

20

INICIO

LER prova1,prova2, lista1,lista2

mediaprovas=(prova1+prova2)/2,0

medialistas=(lista1+lista2)/2,0

mper=(8*mediaprovas+2*medialistas)/10,0

<

mper : 7,0

>

PRINT aprovado

mper<4,0

4,0<mper<7,0

PRINT reprovado

mper : 7,0

PRINT exame

FIM
Figura 3.4: Fluxograma para o algoritmo do clculo da mdia do per a e odo de uma disciplina determinada. A seguir mostrado o programa em linguagem C, constru apartir do uxograma mostrado. e do

Comandos de Controle #include <stdio.h> void main() { int i; float prova1,prova2,lista1,lista2,mediaprovas,medialistas,mper; char nome_aluno[40],condicao[20]; printf ("\n\t\tIngresse o nome do aluno: "); scanf("%[A-Z a-z]",&nome_aluno); printf("\n\tIngresse o valor da prova1: "); scanf("%f",&prova1); printf("\n\tIngresse o valor da prova2: "); scanf("%f",&prova2); printf("\n\tIngresse o valor da lista1: "); scanf("%f",&lista1); printf("\n\tIngresse o valor da lista2: "); scanf("%f",&lista2); mediaprovas=(prova1+prova2)/2.0; medialistas=(lista1+lista2)/2.0; mper=(8.0*mediaprovas+2.0*medialistas)/10.0; for (i=1;i <= 110; i++) printf("_"); for (i=1;i <= 110; i++) printf(" "); printf("\n\t\tNome do aluno\t\t\tmdia do perodo\t\t\tcondi~o \n"); e ca for (i=1;i <= 110; i++) printf("_"); if (mper >= 7.0 ) printf ("\n %s \t\t\t %f \t\t\t\t Aprovado \n\n", nome_aluno,mper); else { if (mper < 7.0 && mper >= 4.0) printf ("\n %s \t\t\t %f \t\t\t\t Exame \n\n", nome_aluno,mper); else printf ("\n %s \t\t\t %f \t\t\t\t Reprovado \n\n", nome_aluno,mper); } }

21

4. Faa um programa em linguagem C que calcule o salrio de um trabalhador. Para isto ingresse c a com o nome do trabalhador, a idade, o tempo de servio, o nmero de horas obrigatrias trabalhadas, o c u o

Comandos de Controle

22

nmero de horas extras trabalhadas, o salr base por hora obrigatria e, o salrio por hora extra. Se u a o o a o trabalhador tiver mais de cinco anos de servio ele ter um adicional de 5% do valor do salrio bruto, c a a descontar 6% do salrio bruto para o INSS. Imprimir como sa a da, o nome do trabalhador, o nmero de u horas trabalhadas, o tempo de servio, o salrio bruto, os descontos e aditivos, alm do salrio l c a e a quido. #include <stdio.h> void main() { char nome_trabalhador[60]; int idade,i; float tempo_servico,n_horas_obrigatorias,n_horas_extras,base_hora,base_extra; float salario_bruto,salario_liquido,desconto_inss,adicional_tempo_servico,adicional_ts; printf ("\n\t\tIngresse o nome do trabalhador: "); scanf("%[A-Z a-z]",&nome_trabalhador); printf("\n\tIngresse a idade do trabalhador: "); scanf("%d",&idade); printf("\n\tIngresse o tempo de servico do trabalhador: "); scanf("%f",&tempo_servico); printf("\n\tIngresse o numero de horas obrigatorias do trabalhador:"); scanf("%f",&n_horas_obrigatorias); printf("\n\tIngresse o numero de horas extras do trabalhador: "); scanf("%f",&n_horas_extras); printf("\n\tIngresse o salario base por hora obrigatoria do trabalhador:"); scanf("%f",&base_hora); printf("\n\tIngresse o salario base por hora extra do trabalhador:"); scanf("%f",&base_extra); salario_bruto=n_horas_obrigatorias*base_hora+n_horas_extras*base_extra; desconto_inss=6.0*salario_bruto/100.0; if (tempo_servico >= 5.0) adicional_ts=5.0*salario_bruto/100.0; else adicional_ts=0.0; salario_liquido=salario_bruto-desconto_inss+adicional_ts; /* IMPRESS~O DE HOLLERITH */ A for (i=1;i <= 110; i++) printf("_"); for (i=1;i <= 110; i++) printf(" "); printf("\n\tNome do trabalhador\t\tIdade\t\t\tTempo de servio \n"); c

Comandos de Controle for (i=1;i <= 110; i++) printf("_"); printf ("\n %s \t\t %d \t\t\t %f \n\n", nome_trabalhador,idade,tempo_servico); /* IMPRESS~O DO SALARIO */ A for (i=1;i <= 110; i++) printf("_"); for (i=1;i <= 110; i++) printf(" "); printf("\n\tSalrio Bruto\t\tAdicional TS\t\tINSS\t\tSalrio lquido \n"); a a for (i=1;i <= 110; i++) printf("_"); printf("\n %f \t\t %f \t\t -%f \t\t %f \n\n", salario_bruto,adicional_ts, desconto_inss,salario_liquido); } 5. Faa um programa em linguagem C, que ordene trs nmeros reais. c e u #include <stdio.h> void main() {

23

int a, b, c, aux, i;

printf("digite o 1 numero: "); scanf("%d", &a); printf("digite o 2 numero: "); scanf("%d", &b); printf("digite o 3 numero: "); scanf("%d", &c);

if(a>b) { aux = a; a = b; b = aux; }

if(a>c) {

Comandos de Controle aux = a; a = c; c = aux; }

24

if(b>c) { aux = b; b = c; c = aux; }

printf("%d\t %d\t %d\t", a, b, c);

printf("\n------------------------------------------------------ \n"); }

A funo getchar() ca E a funo original de entrada de caractere dos sistemas baseados em UNIX. getchar() armazena a entrada ca at que ENTER seja pressionada. Exemplo: e #include <stdio.h> main() { char ch; ch=getchar(); printf("%c\n,ch); }

3.1.3

Comando while

Possibilita a excecuo de processos iterativos ou laos, ele permite que o cdigo que sendo executado ca c o numa mesma parte do programa de acordo com uma determinada condio, ele executado desde que a ca e condio seja verdadeira, Quando a condio for falsa, o controle do programa passa para a linha aps o ca ca o cdigo do lao. A forma geral do comando : o c e Sintaxe while(condi~o) instru~es; ca co

Comandos de Controle

25

Onde, a condi~o pode ser qualquer expresso, e instru~es pode ser uma instruo simples, um ca a co ca bloco de instrues; ou uma instruo vazia. co ca Exemplos Exemplo 1 main() { char ch; while(ch!=a) ch=getchar(); } Exemplo 2 #include <stdio.h> #include <math.h> void main() { int contador,n,soma; printf("\n\tIngresse o valor de n: "); scanf("%d",&n); soma=0; contador=0; while(contador < n) { contador=contador+1; soma=soma+contador; } printf ("\n\tA soma dos %d, primeiros nmeros naturais : %d \n\n", n,soma); u e }

3.1.4

Comando switch

switch um comando interno de seleo mltipla do C, que testa sucessivamente o valor de uma expresso e ca u a contra uma lista de constantes inteiras ou de caractere. Quando o valor coincide, os comandos associados `quela constante so executados. a a Sintaxe :

Comandos de Controle switch(express~o) a { case constante1: seq^ncia de comandos ue break; case constante2: seq^ncia de comandos ue break; case constante3: seq^ncia de comandos ue break; ---------------------------------default: seq^ncia de comandos ue }

26

O valor da expresso testado, na ordem, contra os valores das constantes especicadas nos comandos a e case. Quando uma coincidncia for encontrada, a seqncia de comandos associada `quele case ser e ue a a executada at que o comando break ou o m do comando switch seja alcanado. O comando default e c executado se nenhuma coincidncia for detectada. O default opcional e, se no estiver presente, e e e a senhuma ao ser realizada se todos os testes falharem. ca a Exemplo 1 #include <stdio.h> void main() { int numero; numero=getchar(); switch(numero) { case 1: printf("\n\tVoc^ imprimiu o nmero 1!\n\n"); e u break; case 2: printf("\n\tVoc^ imprimiu o nmero 2!\n\n"); e u break; default:

Comandos de Controle printf("\n\tVoc^ imprimiu um nmero diferente de 1 e 2!\n\n"); e u } } Exemplo 2 #include <stdio.h> void main() { char x; printf("1. Incluir matrcula \n"); printf("2. Trancar matrcula \n"); printf("3. Excluir matrcula \n"); printf(" Digite sua op~o:"); ca x=getchar(); switch(x) { case 1: printf("escolheu inclus~o de matrcula \n"); a break; case 2: printf("escolheu trancamento de matrcula \n"); break; case 3: printf("escolheu exclus~o de matrcula \n"); a break; default: printf("op~o invlida\n"); ca a } }

27

3.1.5

Comando do-while

Ao contrrio dos laos for e while, que testam a condio do lao no comeo, o lao do-while verica a a c ca c c c condio ao nal do lao. Isso signica que um lao do-while sempre ser executado ao menos uma vez. ca c c a Sintaxe : do

Comandos de Controle { comando; } while(condi~o); ca

28

As chaves no so necessrias quando apenas um comando est presente. O lao do-while repete at a a a a c e que a consi~o se torne falsa. ca Exemplo: O seguinte lao de um programa ler nmeros digitados atravs do teclado at que encontre c a u e e um nmero menor ou igual a 100. u do { scanf("%d, &num); } while(num > 100); ou equivalentemente, do scanf("%d, &num); while(num > 100);

Cap tulo 4

Matrizes e Strings
Uma matriz um conjunto de variveis do mesmo tipo que referenciada por um nome comum. Um e a e elemento espec co em uma matriz acessado por meio de um e ndice. Em C, todas as matrizes consistem em posies cont co guas na memria. O endereo mais baixo corresponde ao primeiro elemento e o mais o c alto, ao ultimo elemento. Matrizes podem ter de uma a vrias dimenses. a o

4.0.6

Matrizes Unidimensionais

Tambm denominados vetores, so estruturas de dados onde cada elemento especicado por um unico e a e sub- ndice. A forma geral para declarar uma matriz unidimensional : e tipo nome_var[tamanho]; Como outras variveis, as matrizes devem ser explicitamente declaradas para que o compilador possa a alocar espao para elas na memria. Aqu tipo declara o tipo de base da matriz, que o tipo de cada c o e elemento da matriz; tamanho dene quantos elementos a matriz ir guardar. Por exemplo, para declarar a uma matriz de 7 elementos, chamada A, que contem as notas de 7 alunos (turma informtica), e do tipo a double, ser usado o comando: a double A[7]; Em C, toda matriz tem 0 como o ndice do seu primeiro elemento. Portanto, quando escrevemos, char p[10]; estamos declarando uma matriz de caracteres que tem dez elementos, de p[0] at p[9]. e Exemplo 1 O seguinte programa cria uma matriz unidimensional x com espao para armazenar 100 nmeros inteiros. c u Emseguida, o vetor preenchido com nmeros que vo de 1 a 100 aumentando de uma unidade, nalmente e u a so impressos os valores de t e x[t]. a 29

Matrizes e Strings

30

A[7] 7,3 4,5 2,2 5,0 10,0 0,0 8,4 A[6]

A[0] A[1]

A[2] A[3]

A[4] A[5]

Figura 4.1: representao esquemtica de uma matriz unidimensional denominada A, a qual contem as ca a notas da disciplina de informtica, de sete alunos. a #include <stdio.h> void main(void) { int x[100]; int t; for(t=0; t<100; ++t) { x[t]=t; printf("\n\t%d\t\t\5d \n",t,x[t]); } } Exemplo 2 O seguinte programa solicita ingressar os dados inteiros de dois vetores x e y de 10 elementos cada, em seguida, realiza a soma dos dados destes dois vetores e nalmente imprime o valor do vetor soma resultante. #include <stdio.h> void main () { int x[10]; int y[10]; int z[10]; int t; for(t=0; t<10; t++) { printf("Ingresse o %d elemento da matriz x:",t+1);

Matrizes e Strings scanf("%d",&x[t]); } for(t=0; t<10; t++) { printf("Ingresse o %d elemento da matriz y:",t+1); scanf("%d",&y[t]); } for(t=0; t<10; t++) z[t]=x[t]+y[t]; for(t=0; t<10; t++) printf("\t%d",z[t]); printf("\n"); }

31

4.0.7

Matrizes bidimensionais

tipo_da_varivel nome_da_varivel[numero_de_linhas][numero_de_colunas]; a a

A[3][4] 7,3 4,5 9,1 5,0

A[0][0] A[0][1] A[0][2] A[0][3]

4,1

7,5

8,0

3,9
A[1][3]

A[1][0] A[1][1] A[1][2]

9,7

4,5

2,2

7,7

A[2][0] A[2][1] A[2][2] A[2][3]


Figura 4.2: representao esquemtica de uma matriz bidimensional denominada A[3][4], a qual contem ca a as notas da disciplina de informtica, de doze alunos. a

Matrizes e Strings Exemplo

32

O seguinte programa cria uma matriz bidimensional de 10 linhas por 10 colunas, em seguida, preenche cada posio com o valor do produto de dois inteiros que variam de 0 a 9 cada. ca main() { int x[10][12]; int t,p; for(t=0;t<10;t++) for(t=0;t<12;p++) { x[t][p]=t*p; printf("%d\n",x[t][p]); } }

4.0.8

Matrizes de Strings

Sabemos que strings so vetores de dados de tipo caracter (char), matrizes de strings so matrizes a a bidimensionais. Se zermos um vetor de strings estaremos fazendo uma lista de vetores. Esta estrutura uma matriz bidimensional de chars. Podemos ver a forma geral de uma matriz de strings como sendo: e char nome_da_varivel [num_de_strings][compr_das_strings]; a Para acessar uma string individual s usar apenas o primeiro e o ndice. Ento, para acessar uma a determinada string faa: c nome_da_varivel[ndice] a Exemplo O seguinte exemplo l cinco strings e em seguida as exibe no display. e #include <stdio.h> int main () { char strings [5][100]; int count; for (count=0; count<5; count++) { printf ("\n\nDigite uma string: "); gets (strings[count]);

Matrizes e Strings } printf ("\n\n\nAs strings que voce digitou foram:\n\n"); for (count=0;count<5;count++) printf ("%s\n",strings[count]); return(0); }

33

4.0.9

a funo gets() ca

A funo gets() l uma string do teclado. Sua forma geral : ca e e gets(nome_da_string); O programa abaixo demonstra o funcionamento da funo gets(): ca #include <stdio.h> int main () { char string[100]; printf ("Digite o seu nome: "); gets (string); printf ("\n\n Ola %s",string); return(0); }

Referncias Bibliogrcas e a
[1] http://docs.google.com/viewer?a=v&q=cache:MbbmD8WjvAAJ: ftp://ftp.unicamp.br/pub/apoio/treinamentos/linguagens/ c.pdf+A+linguagem+C+pertence+a+uma+fam%C3%ADlia+de+ling uagens&hl=pt-BR&gl=br&pid=bl&srcid=ADGEESiLhAWxkxaOPqBC l7hdva2MOcBwKZKbrIRoQBwyndhYneXq3yuN64-An7EWbsWZluItenL KAYwmPva3uNbi2ELWzcSAM_f26KaBcTg-V5oI3jn5BOOWTsqm_Ggzvv axgZqyGNb8&sig=AHIEtbSUDPgogt_f4_3E5Br7eBDxkSzmnQ [2] http://webcache.googleusercontent.com/search?q=cache:4k CTexacocAJ:www6.ufrgs.br/engcart/PDASR/linguagens.html+ Muitas+linguagens+de+programa%C3%A7%C3%A3o+foram+influe nciadas&cd=1&hl=pt-BR&ct=clnk&gl=br [3] http://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C 3%A7%C3%A3o) [4] Herbert Schildt, C Completo e Total, terceira edio, Ed. Pearson Makron Books 1997. ca [5] http://pt.wikipedia.org/wiki/GNU_Compiler_Collection

34

Vous aimerez peut-être aussi