Baixe o app para aproveitar ainda mais
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.
Compartilhar