Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
6Activity
×
0 of .
Results for:
No results containing your search query
P. 1
C__9702

C__9702

Ratings: (0)|Views: 2,032|Likes:
Published by api-3757639

More info:

Published by: api-3757639 on Oct 15, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See More
See less

03/18/2014

pdf

text

original

LINGUAGEM C - NOTAS DE AULA
Jorge Surian
Apresenta\u00e7\u00e3o (Aula 01T)

Estas Notas de Aula, visam aumentar a produtividade dos alunos nas aulas te\u00f3ricas, evitando a c\u00f3pia das teorias expostas. Grande parte dos exemplos analisados em sala de aula e enunciados de exerc\u00edcios constam nesta apostila, al\u00e9m da resolu\u00e7\u00e3o de alguns destes. Os EC (exerc\u00edcios de classe), ser\u00e3o normalmente baseados nos exerc\u00edcios complementares de cada Aula a serem desenvolvidos preferencialmente no laborat\u00f3rio.

Habitualmente antes de resolvermos exemplos ou exerc\u00edcios, elaboraremos o algoritmo, que nada mais \u00e9 que uma seq\u00fc\u00eancia de opera\u00e7\u00f5es cuja execu\u00e7\u00e3o produz um resultado que \u00e9 a resposta de um problema proposto.

Um programa de computador nada mais \u00e9 que a codifica\u00e7\u00e3o de um algoritmo numa linguagem de programa\u00e7\u00e3o. Linguagens como C, Pascal, BASIC, ALGOL, Clipper, COBOL, etc., s\u00e3o chamadas de procedurais, devido ao fato das instru\u00e7\u00f5es serem executadas de forma seq\u00fcencial, enquanto que as linguagens baseadas no conceito de eventos como C++, Visual BASIC, Visual Objects, utilizam outra estrat\u00e9gia de programa\u00e7\u00e3o (Programa\u00e7\u00e3o Orientada ao Objeto), a ser vista em outro m\u00f3dulo do curso (OOP), em C utilizaremos a metodologia estruturada.

Os algoritmos podem ser estruturados ou n\u00e3o, conforme exemplificamos a seguir no c\u00e1lculo do m\u00e1ximo divisor comum entre dois n\u00fameros inteiros positivos, com opera\u00e7\u00f5es elementares:

Linear

Leia m,n
(1) se n = 0 ent\u00e3o
imprima m
pare
k <- m - Int(m / n) * n
m <- n
n <- k
v\u00e1 para (1)

1
Em Quick BASIC ter\u00edamos
Em BASICA ter\u00edamos
input m : input n
10 input m : input n
10 if n = 0 then
20 if n <> 0 then 50
print m
30 imprima m
end if
40 end
k = m - Int(m / n) * n
50 k = m - Int(m / n) * n
m=n
60 m = n
n=k
70 n = k
goto 10
80 goto 20

O Algoritmo de Euclides anteriormente apresentado , apesar de muito simples, executado normalmente por qualquer crian\u00e7a de primeiro grau, ganha contornos de aparente dificuldade quando transcrito para o GW-BASIC, um dialeto BASIC, que exige numera\u00e7\u00e3o de linhas, que nos obrigou a alterar um pouco a estrat\u00e9gia de resolu\u00e7\u00e3o do problema. J\u00e1 a vers\u00e3o em Quick BASIC, poderia ser transcrita por qualquer pessoa com um m\u00ednimo de conhecimento em algoritmos e BASIC.

Estruturado

Inteiros m,n
Leia m,n
enquanto n <> 0 fa\u00e7a
k <- m - Int(m / n) * n
m <- n
n <- k
imprima m
pare

Em C ter\u00edamos
Em Clipper ter\u00edamos
main()
input to a
{
input to b
int m,n,k;
do while n <> 0
scanf(\u201c%d\u201d,&m);
k = m - Int(m / n) * n
scanf(\u201c%d\u201d,&n);
m=n
while (n != 0) {
n=k
k = m - m / n * n;
enddo
m = n;
?m
n = k;
}
printf(\u201c%d\u201d,m);
}Nas Linguagens estruturadas a representa\u00e7\u00e3o fica id\u00eantica, quer em C quer em Clipper.

Ficaria a mesma forma em Quick BASIC, Pascal ou COBOL Estruturado, da\u00ed a prefer\u00eancia na abordagem dita estruturada. No decorrer deste curso nos deteremos detalhadamente no estudo dos algoritmos estruturados e analisaremos alguns (poucos, por\u00e9m importantes) casos onde a programa\u00e7\u00e3o linear \u00e9 mais adequada que a estruturada.

2
Simula\u00e7\u00e3o
Por melhor que seja o conhecimento do Analista/Programador, este s\u00f3 poder\u00e1 ter certeza
que sua \u201cestrat\u00e9gia\u201d foi bem sucedida ap\u00f3s testar o programa num computador.

Bons programadores tem poucas surpresas quando testam seus programas, fazendo normalmente umas poucas corre\u00e7\u00f5es para que o programa funcione de maneira adequada.

Programadores iniciantes criam uma estrat\u00e9gia (algoritmo) muitas vezes ineficiente e normalmente \u201ccorrem\u201d para o computador visando testar o programa e acabam por perder um tempo enorme. N\u00e3o \u00e9 raro ouvirmos de iniciantes a frase \u201cNunca conseguirei fazer um programa ...\u201d. Certamente, n\u00e3o conseguir\u00e1 mesmo, caso n\u00e3o tenha uma estrat\u00e9gia definida.

Imagine uma \u201ctarefa\u201d muito simples, como por exemplo fritar um ovo. Caso voc\u00ea n\u00e3o soubesse \u201coperar\u201d o fog\u00e3o provavelmente n\u00e3o conseguiria acend\u00ea-lo. Se nunca tivesse visto algu\u00e9m quebrar um ovo, provavelmente n\u00e3o conseguiria faz\u00ea-lo sem perder parte de seu conte\u00fado. A fritura seria algo desastroso, caso voc\u00ea desconhecesse a utilidade do \u00f3leo. E o sabor seria frustrante, caso o tempero utilizado fosse a\u00e7\u00facar.

O Programador iniciante que n\u00e3o simula seu algoritmo, se compara ao cozinheiro
desastrado descrito acima. E como simular?

Basta \u201cagirmos\u201d como se fossemos o pr\u00f3prio computador, ou seja devemos \u201cfingir\u201d que nosso racioc\u00edneo \u00e9 baseado no conte\u00fado de vari\u00e1veis. De fato, usualmente antes de tomarmos alguma decis\u00e3o analisamos uma s\u00e9rie de fatores (as tais vari\u00e1veis dos programas). Desta forma, caso fizermos uma an\u00e1lise apurada sobre os conte\u00fados das vari\u00e1veis, poderemos \u201cdescobrir\u201d a fun\u00e7\u00e3o de cada programa.

Primeiramente vamos resolver o problema como aprendemos no primeiro grau.
Supondo M = 120 e N = 28.
Dividendo
=
120
28
8
Divisor
=
28
8
4
\ue000
MDC
Quociente
=
4
3
2
Resto
=
8
4
0
3

Activity (6)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
Tiago Araújo liked this
Joao Jose Silva liked this
alanabusivo liked this
ZFXPatch liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->