Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fund. de Programac¸a˜o einstein@ufc.br Suma´rio Fundamentos de programac¸a˜o roteiro de aulas Albert Einstein Fernandes Muritiba Universidade Federal do Ceara´ – UFC 30 de julho de 2014 Fund. de Programac¸a˜o einstein@ufc.br Suma´rio Suma´rio Mo´dulo I 1 Introduc¸a˜o 2 Linguagem abordada 3 Introduc¸a˜o a Algoritmos 4 Representac¸o˜es de algoritmos 5 Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops 6 Erros comuns 7 Exerc´ıcios 8 Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Suma´rio Suma´rio Mo´dulo II 9 Func¸o˜es Introduc¸a˜o Recursividade 10 Arrays Alocac¸a˜o Esta´tica Propriedades dos Arrays em C Exerc´ıcios Alocac¸a˜o esta´tica Matrizes Ponteiros Alocac¸a˜o Dinaˆmica 11 Strings 12 Arquivos Introduc¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Introduc¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? • E´ uma ma´quina de fazer contas • E´ uma ma´quina de processar dados • E´ uma ma´quina inteligente • E´ Ma´gica! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? • E´ uma ma´quina de fazer contas • E´ uma ma´quina de processar dados • E´ uma ma´quina inteligente • E´ Ma´gica! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? • E´ uma ma´quina de fazer contas • E´ uma ma´quina de processar dados • E´ uma ma´quina inteligente • E´ Ma´gica! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? • E´ uma ma´quina de fazer contas • E´ uma ma´quina de processar dados • E´ uma ma´quina inteligente • E´ Ma´gica! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Voceˆ e´ engenheiro contratado por uma fa´brica de bolos em plena revoluc¸a˜o industrial. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Sua tarefa e´ projetar uma ma´quina de fazer bolos de mac¸a˜s. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos O que voceˆ deve saber primeiro? Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Como fazer um bolo de mac¸a˜s!!! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Agora voceˆ esta´ pronto para fazer sua ma´quina. E depois de algumas tentativas ai esta´: Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Sua ma´quina recebe mac¸a˜s, ac¸u´car, farinha, manteiga e canela. E produz bolos de mac¸a˜. Sucesso!! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Mas o tempo de mac¸a˜ acabou e agora a fa´brica deve fazer bolos de banana. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos O que fazer? a) Colocar os ingredientes de bolo de banana na ma´quina e ver o que acontece; b) Desmontar a ma´quina de bolos de mac¸a˜ e fazer uma outra para bananas; c) Construir uma ma´quina nova para bolos de banana; d) Outra ideia? Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜esde algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Invente uma ma´quina de executar receitas de bolos e na˜o tera´ mas que inventar nenhuma outra ma´quina de bolos! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fa´brica de bolos Nesta ma´quina voceˆ deve fornecer os ingredientes e a receita. Na˜o e´ uma ma´quina de bolos de bananas ou de mac¸a˜s. E´ uma ma´quina de executar receitas de bolos! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? % E´ uma ma´quina de fazer contas % E´ uma ma´quina de processar dados % E´ uma ma´quina inteligente % E´ Ma´gica! Computador Uma ma´quina que recebe dados de entrada e um programa, executa este programa sobre estes dados gerando dados de sa´ıda. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? % E´ uma ma´quina de fazer contas % E´ uma ma´quina de processar dados % E´ uma ma´quina inteligente % E´ Ma´gica! Computador Uma ma´quina que recebe dados de entrada e um programa, executa este programa sobre estes dados gerando dados de sa´ıda. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? % E´ uma ma´quina de fazer contas % E´ uma ma´quina de processar dados % E´ uma ma´quina inteligente % E´ Ma´gica! Computador Uma ma´quina que recebe dados de entrada e um programa, executa este programa sobre estes dados gerando dados de sa´ıda. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? % E´ uma ma´quina de fazer contas % E´ uma ma´quina de processar dados % E´ uma ma´quina inteligente % E´ Ma´gica! Computador Uma ma´quina que recebe dados de entrada e um programa, executa este programa sobre estes dados gerando dados de sa´ıda. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? % E´ uma ma´quina de fazer contas % E´ uma ma´quina de processar dados % E´ uma ma´quina inteligente % E´ Ma´gica! Computador Uma ma´quina que recebe dados de entrada e um programa, executa este programa sobre estes dados gerando dados de sa´ıda. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um computador? Qual e´ a melhor definic¸a˜o? % E´ uma ma´quina de fazer contas % E´ uma ma´quina de processar dados % E´ uma ma´quina inteligente % E´ Ma´gica! Computador Uma ma´quina que recebe dados de entrada e um programa, executa este programa sobre estes dados gerando dados de sa´ıda. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o O que e´ um programa de computador? Sequeˆncia de instruc¸o˜es (comandos) a serem executados por um computador sobre um conjunto de dados de entrada. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Por queˆ devo saber programar? • Estat´ısticos devem trabalhar com grande quantidades de informac¸a˜o; • Operar ferramentas de software para processamento de dados; • Qualquer manuseio fora do trivial exigira´ conhecimentos em programac¸a˜o; • Alguns softwares sa˜o operados atrave´s de linguagens de programac¸a˜o espec´ıficas; • Exemplos: Matlab, R, Scilab, Macros Excel, ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Por queˆ devo saber programar? • Estat´ısticos devem trabalhar com grande quantidades de informac¸a˜o; • Operar ferramentas de software para processamento de dados; • Qualquer manuseio fora do trivial exigira´ conhecimentos em programac¸a˜o; • Alguns softwares sa˜o operados atrave´s de linguagens de programac¸a˜o espec´ıficas; • Exemplos: Matlab, R, Scilab, Macros Excel, ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Por queˆ devo saber programar? • Estat´ısticos devem trabalhar comgrande quantidades de informac¸a˜o; • Operar ferramentas de software para processamento de dados; • Qualquer manuseio fora do trivial exigira´ conhecimentos em programac¸a˜o; • Alguns softwares sa˜o operados atrave´s de linguagens de programac¸a˜o espec´ıficas; • Exemplos: Matlab, R, Scilab, Macros Excel, ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Por queˆ devo saber programar? • Estat´ısticos devem trabalhar com grande quantidades de informac¸a˜o; • Operar ferramentas de software para processamento de dados; • Qualquer manuseio fora do trivial exigira´ conhecimentos em programac¸a˜o; • Alguns softwares sa˜o operados atrave´s de linguagens de programac¸a˜o espec´ıficas; • Exemplos: Matlab, R, Scilab, Macros Excel, ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Por queˆ devo saber programar? • Estat´ısticos devem trabalhar com grande quantidades de informac¸a˜o; • Operar ferramentas de software para processamento de dados; • Qualquer manuseio fora do trivial exigira´ conhecimentos em programac¸a˜o; • Alguns softwares sa˜o operados atrave´s de linguagens de programac¸a˜o espec´ıficas; • Exemplos: Matlab, R, Scilab, Macros Excel, ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Que aprenderemos neste curso? • Conhecimentos ba´sicos sobre algoritmos • Conhecimentos ba´sicos sobre linguagem C Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Que aprenderemos neste curso? • Conhecimentos ba´sicos sobre algoritmos • Conhecimentos ba´sicos sobre linguagem C Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o C ou na˜o C ... Por queˆ estudar linguagem C • Linguagem C surgiu no in´ıcio dos anos 70 • Atualmente a segunda linguagem mais popular, segundo a TIOBE Programming Community Index • Foi projetada para o desenvolvimento de compiladores e sistemas operacionais • Na˜o foi feita para ser fa´cil, foi feita para ser ra´pida! • O programador C deve estar sempre atento aos detalhes • O programador C na˜o tera´ dificuldades em aprender qualquer outra linguagem de programac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o C ou na˜o C ... Por queˆ estudar linguagem C • Linguagem C surgiu no in´ıcio dos anos 70 • Atualmente a segunda linguagem mais popular, segundo a TIOBE Programming Community Index • Foi projetada para o desenvolvimento de compiladores e sistemas operacionais • Na˜o foi feita para ser fa´cil, foi feita para ser ra´pida! • O programador C deve estar sempre atento aos detalhes • O programador C na˜o tera´ dificuldades em aprender qualquer outra linguagem de programac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o C ou na˜o C ... Por queˆ estudar linguagem C • Linguagem C surgiu no in´ıcio dos anos 70 • Atualmente a segunda linguagem mais popular, segundo a TIOBE Programming Community Index • Foi projetada para o desenvolvimento de compiladores e sistemas operacionais • Na˜o foi feita para ser fa´cil, foi feita para ser ra´pida! • O programador C deve estar sempre atento aos detalhes • O programador C na˜o tera´ dificuldades em aprender qualquer outra linguagem de programac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o C ou na˜o C ... Por queˆ estudar linguagem C • Linguagem C surgiu no in´ıcio dos anos 70 • Atualmente a segunda linguagem mais popular, segundo a TIOBE Programming Community Index • Foi projetada para o desenvolvimento de compiladores e sistemas operacionais • Na˜o foi feita para ser fa´cil, foi feita para ser ra´pida! • O programador C deve estar sempre atento aos detalhes • O programador C na˜o tera´ dificuldades em aprender qualquer outra linguagem de programac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o C ou na˜o C ... Por queˆ estudar linguagem C • Linguagem C surgiu no in´ıcio dos anos 70 • Atualmente a segunda linguagem mais popular, segundo a TIOBE Programming Community Index • Foi projetada para o desenvolvimento de compiladores e sistemas operacionais • Na˜o foi feita para ser fa´cil, foi feita para ser ra´pida! • O programador C deve estar sempre atento aos detalhes • O programador C na˜o tera´ dificuldades em aprender qualquer outra linguagem de programac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o C ou na˜o C ... Por queˆ estudar linguagem C • Linguagem C surgiu no in´ıcio dos anos 70 • Atualmente a segunda linguagem mais popular, segundoa TIOBE Programming Community Index • Foi projetada para o desenvolvimento de compiladores e sistemas operacionais • Na˜o foi feita para ser fa´cil, foi feita para ser ra´pida! • O programador C deve estar sempre atento aos detalhes • O programador C na˜o tera´ dificuldades em aprender qualquer outra linguagem de programac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o C ou na˜o C ... Por queˆ estudar linguagem C Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Algoritmos Introduc¸a˜o Algoritmos Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Algoritmos • Os computadores na˜o sabem o que fazer com os dados • Algoritmos sa˜o projetados para alterar ou manipular os dados • Programar e´ basicamente construir algoritmos • Um bom programador na˜o e´ aquele que conhece os detalhes mais escondidos de uma linguagem de programac¸a˜o, mas aquele que e´ capaz de projetar e descrever algoritmos eficientemente Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Algoritmos • Os computadores na˜o sabem o que fazer com os dados • Algoritmos sa˜o projetados para alterar ou manipular os dados • Programar e´ basicamente construir algoritmos • Um bom programador na˜o e´ aquele que conhece os detalhes mais escondidos de uma linguagem de programac¸a˜o, mas aquele que e´ capaz de projetar e descrever algoritmos eficientemente Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Algoritmos • Os computadores na˜o sabem o que fazer com os dados • Algoritmos sa˜o projetados para alterar ou manipular os dados • Programar e´ basicamente construir algoritmos • Um bom programador na˜o e´ aquele que conhece os detalhes mais escondidos de uma linguagem de programac¸a˜o, mas aquele que e´ capaz de projetar e descrever algoritmos eficientemente Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Algoritmos • Os computadores na˜o sabem o que fazer com os dados • Algoritmos sa˜o projetados para alterar ou manipular os dados • Programar e´ basicamente construir algoritmos • Um bom programador na˜o e´ aquele que conhece os detalhes mais escondidos de uma linguagem de programac¸a˜o, mas aquele que e´ capaz de projetar e descrever algoritmos eficientemente Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Algoritmo Definic¸o˜es Donald Knuth An algorithm is a set of rules for getting a specific output from a specific input. Each step must be so precisely defined that it can be translated into a computer language and executed by machine. wikipedia Um algoritmo e´ uma sequeˆncia finita de instruc¸o˜es bem definidas e na˜o amb´ıguas, cada uma das quais pode ser executada mecanicamente num per´ıodo de tempo finito e com uma quantidade de esforc¸o finita. tecmundo (...) Em termos mais te´cnicos, um algoritmo e´ uma sequeˆncia lo´gica, finita e definida de instruc¸o˜es que devem ser seguidas para resolver um problema ou executar uma tarefa. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Caracter´ısticas Algoritmo computacional Finitude Nu´mero finito e definido de passos. Tambe´m significa que a execuc¸a˜o deve ocorrer em um tempo finito Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Caracter´ısticas Algoritmo computacional Definic¸a˜o Cada passo ou comando deve ser bem definido, ou seja, o executor do algoritmo deve saber executar cada passo, sem ambiguidades e gerando sempre o mesmo resultado para um mesmo estado inicial Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Caracter´ısticas Algoritmo computacional Entrada O algoritmo deve ter uma entrada de dados ou um estado inicial Sa´ıda O algoritmo deve gerar uma sa´ıda de dados ou um estado final Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Caracter´ısticas Algoritmo computacional Efetividade O algoritmo deve sempre gerar o resultado esperado. Ser correto Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada/ Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Representac¸o˜es de algoritmos • Linguagem natural • Fluxograma • Pseudo-co´digo Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Representac¸o˜es de algoritmos • Linguagem natural • Fluxograma • Pseudo-co´digo Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Representac¸o˜es de algoritmos • Linguagem natural • Fluxograma • Pseudo-co´digo Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Linguagem natural I Exemplo Dispomos de duas vasilhas com capacidades de 9 e 4 litros respectivamente. As vasilhas na˜o tem nenhum tipo de marcac¸a˜o, de modo que na˜o e´ poss´ıvel ter medidas como metade ou um terc¸o. Mostre uma sequeˆncia de passos, que usando as vasilhas de 9 e 4 litros encha uma terceira vasilha de medida desconhecida com seis litros de a´gua. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Linguagem natural II Exemplo 1 Encha a vasilha de 9 litros; 2 Usando a vasilha de 9 litros, encha a vasilha de 4 litros; 3 Despeje o que sobrou na vasilha de 9 litros (5 litros) na terceira vasilha. Observe que falta um litro para completar os seis litros; 4 Esvazie a vasilha de 4 litros; 5 Torne a encher a vasilha de 9 litros; 6 Usando a vasilha de 9 litros encha a vasilha de 4 litros; 7 Esvazie a de 4 litros; 8 Usando o que restou na vasilha de 9 litros (5 litros), encha novamente a vasilha de quatro litros; 9 Despeje o que sobrou na vasilha de 9 litros (1 litro) na terceira vasilha, que agora tem 6 litros. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fluxograma Elementos Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Fluxograma Exemplo Calcula raiz de ax+ b = 0, b 6= 0 Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Pseudo-co´digo Pseudoco´digo E´ uma te´cnica textual de representac¸a˜o de um algoritmo. Tambe´m e´ conhecida como Portugueˆs Estruturado ou Portugol. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Linguagem de Programac¸a˜o Linguagem de programac¸a˜o E´ um conjunto de regras gramaticais de sintaxe e semaˆntica que podem representar um algoritmo computacional com detalhamento suficiente para a posterior execuc¸a˜o por um computador. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Sintaxe e Semaˆntica Sintaxe Regras gramaticais que definem quais sequeˆncias de termos sa˜o va´lidas para uma linguagem. Semaˆntica Definic¸a˜o de como uma sequeˆncia de uma linguagem deve ser interpretada. Ou seja, significado de uma sentenc¸a. Exemplo 3+* x 2 esta´ sintaticamente incorreta. 2 + 3 * x esta´ sintaticamente correta. A semaˆntica de 2 + 3 * x e´ ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Sintaxe e Semaˆntica Sintaxe Regras gramaticais que definem quais sequeˆncias de termos sa˜o va´lidas para uma linguagem. Semaˆntica Definic¸a˜o de como uma sequeˆncia de uma linguagem deve ser interpretada. Ou seja, significado de uma sentenc¸a. Exemplo 3+* x 2 esta´ sintaticamente incorreta. 2 + 3 * x esta´ sintaticamente correta. A semaˆntica de 2 + 3 * x e´ ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Sintaxe e Semaˆntica Sintaxe Regras gramaticais que definem quais sequeˆncias de termos sa˜o va´lidas para uma linguagem. Semaˆntica Definic¸a˜o de como uma sequeˆncia de uma linguagem deve ser interpretada. Ou seja, significado de uma sentenc¸a. Exemplo 3+* x 2 esta´ sintaticamente incorreta. 2 + 3 * x esta´ sintaticamente correta. A semaˆntica de 2 + 3 * x e´ ... Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜oElementos de uma LP 5 elementos ba´sicos • Entrada • Sa´ıda • Atribuic¸a˜o • Desvio condicional / Selec¸a˜o / Decisa˜o • Lac¸os / Loop / Repetic¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Elementos de uma LP 5 elementos ba´sicos • Entrada • Sa´ıda • Atribuic¸a˜o • Desvio condicional / Selec¸a˜o / Decisa˜o • Lac¸os / Loop / Repetic¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Elementos de uma LP 5 elementos ba´sicos • Entrada • Sa´ıda • Atribuic¸a˜o • Desvio condicional / Selec¸a˜o / Decisa˜o • Lac¸os / Loop / Repetic¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Elementos de uma LP 5 elementos ba´sicos • Entrada • Sa´ıda • Atribuic¸a˜o • Desvio condicional / Selec¸a˜o / Decisa˜o • Lac¸os / Loop / Repetic¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Elementos de uma LP 5 elementos ba´sicos • Entrada • Sa´ıda • Atribuic¸a˜o • Desvio condicional / Selec¸a˜o / Decisa˜o • Lac¸os / Loop / Repetic¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Atribuic¸a˜o Escrever valor em uma varia´vel Devemos conhecer os conceitos de : • Memo´ria – Dispositivo de armazenamento de dados do computador • Varia´vel – Abstrac¸a˜o da memo´ria em um programa • Identificador – Nome da varia´vel Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Atribuic¸a˜o Escrever valor em uma varia´vel Devemos conhecer os conceitos de : • Memo´ria – Dispositivo de armazenamento de dados do computador • Varia´vel – Abstrac¸a˜o da memo´ria em um programa • Identificador – Nome da varia´vel Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Atribuic¸a˜o Escrever valor em uma varia´vel Devemos conhecer os conceitos de : • Memo´ria – Dispositivo de armazenamento de dados do computador • Varia´vel – Abstrac¸a˜o da memo´ria em um programa • Identificador – Nome da varia´vel Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Varia´veis • As informac¸o˜es do seu programa sa˜o armazenadas em varia´veis • Varia´veis sa˜o abstrac¸o˜es da memo´ria do computador • Uma varia´vel corresponde a um enderec¸o na memo´ria RAM • Nem todas as linguagens vinculam tipos a uma varia´vel • Pseudo-co´digo e C vinculam tipos Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Varia´veis • As informac¸o˜es do seu programa sa˜o armazenadas em varia´veis • Varia´veis sa˜o abstrac¸o˜es da memo´ria do computador • Uma varia´vel corresponde a um enderec¸o na memo´ria RAM • Nem todas as linguagens vinculam tipos a uma varia´vel • Pseudo-co´digo e C vinculam tipos Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Varia´veis • As informac¸o˜es do seu programa sa˜o armazenadas em varia´veis • Varia´veis sa˜o abstrac¸o˜es da memo´ria do computador • Uma varia´vel corresponde a um enderec¸o na memo´ria RAM • Nem todas as linguagens vinculam tipos a uma varia´vel • Pseudo-co´digo e C vinculam tipos Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Varia´veis • As informac¸o˜es do seu programa sa˜o armazenadas em varia´veis • Varia´veis sa˜o abstrac¸o˜es da memo´ria do computador • Uma varia´vel corresponde a um enderec¸o na memo´ria RAM • Nem todas as linguagens vinculam tipos a uma varia´vel • Pseudo-co´digo e C vinculam tipos Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Varia´veis • As informac¸o˜es do seu programa sa˜o armazenadas em varia´veis • Varia´veis sa˜o abstrac¸o˜es da memo´ria do computador • Uma varia´vel corresponde a um enderec¸o na memo´ria RAM • Nem todas as linguagens vinculam tipos a uma varia´vel • Pseudo-co´digo e C vinculam tipos Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜esde algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Tipos Tipos de varia´veis Pseudo-co´digo Inteiros; Reais; Texto; Caractere; Lo´gico; Linguagem C int (e variac¸o˜es), float (e variac¸o˜es) e char . Voltaremos a falar sobre tipos da linguagem C em breve. tipos em C Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Tipos Tipos de varia´veis Pseudo-co´digo Inteiros; Reais; Texto; Caractere; Lo´gico; Linguagem C int (e variac¸o˜es), float (e variac¸o˜es) e char . Voltaremos a falar sobre tipos da linguagem C em breve. tipos em C Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Tipos Tipos de varia´veis Pseudo-co´digo Inteiros; Reais; Texto; Caractere; Lo´gico; Linguagem C int (e variac¸o˜es), float (e variac¸o˜es) e char . Voltaremos a falar sobre tipos da linguagem C em breve. tipos em C Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Atribuic¸a˜o Escrever valor em uma varia´vel Pseudo-co´digo: 1 x← 10; Linguagem C: 1 x = 10; Leia: ”X recebe 10” Na˜o Leia: ”X igual a 10” Pode causar confusa˜o Outros operadores Linguagem C possui outros operadores de atribuic¸a˜o. Atribuic¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Atribuic¸a˜o Escrever valor em uma varia´vel Pseudo-co´digo: 1 x← 10; Linguagem C: 1 x = 10; Leia: ”X recebe 10” Na˜o Leia: ”X igual a 10” Pode causar confusa˜o Outros operadores Linguagem C possui outros operadores de atribuic¸a˜o. Atribuic¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Expresso˜es • Expresso˜es matema´ticas devem ser escrita em texto puro • Use apenas pareˆnteses • Expressa˜o matema´tica x2+3∗(2+5) 4+{60−2+[x−(2+y)]∗3} • Expressa˜o em texto puro (x ∗ x+ 3 ∗ (2 + 5))/(4 + (60− 2 + (x− (2 + y)) ∗ 3)) Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Expresso˜es • Expresso˜es matema´ticas devem ser escrita em texto puro • Use apenas pareˆnteses • Expressa˜o matema´tica x2+3∗(2+5) 4+{60−2+[x−(2+y)]∗3} • Expressa˜o em texto puro (x ∗ x+ 3 ∗ (2 + 5))/(4 + (60− 2 + (x− (2 + y)) ∗ 3)) Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Expresso˜es • Expresso˜es matema´ticas devem ser escrita em texto puro • Use apenas pareˆnteses • Expressa˜o matema´tica x2+3∗(2+5) 4+{60−2+[x−(2+y)]∗3} • Expressa˜o em texto puro (x ∗ x+ 3 ∗ (2 + 5))/(4 + (60− 2 + (x− (2 + y)) ∗ 3)) Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Expresso˜es • Expresso˜es matema´ticas devem ser escrita em texto puro • Use apenas pareˆnteses • Expressa˜o matema´tica x2+3∗(2+5) 4+{60−2+[x−(2+y)]∗3} • Expressa˜o em texto puro (x ∗ x+ 3 ∗ (2 + 5))/(4 + (60− 2 + (x− (2 + y)) ∗ 3)) Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Expresso˜es • Expresso˜es matema´ticas devem ser escrita em texto puro • Use apenas pareˆnteses • Expressa˜o matema´tica x2+3∗(2+5) 4+{60−2+[x−(2+y)]∗3} • Expressa˜o em texto puro (x ∗ x+ 3 ∗ (2 + 5))/(4 + (60− 2 + (x− (2 + y)) ∗ 3)) Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Expresso˜es • Expresso˜es matema´ticas devem ser escrita em texto puro • Use apenas pareˆnteses • Expressa˜o matema´tica x2+3∗(2+5) 4+{60−2+[x−(2+y)]∗3} • Expressa˜o em texto puro (x ∗ x+ 3 ∗ (2 + 5))/(4 + (60− 2 + (x− (2 + y)) ∗ 3)) Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Expresso˜es Operadores Operadores Pseudo-co´digo C Atribuic¸a˜o ← = Aritme´ticos +,−, /, ∗ +,−, /, ∗ Resto da divisa˜o mod % Raiz √ 4 sqrt(4) Poteˆncia 35 pow(3,5) Relacionais <,>,= <,>,== Relacionais ≤,≥, 6= <=, >=, ! = Lo´gicos e, ou, na˜o && , ‖, ! Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıdaDesvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Sa´ıda Escrevendo mensagem na tela Pseudo-co´digo: 1 Escreva ”Ola´ mundo! ”; 2 Escreva ”O valor de x e´ ”, x; Linguagem C: 1 printf("Ola mundo!"); 2 printf("O valor de x eh %d",x); Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Entrada Ler valor do teclado Pseudo-co´digo: 1 Leia x; Linguagem C: 1 int x; 2 scanf("%d" ,&x); Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Bloco de comandos Bloco de Comandos E´ um u´nico comando (Escreva, Leia, Atribua, etc.) ou uma sequeˆncia de blocos de comandos delimitados por delimitadores de bloco. Delimitador de bloco Na linguagem C se usa: { } Em pseudo-co´digo se costuma usar: Inı´cio, Fim Algumas linguagem usam a Indentac¸a˜o para indicar os blocos. Na˜o e´ o caso da C Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Se ... Enta˜o... Desvio condicional Pseudo-co´digo: 1 se x = 0 enta˜o 2 x← 1; 3 fim se Linguagem C: 1 if( x == 0){ 2 x = 1; 3 } Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Se ... Enta˜o ... Sena˜o ... Desvio condicionals Pseudo-co´digo: 1 se x = 0 enta˜o 2 x← 1; 3 sena˜o 4 x← 2 5 fim se Linguagem C: 1 if( x == 0){ 2 x = 1; 3 }else{ 4 x = 2; 5 } Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Enquanto ... Fac¸a. Loop Pseudo-co´digo: 1 enquanto x ≤ 10 fac¸a 2 x← x+ 1; 3 fim enqto Linguagem C: 1 while(x <= 10){ 2 x = x+1; 3 } Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Enquanto ... Fac¸a/ Repita ... ate´ Loop Pseudo-co´digo: 1 repita 2 x← x+ 1; 3 ate´ x > 10; Linguagem C: 1 do{ 2 x = x+1; 3 }while(x <= 10); Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Para ... Fac¸a ... Loop Pseudo-co´digo: 1 para x← 1 ate´ 100 hacer 2 Escreva x; 3 fin para Linguagem C: 1 for(x=1; x <=100; x=x+1){ 2 printf(" %d\n",x); 3 } A estrutura for da linguagem C e´ bastante flex´ıvel. Voltaremos a falar dela em seguida. Iterac¸a˜o Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Esquecer de colocar “ ; ” onde deve: 1 printf("acho q esqueci de algo ,\n") 2 printf ("o programa nao quer compilar .\n"); • Colocar “ ; ” onde na˜o deve: 1 if(1 == 2); 2 printf("Isso nao deveria ser escrito na tela\n"); 3 printf ("Socorro !\n"); • Colocar “ = ” no lugar de “ == ” : 1 if(x = 2) 2 printf("Tem algo errado aqui.\n"); • Se perder nas chaves e parenteses: 1 if(x==1){if(y==3){while(z <= 10){ 2 if(z % 2 == 0) 3 c = c +1; 4 }}}//sera q coloquei chaves suficientes ? Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Esquecer de colocar “ ; ” onde deve: 1 printf("acho q esqueci de algo ,\n") 2 printf ("o programa nao quer compilar .\n"); • Colocar “ ; ” onde na˜o deve: 1 if(1 == 2); 2 printf("Isso nao deveria ser escrito na tela\n"); 3 printf ("Socorro !\n"); • Colocar “ = ” no lugar de “ == ” : 1 if(x = 2) 2 printf("Tem algo errado aqui.\n"); • Se perder nas chaves e parenteses: 1 if(x==1){if(y==3){while(z <= 10){ 2 if(z % 2 == 0) 3 c = c +1; 4 }}}//sera q coloquei chaves suficientes ? Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Esquecer de colocar “ ; ” onde deve: 1 printf("acho q esqueci de algo ,\n") 2 printf ("o programa nao quer compilar .\n"); • Colocar “ ; ” onde na˜o deve: 1 if(1 == 2); 2 printf("Isso nao deveria ser escrito na tela\n"); 3 printf ("Socorro !\n"); • Colocar “ = ” no lugar de “ == ” : 1 if(x = 2) 2 printf("Tem algo errado aqui.\n"); • Se perder nas chaves e parenteses: 1 if(x==1){if(y==3){while(z <= 10){ 2 if(z % 2 == 0) 3 c = c +1; 4 }}}//sera q coloquei chaves suficientes ? Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Esquecer de colocar “ ; ” onde deve: 1 printf("acho qesqueci de algo ,\n") 2 printf ("o programa nao quer compilar .\n"); • Colocar “ ; ” onde na˜o deve: 1 if(1 == 2); 2 printf("Isso nao deveria ser escrito na tela\n"); 3 printf ("Socorro !\n"); • Colocar “ = ” no lugar de “ == ” : 1 if(x = 2) 2 printf("Tem algo errado aqui.\n"); • Se perder nas chaves e parenteses: 1 if(x==1){if(y==3){while(z <= 10){ 2 if(z % 2 == 0) 3 c = c +1; 4 }}}//sera q coloquei chaves suficientes ? Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Achar que C e´ uma linguagem declarativa: 1 delta = b*b - 4*a*c; // estou definindo delta 2 scanf(" %lf %lf %lf",&a, &b, &c);// estou lendo os valores de a, b, c 3 printf("O valor de delta eh: %lf \n",delta);// pq nao escreve o valor correto? • Trocar os caracteres de codificac¸a˜o de entrada e sa´ıda (“%d , %f, %lf , etc.”) 1 double a, b; 2 scanf(" %d %d " ,&a, &b); 3 c = a+b; 4 printf("A soma eh: %lf \n",c);//nao consigo nem fazer uma soma ? • Trocar “ \ ” por “/” 1 printf("c = %lf /n",c); //Ops! • Vai tentar escrever alguma mensagem no scanf : 1 scanf("digite o valor para x: %lf \n",x); Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Achar que C e´ uma linguagem declarativa: 1 delta = b*b - 4*a*c; // estou definindo delta 2 scanf(" %lf %lf %lf",&a, &b, &c);// estou lendo os valores de a, b, c 3 printf("O valor de delta eh: %lf \n",delta);// pq nao escreve o valor correto? • Trocar os caracteres de codificac¸a˜o de entrada e sa´ıda (“%d , %f, %lf , etc.”) 1 double a, b; 2 scanf(" %d %d " ,&a, &b); 3 c = a+b; 4 printf("A soma eh: %lf \n",c);//nao consigo nem fazer uma soma ? • Trocar “ \ ” por “/” 1 printf("c = %lf /n",c); //Ops! • Vai tentar escrever alguma mensagem no scanf : 1 scanf("digite o valor para x: %lf \n",x); Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Achar que C e´ uma linguagem declarativa: 1 delta = b*b - 4*a*c; // estou definindo delta 2 scanf(" %lf %lf %lf",&a, &b, &c);// estou lendo os valores de a, b, c 3 printf("O valor de delta eh: %lf \n",delta);// pq nao escreve o valor correto? • Trocar os caracteres de codificac¸a˜o de entrada e sa´ıda (“%d , %f, %lf , etc.”) 1 double a, b; 2 scanf(" %d %d " ,&a, &b); 3 c = a+b; 4 printf("A soma eh: %lf \n",c);//nao consigo nem fazer uma soma ? • Trocar “ \ ” por “/” 1 printf("c = %lf /n",c); //Ops! • Vai tentar escrever alguma mensagem no scanf : 1 scanf("digite o valor para x: %lf \n",x); Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Erros comuns todos erram = vai cair na prova • Achar que C e´ uma linguagem declarativa: 1 delta = b*b - 4*a*c; // estou definindo delta 2 scanf(" %lf %lf %lf",&a, &b, &c);// estou lendo os valores de a, b, c 3 printf("O valor de delta eh: %lf \n",delta);// pq nao escreve o valor correto? • Trocar os caracteres de codificac¸a˜o de entrada e sa´ıda (“%d , %f, %lf , etc.”) 1 double a, b; 2 scanf(" %d %d " ,&a, &b); 3 c = a+b; 4 printf("A soma eh: %lf \n",c);//nao consigo nem fazer uma soma ? • Trocar “ \ ” por “/” 1 printf("c = %lf /n",c); //Ops! • Vai tentar escrever alguma mensagem no scanf : 1 scanf("digite o valor para x: %lf \n",x); Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios I Hora de praticar Implemente um programa que: 1 escreve na tela a frase “O primeiro programa a gente nunca esquece!”. 2 mostre na tela algumas frases assassinas, que sa˜o aquelas que fazem com muitas ideias sejam perdidas antes que amadurec¸am ou seja aprofundadas. Eis alguns exemplos (bole tambe´m os seus): • “Isto na˜o vai dar certo” • “Voceˆ nunca vai conseguir” • “Voceˆ vai se estrepar” • “Na˜o vai dar em nada” • “Esta´ tudo errado!” Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios II Hora de praticar 3 escreva a sa´ıda: ALUNO(A) NOTA ======== ====== ALINE 10 MA´RIO 8.5 SE´RGIO 9 SHIRLEY 9.7 4 mostre o seguinte menu na tela: Cadastro de Clientes 1 - Fim 2 - Inclui 3 - Altera 4 - Exclui 5 - Consulta Opc¸~ao: 5 leia dois inteiros do teclado e escreva a soma destes valores. 6 leia treˆs nu´meros reais do teclado e escreva o valor do maior deles. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios III Hora de praticar 7 leia treˆs valores reais do teclado e escreva a me´dia. 8 leia treˆs valores reais do teclado e escreva a mediana. 9 mostre na tela o resultado de cada expressa˜o e confira seus ca´lculos. • √2 ∗ 5, 3 • 2 408+2 • 3∗(2+(8,3−5)∗(−12)) 1+0,002 • 50 mod 3 + 2 • 7 ∗ 8 + 6/4 + 1 ∗ 3− 2 10 Reescreva os trechos de programa abaixo, usando linguagem C: a) 1 se x = 0 enta˜o 2 x← 1; 3 y ← 30, 2; 4 fim se Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios IV Hora de praticar b) 1 se x = 0 enta˜o 2 x← 1; 3 sena˜o 4 x← 2; 5 fim se c) 1 enquanto x ≥ 0 fac¸a 2 x← x− 1; 3 fim enqto 4 x← 2; d) 1 repita 2 x← x5; 3 ate´ x 6= 10; Fund. de Programac¸a˜o einstein@ufc.brIntroduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios V Hora de praticar e) 1 para i← a ate´ b hacer 2 Escreva i2; 3 fin para f) 1 para i← a ate´ b hacer 2 Escreva i; 3 se i mod 2 = 0 enta˜o 4 Escreva: “ i e´ par”; 5 sena˜o 6 enquanto i ≥ a2 fac¸a 7 i← i− 1; 8 fim enqto 9 fim se 10 fin para Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios VI Hora de praticar 11 O pseudo-co´digo abaixo calcula o somato´rio ∑b i=a i, reescreva-o em linguagem C. 1 Leia: a, b; 2 para i← a ate´ b hacer 3 soma← soma+ i; 4 fin para 5 Escreva: “ o valor da soma e´ ”, soma; 12 leia o raio e escreva a a´rea do ciclo. 13 leia o raio e escreva o volume da esfera. 14 calcule a a´rea de um trape´zio. 15 leia valores para a, b e c e calcule as ra´ızes reais da equac¸a˜o ax2 + bx+ c = 0. 16 leia uma temperatura em graus Ce´lcios e escreva em Fahrenheit. 17 leia uma temperatura em graus Fahrenheit e escreva em Ce´lcios. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios VII Hora de praticar 18 “adivinha” o nu´mero pensado por uma pessoa (Pense um nu´mero (pausa), multiplique por 2 (pausa), some 6 ao resultado (pausa), divida o resultado por 2, quanto deu? (informe o resultado), voce^ pensou o nu´mero tal).[Dica: Para a sequeˆncia proposta, a expressa˜o e´ (sendo n o nu´mero pensado e R o resultado): (n ∗ 2 + 6)/2 = R, onde n = (R ∗ 2− 6)/2 = R− 3. Ou seja, basta subtrair 3 do resultado fornecido pela pessoa para “adivinhar”o nu´mero]. 19 converta cent´ımetros em polegadas e visse-versa. 20 de menu que mostra na tela, sob o t´ıtulo de ”Menu Principal”, treˆs opc¸o˜es: ”1 - Fim”, ”2 - Cadastro”e ”3 - Consulta”, leˆ do teclado a opc¸a˜o desejada pelo usua´rio e mostra uma mensagem confirmando a opc¸a˜o escolhida ou uma mensagem de erro, se a opc¸a˜o for inva´lida. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios VIII Hora de praticar 21 elaborar uma questa˜o de mu´ltipla escolha, de uma disciplina que esteja cursando ou um tema de interesse, com um enunciado e cinco alternativas, sendo uma correta ou incorreta. Escrever um programa que mostra a questa˜o na tela, pede a resposta correta e informa ao usua´rio se este acertou ou errou. 22 leˆ dois nu´meros quaisquer e mostra na tela uma mensagem indicando qual e´ o maior, ou se sa˜o iguais. 23 leˆ dois nu´meros e efetua uma divisa˜o, mas somente se o divisor for diferente de zero; quando isto ocorrer, e´ mostrada uma mensagem de erro apropriada. 24 leˆ uma disciplina e respectiva nota final, e informa o que ocorreu. Se a nota for de 7 a` 10, aprovado; se 4 a` menor que 7, AF e, caso contra´rio, reprovado. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios IX Hora de praticar 25 usando loops escreve o pro´ximo sucesso pop-sertanejo: RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU 26 Agora fac¸a o mesmo para a versa˜o acu´stica: RA RA RA TU TU TU RA RA RA TU TU TU RA RA RA TU TU TU RA RA TU TU RA RA TU TU RA RA TU TU RA TU RA TU RA TU 27 leia o valor de n e escreva as sequeˆncias: a) 1, 2, 3, 4, ..., n b) n, ..., 3, 2, 1 c) 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, ... 1, 2, 3, 4, ..., n d) 1, n, 2, n− 1, 3, n− 2, ..., n− 2, 3, n− 1, 2, n, 1 28 para cada sequeˆncia da questa˜o anterior, escreva o nu´mero de elementos, a soma destes elementos e a me´dia destes elementos. Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios X Hora de praticar 29 leˆ n, em seguida leˆ n nu´meros reais e no final escreva o maior, o menor, a soma e a me´dia destes nu´meros. 30 Qual o valor final de c nos programas abaixo: a) 1 c← 0; 2 para i← 1 ate´ 10 hacer 3 c← c+ 2; 4 fin para b) 1 c← 0; 2 para i← 1 ate´ 10 hacer 3 para j ← 1 ate´ 34 hacer 4 c← c+ 1; 5 fin para 6 fin para Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios XI Hora de praticar c) 1 c← 0; 2 para i← 1 ate´ 10 hacer 3 para j ← 1 ate´ i hacer 4 c← c+ 1; 5 fin para 6 fin para Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Exerc´ıcios XII Hora de praticar 31 Implemente em C o programa abaixo: 1 Var: x, y, p, z, f :Inteiro; 2 inicio 3 Leia x, y ; 4 p← x; 5 z ← y; 6 f ← 1; 7 enquanto z > 0 fac¸a 8 se z mod 2 = 1 enta˜o 9 f ← f ∗ p; 10 fim se 11 p← p ∗ p; 12 z ← z ÷ 2; 13 fim enqto 14 Escreva f ; 15 fin Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos Representac¸o˜es de algoritmos Linguagem de Programac¸a˜o Atribuic¸a˜o e Varia´veis Entrada / Sa´ıda Desvio condicional Loops Erros comuns Exerc´ıcios Linguagem C Introduc¸a˜o Tipos de dados Entrada/Sa´ıda Selec¸a˜o Atribuic¸a˜o Iterac¸a˜o Linguagem C Primeiros passos Ken Thompson e Dennis Ritchie Fund. de Programac¸a˜o einstein@ufc.br Introduc¸a˜o Linguagem abordada Introduc¸a˜o a Algoritmos
Compartilhar