Buscar

conceitos basicos de prog. aula1 - Cláudio

Prévia do material em texto

TT 130 – Algoritmos e
Programac¸a˜o de Computadores I
Prof. Cla´udio Alessandro de Carvalho Silva
cacs@ft.unicamp.br
Aula 01
Introduc¸a˜o, Conceitos Ba´sicos, Lo´gica de
Programac¸a˜o e Algoritmos
Conteu´do
1 Plano de Ensino da Disciplina
2 Conceitos Gerais
3 Lo´gica de Programac¸a˜o e Algoritmos
4 Refereˆncias e Atividades
U¨bersicht
1 Plano de Ensino da Disciplina
2 Conceitos Gerais
3 Lo´gica de Programac¸a˜o e Algoritmos
4 Refereˆncias e Atividades
Objetivos.
Introduzir conceitos sobre lo´gica e te´cnicas de
programac¸a˜o.
Apresentar algoritmos e uma linguagem de programac¸a˜o
estruturada (linguagem C).
Desenvolver a capacidade de resolver problemas de
maneira lo´gica e estruturada.
Professor.
Cla´udio A. C. Silva, cacs@ft.unicamp.br.
Incluir [TT130B] no in´ıcio do campo Subject.
PED.
Ramom Rebouc¸as, ra134502@ime.unicamp.br.
Ementa.
1 Algoritmos: representac¸o˜es e te´cnicas de construc¸a˜o.
2 Estruturas de dados e de controle de programas.
3 Introduc¸a˜o a uma linguagem de programac¸a˜o de alto
n´ıvel.
4 Modularizac¸a˜o em linguagem de programac¸a˜o.
5 Recursividade.
6 Implementac¸a˜o de programas.
Metodologia de ensino.
Aulas presenciais teo´ricas e pra´ticas em laborato´rio. Tarefas
teo´ricas e pra´ticas extra-classe.
Aulas.
Quinta-feira, 8:00 – 12:00 (4 aulas).
Carga hora´ria.
60 horas.
Exerc´ıcios.
Sera˜o disponibilizadas listas de exerc´ıcios para trabalho
extra-classe.
Tais exerc´ıcios sa˜o parte integrante do programa da
disciplina.
Os exerc´ıcios na˜o tera˜o seus gabaritos disponibilizados.
Du´vidas devem ser sanadas nos hora´rios de atendimento
com os monitores.
Atividades de laborato´rio.
Havera´ um conjunto de atividades pra´ticas que o aluno
devera´ cumprir.
O acesso e submissa˜o das atividades sera´ feita via
Internet.
A correc¸a˜o sera´ feita por sistema automatizado a partir
de conjunto de testes pre´-definidos.
Alguns testes sera˜o abertos (vis´ıveis aos alunos), outros
sera˜o fechados (invis´ıveis aos alunos).
O valor T sera´ a me´dia aritme´tica das atividades.
As duas atividades iniciais na˜o valera˜o nota e servira˜o
para que os alunos se familiarizem com o ambiente de
trabalho.
Avaliac¸o˜es teo´ricas.
Havera´ duas provas teo´ricas durante o semestre, ambas
com durac¸a˜o de 120 minutos e feitas sem consulta.
Dependendo de seu rendimento, o aluno devera´ fazer um
exame teo´rico ao final do semestre.
Crite´rio de avaliac¸a˜o.
A me´dia final do semestre MF sera´ calculada a partir das
notas das provas teo´ricas e atividades de laborato´rio da
seguinte forma:
Pi → Nota da prova i
T → Me´dia das atividades de laborato´rio
E → Nota do exame final
M → Me´dia parcial
M = (P1 + P2 + T ) /3
M ≥ 6, 0→ Aprovac¸a˜o direta→MF = M.
M < 2, 5→ Reprovac¸a˜o direta→MF = M.
2, 5 ≤M < 6, 0→ Exame→MF = 0, 6M + 0, 4E ≥ 5, 0→ Aprovac¸a˜o
Observac¸o˜es importantes.
1 Atividades entregues fora do prazo sera˜o desconsideradas.
2 Todas as atividades de laborato´rio sera˜o individuais.
3 Todas as atividades de laborato´rio devera˜o ser compat´ıveis com
padra˜o ANSI C e compilador GCC do sistema operacional
GNU/Linux.
4 Os monitores na˜o fara˜o atividades de laborato´rio.
5 Sera´ usado sistema de detecc¸a˜o de fraudes. Ele e´ programado para
detectar pla´gios entre todas as respostas de todos os alunos ao
longo do semestre. Em caso de fraude, todos os envolvidos ficara˜o
com me´dia 0, 0 (zero) na disciplina.
6 So´ podera˜o fazer o Exame alunos com M ≥ 2, 5 (vide Cap´ıtulo V,
Sec¸a˜o I, Artigo 57 Inciso II do Regimento Geral de Graduac¸a˜o).
7 Em caso de auseˆncia a uma das provas teo´ricas, quando justificada
por razo˜es legais (vide Regimento Geral de Graduac¸a˜o Cap´ıtulo V,
Sec¸a˜o X, Artigo 72), o exame sera´ usado como substitutiva.
Cronograma inicial.
Semana Data To´pico
1 2014-09-04 Introduc¸a˜o, conceitos ba´sicos, lo´gica de programac¸a˜o
e algoritmos
2 2014-09-11 Linguagem Estruturada, Aspectos Fundamentais
3 2014-09-18 Linguagem Estruturada, Introduc¸a˜o a` linguagem C,
Implementac¸a˜o em Estrutura Sequencial
4 2014-09-25 Estruturas de Controle: Desvio Condicional
5 2014-10-02 Estruturas de Controle: Repetic¸a˜o
6 2014-10-09 Semana de Tecnologia em Foco
7 2014-10-16 Varia´veis Compostas Homogeˆneas Unidimensionais:
Vetores
8 2014-10-23 Prova 1
9 2014-10-30 Varia´veis Compostas Homogeˆneas Unidimensionais:
Cadeias de Caracteres (Strings)
10 2014-11-06 Varia´veis Compostas Homogeˆneas Multidimensio-
nais: Matrizes
11 2014-11-13 Varia´veis Compostas Heterogeˆneas (Registros)
12 2014-11-20 Modularizac¸a˜o de Programas
13 2014-11-27 Modularizac¸a˜o de Programas e Recursividade
14 2014-12-04 Laborato´rio de Programac¸a˜o em C – Exerc´ıcios sobre
Subprogramas
15 2014-12-11 Prova 2
– 2014-12-17 Entrega de provas e atendimento
– – Semana de estudos
– – Exame final
Bibliografia recomendada.
FORBELLONE, A. L. V., EBERSPA¨CHER, H. F., Lo´gica de
Programac¸a˜o – A construc¸a˜o de algoritmos e estruturas de dados,
3a. Edic¸a˜o, Sa˜o Paulo, Pearson Prentice Hall, 2005.
ASCENCIO, A. F. G., CAMPOS, E. A. V., Fundamentos da
Programac¸a˜o de Computadores – Algoritmos, Pascal e C/C++,
Pearson Prentice Hall, 2003.
MIZRAHI, V. V., Treinamento em Linguagem C – Curso
Completo, 2a. Edic¸a˜o, Pearson Makron Books, 2005.
PUGA, S., RISSETTI, G., Lo´gica de Programac¸a˜o e Estrutura de
Dados, 2a. Edic¸a˜o, Prentice Hall, 2008.
DEITEL, H. M., DEITEL, P. J., Como Programar em C. Rio de
Janeiro: LTC, 1999.
SCHILDT, H., C Completo e Total, 3a. Edic¸a˜o, Makron Books,
1997.
U¨bersicht
1 Plano de Ensino da Disciplina
2 Conceitos Gerais
3 Lo´gica de Programac¸a˜o e Algoritmos
4 Refereˆncias e Atividades
Motivac¸a˜o
A programac¸a˜o de computadores e´ uma atividade que leva
a`
representac¸a˜o dos passos necessa´rios
a` resoluc¸a˜o de um problema
em linguagem de programac¸a˜o.
O que e´ um computador? Para que serve?
“Um computador e´ uma colec¸a˜o de componentes que
realizam operac¸o˜es lo´gicas e aritme´ticas sobre um grande
volume de dados.” (Miyazawa, 2001)
Computador e´ uma ferramenta de trabalho.
Computador e´ um canal de comunicac¸a˜o.
Lo´gica
Coereˆncia e racionalidade.
Estudo normativo, filoso´fico do racioc´ınio va´lido.
(Wikipedia)
A lo´gica estuda e ensina a colocar ordem no
pensamento:
Te´cnicas de formalizac¸a˜o, deduc¸a˜o e ana´lise.
Representac¸a˜o formal.
Exemplo: Soluc¸a˜o de Problemas
1 A gaveta esta´ fechada.
2 A caneta esta´ dentro da gaveta.
3 Precisamos primeiro abrir a gaveta para depois pegar a
caneta.
Lo´gica de Programac¸a˜o
Conjunto de te´cnicas para produc¸a˜o de soluc¸o˜es va´lidas e
coerentes de problemas em linguagem computacional.
O objetivo principal do estudo da Lo´gica de Programac¸a˜o e´ a
construc¸a˜o de algoritmos coerentes e va´lidos.
Algoritmo
“Um procedimento para resolver um problema matema´tico
(ex. achar o ma´ximo divisor comum) em um nu´mero finito de
passos que frequ¨entemente envolve a repetic¸a˜o de uma
operac¸a˜o.Ou de forma mais abrangente:
um procedimento passo-a-passo para resolver um
problema ou realizar algum objetivo.” (Manber, 1989)
E´ uma sequeˆncia finita e ordenada de passos (regras), com um
esquema de processamento que permite a realizac¸a˜o de uma
tarefa (resoluc¸a˜o de problemas, ca´lculos etc.).
Exemplo: Algoritmo de Euclides (um dos mais antigos 400-300
AC)
Calcula o ma´ximo divisor comum (MDC) de dois nu´meros
inteiros positivos:
1 Adote x = m e y = n;
2 Adote r = xmod y;
3 Adote novos valores x = y e y = r;
4 Se r e´ diferente de 0, volte ao passo 2; sena˜o pare com a
resposta x.
O enfoque do curso e´ em algoritmos computacionais, ou
seja, algoritmos que “descrevem uma sequ¨eˆncia de
ac¸o˜es que podemser traduzida para alguma
linguagem de programac¸a˜o” (Miyazawa, 2001).
Algoritmo correto: sempre termina e para qualquer
instaˆncia de entrada produz uma sa´ıda correta.
Programar consiste em representar/descrever um
algoritmo em alguma linguagem de programac¸a˜o.
Quais os ferramentais necessa´rios a` programac¸a˜o de
computadores?
Descric¸a˜o do algoritmo:
Descric¸a˜o narrativa
Fluxograma
Pseudo-co´digo
Linguagem de programac¸a˜o
Ambiente de programac¸a˜o
Termos U´teis
Hardware
Software
Bit
Bytes
Perife´rico
Sistema Operacional
Linguagem de Ma´quina
Linguagem Assembler (Linguagem de Baixo N´ıvel)
Linguagem de alto n´ıvel
Compilador
Interpretador
Exerc´ıcio
Algoritmo de indica qual dentre dois m e n nu´meros e´ o maior.
1 Adote x = m e y = n.
2 Se x maior que y, enta˜o
a resposta e´ x; sena˜o a
resposta e´ y.
U¨bersicht
1 Plano de Ensino da Disciplina
2 Conceitos Gerais
3 Lo´gica de Programac¸a˜o e Algoritmos
4 Refereˆncias e Atividades
Me´todo para a Construc¸a˜o de Algoritmos
1 Avaliar atentamente o problema.
2 Definir os dados de entrada.
3 Definir o processamento, ou seja, quais ca´lculos sera˜o
efetuados e quais as restric¸o˜es para esses dados.
4 Definir os dados de sa´ıda.
5 Construir o algoritmo.
6 Testar o algoritmo realizando simulac¸o˜es.
Exemplo
Fac¸a um algoritmo para mostrar o resultado da multiplicac¸a˜o
de dois nu´meros.
Algoritmo em descric¸a˜o narrativa
1 Receber os dois nu´meros que sera˜o multiplicados.
2 Multiplicar os nu´meros.
3 Mostrar o resultado obtido na multiplicac¸a˜o.
Algoritmo em fluxograma
Psedo-co´digo
1: Algoritmo
2: Declare Nume´rico N1, N2, M
3: Escreva ‘‘Digite dois nu´meros’’
4: Leia N1, N2
5: M ← N1 ∗N2
6: Escreva ‘‘Multiplicac¸~ao = ’’, M
7: Fim
Exerc´ıcio 1
Fac¸a um algoritmo para mostrar o resultado da divisa˜o de dois
nu´meros.
Algoritmo em descric¸a˜o narrativa
1 Receber os dois nu´meros que sera˜o multiplicados.
2 Se o segundo nu´mero for igual a zero, na˜o podera´ haver
divisa˜o pois na˜o existe divisa˜o por zero; caso contra´rio,
dividir os nu´meros.
3 Mostrar mensagem de erro ou o resultado obtido na
divisa˜o.
Algoritmo em fluxograma
Psedo-co´digo
1: Algoritmo
2: Declare Nume´rico N1, N2, D
3: Escreva ‘‘Digite dois nu´meros’’
4: Leia N1, N2
5: Se N2 = 0 enta˜o
6: Escreva ‘‘Impossı´vel dividir!’’
7: caso contra´rio
8: D ← N1/N2
9: Escreva ‘‘Divis~ao = ’’, D
10: Fim do condicional
11: Fim
Exerc´ıcio 2
Fac¸a um algoritmo para calcular a me´dia aritme´tica entre duas
notas de um aluno e para mostrar a situac¸a˜o desse aluno, que
pode ser aprovado ou reprovado.
Algoritmo em descric¸a˜o narrativa
1 Receber as duas notas.
2 Calcular a me´dia aritme´tica.
3 Mostrar a me´dia calculada.
4 Se a me´dia for maior ou igual a 7, 0, enta˜o o aluno esta´
aprovado; caso contra´rio esta´ reprovado.
Algoritmo em fluxograma
Psedo-co´digo
1: Algoritmo
2: Declare Nume´rico N1, N2, M
3: Escreva ‘‘Digite duas notas’’
4: Leia N1, N2
5: M ← (N1 +N2)/2
6: Escreva ‘‘Me´dia = ’’, M
7: Se M ≥ 7 enta˜o
8: Escreva ‘‘Aprovado’’
9: caso contra´rio
10: Escreva ‘‘Reprovado’’
11: Fim do condicional
12: Fim
Exerc´ıcio 3
Fac¸a um algoritmo para calcular o novo sala´rio de um
funciona´rio. Sabe-se que os funciona´rios que possuem sala´rio
atual ate´ R$500,00 tera˜o aumento de 20% e os demais tera˜o
aumento de 10%.
Algoritmo em descric¸a˜o narrativa
1 Receber o sala´rio atual do funciona´rio.
2 Se o sala´rio atual for ate´ R$500,00, calcule o novo
sala´rio com percentual de aumento de 20%; caso
contra´rio, calcular o novo sala´rio com percentual de
aumento de 10%.
3 Mostrar o novo sala´rio.
Algoritmo em fluxograma
Psedo-co´digo
1: Algoritmo
2: Declare Nume´rico salatual, salnovo
3: Escreva ‘‘Digite o sala´rio do funciona´rio’’
4: Leia salatual
5: Se salatual ≤ 500 enta˜o
6: salnovo ← salatual ∗ 1, 20
7: caso contra´rio
8: salnovo ← salatual ∗ 1, 10
9: Fim do condicional
10: Escreva ‘‘Novo sala´rio = ’’, salnovo
11: Fim
U¨bersicht
1 Plano de Ensino da Disciplina
2 Conceitos Gerais
3 Lo´gica de Programac¸a˜o e Algoritmos
4 Refereˆncias e Atividades
Refereˆncias
FORBELLONE, A. L. V., EBERSPA¨CHER, H. F., Lo´gica de
Programac¸a˜o – A construc¸a˜o de algoritmos e estruturas de dados,
3a. Edic¸a˜o, Sa˜o Paulo, Pearson Prentice Hall, 2005. Cap. 1 e 2.
ASCENCIO, A. F. G., CAMPOS, E. A. V., Fundamentos da
Programac¸a˜o de Computadores – Algoritmos, Pascal e C/C++,
Pearson Prentice Hall, 2003. Cap. 1.

Outros materiais