1 / 94

Prof. Reginaldo Ré reginaldo@utfpr.br coinf.cm.utfpr.br

Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br. Universidade Tecnológica Federal do Paraná – Campus Campo Mourão COINT - Coordenação do Curso Superior de Tecnologia em Sistemas para Internet. Introdução à Programação usando Linguagem C.

webb
Télécharger la présentation

Prof. Reginaldo Ré reginaldo@utfpr.br coinf.cm.utfpr.br

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br Universidade Tecnológica Federal do Paraná – Campus Campo MourãoCOINT - Coordenação do Curso Superior de Tecnologia em Sistemas para Internet Introdução à Programação usando Linguagem C

  2. Aulas adaptadas dos materiais... • Do. Prof. Rogério Aparecido Gonçalves • http://coinf.cm.utfpr.edu.br/docentes/rogerioag • Do Prof. Leandro Galvão • www.dcc.ufam.edu.br/~galvao/ • De Allan Diego Silva Lima • http://allanlima.wordpress.com/

  3. Apresentações pessoais Recursos disponíveis Introdução ao Curso de Programação em Linguagem C Algoritmo Definições de Algoritmo Algoritmo x Programa de Computador Algoritmos e suas técnicas de construção O ambiente de programação CDT-Eclipse Linguagem de programação C Aula 1 - Sumário

  4. Reginaldo Ré Dr. Computação e Matemática Computacional ICMC-USP Engenharia de Software Bacharel em Ciência da Computação FIPP-UNOESTE Engenharia de Software Coordenador do Curso Superior de Tecnologia em Sistemas para Internet Apresentações Pessoais

  5. Recursos Disponíveis • coinf.cm.utfpr.edu.br • CDT-Eclipse

  6. Introdução ao Curso de Programação em Linguagem C • Dispõe-se de 2 vasilhas com capacidades marcadas de 9 e 4 litros, respectivamente. Mostre a sequência de passos necessários para colocar numa terceira vasilha de medida desconhecida um volume de 6 litros. 6 9 ? 4

  7. Algoritmo • Sabemos criar e seguir algoritmos. • Exemplos clássicos: • Como tomar banho? • Como ir de casa até a UTFPR? • Como trocar o pneu do carro? • Como trocar uma lâmpada? • Como fazer a média final da disciplina? • ... Algoritmos fazem parte da nossa vida, mais do que imaginamos!

  8. Definição de Algoritmo • “Um conjunto finito de regras que provê uma sequência de operações para resolver um tipo de problema específico” – Donald Knuth ( “The art of computer programming”)

  9. Outras definições... • “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” • – [Aurélio] • “Sequência ordenada, e não ambígua, de passos que levam à solução de um dado problema” • – [TREMBLAY] • “Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido” • – [FORBELLONE e EBERSPÄCHER]

  10. Outras definições... • “É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações primitivas, as quais damos por certo que podem ser executadas”. • – [Guimarães/Lages] • “É a descrição de uma sequênciade passos que deve ser seguida para a realização de uma tarefa”. • – [ASCENCIO, 1999] • “É uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância.” • – [SALVETTI, 1999]

  11. Outras definições... • “Redação que descreve de forma lógica e sem ambigüidades, uma sequência de passos (ações) para se resolver um problema que tenha um comportamento padrão.” • – [Franco e Polidório] • “Algoritmos são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas” • – [MANZANO, 1997] • “Um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.” • – [FARRER, 1999]

  12. Algoritmo • O algoritmo deve ensinar a resolver o problema, e não trazer a solução. • Exemplo: receita de bolo. • Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um resultado final previsível e bem definido. • Objetivo: solução do problema.

  13. AlgoritmosCaracterísticas Importantes • Finitude: Um algoritmo deve sempre terminar após um número finito de passos. • Definição: Cada passo de um algoritmo deve ser precisamente definido. As ações devem ser definidas rigorosamente e sem ambiguidades. • Entradas: Um algoritmo deve ter zero ou mais entradas, fornecidas antes do algoritmo iniciar. • Saídas: Um algoritmo deve ter uma ou mais saídas. • Efetividade: Todas as operações devem ser simples de modo que possam ser executadas em um tempo limitado.

  14. AlgoritmosDificuldades iniciais • Difícil para iniciantes saber o que o computador pode ou não fazer. • Criação de algoritmos não é um processo automático, cada pessoa tem uma forma de pensar, de organizar o raciocínio. • Pode haver mais de uma solução para um problema. • Torre de Hanoi

  15. Algoritmo • Aspecto lógico: ordenar o pensamento. • Organização sequencial das ações pertinentes à solução de um problema; • Exemplo da receita de bolo: o bolo só pode ser levado ao forno depois que a massa estiver pronta. • Lógica no dia-a-dia: • Todo aluno estuda bastante. • Vocês são alunos. • Portanto, vocês estudam bastante.

  16. Algoritmo • Padrão de comportamento: uma sequência de ações para resolver um problema. • Exemplos: • Trocar uma lâmpada (problema do cotidiano): • pegue uma escada; • posicione-a sob a lâmpada; • busque uma lâmpada nova; • suba na escada; • retire a lâmpada velha; • coloque a lâmpada nova. • Calcular a área de um retângulo (problema matemático): • obtenha a medida da base do retângulo; • obtenha a medida da altura do retângulo; • multiplique a medida da base pela medida da altura.

  17. Um Desafio • Torre de Hanoi: o objetivo é mover os discos de um pino para outro. • Somente um disco pode ser movido por vez. • Cada movimento consiste em tirar discos de um pino e colocar em outro. • Nenhum disco pode ser colocado em cima de um disco menor.

  18. O desafio continua... • Descreva a sequência de movimentos dos discos para a solução dessa configuração de torre de hanói.

  19. Outro Desafio • O problema dos Bits trocados • Os caixas eletrônicos das Ilhas Weblands operam com todos os tipos de notas disponíveis, mantendo um estoque de cédulas para cada valor (B$ 50,00, B$10,00, B$5,00 e B$1,00). Os clientes do banco utilizam os caixas eletrônicos para efetuar retiradas de um certo número inteiro de Bits. • Sua tarefa é escrever um algoritmo que, dado o valor de Bits desejado pelo cliente, determine o número de cada uma das notas necessário para totalizar esse valor, de modo a minimizar a quantidade de cédulas entregues.

  20. Linguagem Natural Linguagem Algorítmica Linguagem Computacional Algoritmo x Programa de Computador • Um programa de computador é um algorimo escrito em uma linguagem de programação • Algoritmo: o executor é o cérebro humano • Programa de computador: o executor é um computador

  21. Algoritmo x Programa de Computador Raciocínio int a, b, c; if (a > 2) a = b + c; else a = b – c; return; Algoritmo Programa

  22. Algoritmos x Programas de Computador Processamento (Computador)‏ Dados de Saída Dados de Entrada • Algoritmos geralmente descrevem algum processamento de dados: • Estes dados precisam ser representados (descritos) nos algoritmos; • Analogia com a ação humana de efetuar calculos matemáticos mentalmente

  23. Exemplo • Faça um Algoritmo para calcular a média aritmética entre duas notas de um aluno e mostrar sua situação, o que pode ser APROVADO ou REPROVADO. Passo 1: Receber os valores das duas notas Passo 2: Calcular a média aritmética Passo 3: Mostrar a média aritmética Passo 4: Se a média aritmética for maior ou igual a 7, entãosituação do aluno é APROVADO; caso contrário, a situação é REPROVADO.

  24. Formas de representação de algoritmos: Pseudocódigo • Um programa de computador é uma forma de representar um algoritmo • Proximidade com a linguagem de máquina do computador • Existem algumas outras formas • Pseudo-linguagem: emprega linguagem intermediária entre linguagem natural e linguagem de programação • Este método procura misturar as facilidades da linguagem natural com a precisão das linguagens de programação • A representação da solução em pseudo código possibilita ao programador a abstração dos detalhes da sintaxe da linguagem escolhida

  25. Exemplo ALGORITMO MÉDIA DECLARE N1, N2, M NUMÉRICO ESCREVA “Digite as duas notas” LEIA N1, N2 M ← (N1 + N2) / 2 ESCREVA “Média = ”, M SE M >= 7 ENTÃO ESCREVA “Aprovado” SENÃO ESCREVA “Reprovado” FIM_ALGORITMO.

  26. Exemplo

  27. AlgoritmosSintaxe e Semântica • Sintaxe: dita as regras de como as sentenças e cada um de seus elementos devem ser construídos corretamente; • Regras Sintáticas • Semântica: se preocupa com o significado de uma sentença construída.

  28. AlgoritmosSintaxe e Semântica • A sintaxe por si só não define completamente uma linguagem. • Exemplo: • “Descoloridas idéias verdes sonham furiosamente” (Chomsky)‏ • Por outro lado: • “Nóis foi, mais já vortemo”

  29. Técnicas de Construção de Algoritmos • Divisão para a conquista: Técnica de divisão do problema em partes menores. • As soluções das partes menores combinam-se para a composição da solução global. • Receita de um bolo (modo de preparo do bolo, preparo do receio, preparo da cobertura) • Reaproveitamento: Reutilização de soluções como parte de uma nova solução. • Em um livro de receitas, os pratos que necessitassem o preparo de um molho branco, poderiam referenciar a página da receita do molho branco. “Para o preparo do molho leia a página 25”

  30. Passos para elaboração de um algoritmo • Compreender o problema. • Definir os dados de entrada • Definir o processamento dos dados de entrada par alcançar a solução • Definir os dados de saída • Construir o algoritmo usando uma forma de representação • Testar o algoritmo realizando simulações

  31. Passos para elaboração de um programaExemplo • Calcular as raízes reais de:

  32. Compreender o problema • Exemplo: Equação de 2o. grau • Possibilidades de raízes: • 02 raízes complexas; • 02 raízes reais idênticas; • 02 raízes reais distintas; • Condição para haver raízes reais: Δ ≥ 0

  33. Definir os dados de Entrada • As entradas fornecidas são os temos a, b, c

  34. Definir o processamento • Calcular Δ. • Se Δ ≥ 0, calcular raízes reais. • Caso contrário, informar que não há raízes reais.

  35. Definir os dados de saída • 02 raízes complexas; • 02 raízes reais idênticas; • 02 raízes reais distintas;

  36. Construir o algoritmo ler(a,b,c) delta = b^2 – 4*a*c se (delta ≥ 0) então r1 = – b – (delta)^(–1/2) r2 = – b + (delta)^(–1/2) escrever(r1,r2) senão escrever(“Não há raiz real”) fim do se fim do algoritmo

  37. Construir o algoritmo #include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { float a, b, c, delta, r1, r2; scanf("%f %f %f", &a, &b, &c); delta = b*b – 4*a*c; if (delta >=0) { r1 = – b – sqrt(delta); r2 = – b + sqrt(delta); printf("r1 = %f \n r2 = %f", r1, r2); } else printf("Nao ha raiz real\n"); }

  38. Exercícios • Ler dois números inteiros e imprimir a soma. • Entrar com dois números inteiros e imprimir a média aritmética. • Escreva um algoritmo que calcule o diâmetro, a área e a circunferência de um círculo, sabendo que o único dado disponível é o seu raio. • Diâmetro = 2 * Raio • Área = Pi * Raio * Raio • Circunferência= 2 * Pi * Raio • Criar um algoritmo que solicite e imprima os valores da diagonal maior, diagonal menor e calcule a área de um losango. • Fórmula: (diagonal maior * diagonal menor) dividido por 2

  39. Exercícios de Fixação • Elaborar um algoritmo para calcular e apresentar o volume de uma lata de óleo, utilizando a fórmula: • VOLUME = 3.14159 * (R*R) * ALTURA. • Escreva um algoritmo que pergunte a altura (em metros) e a massa (em Kg) de uma pessoa. Em seguida o programa deverá exibir uma mensagem dizendo o índice de massa corporal. • imc = peso / altura * altura

  40. O ambiente de programação CDT-Eclipse

  41. A linguagem C • A linguagem C é uma linguagem de programação genérica inventada na década de 1970 por Dennis Ritchie. • O ANSI (American National Standard Institute) padronizou a versão ANSI-C http://en.wikipedia.org/wiki/C_programming_language

  42. A linguagem C • Desenvolvida por Dennis Ritchie (Laboratórios Bell, 1972) • Criada inicialmente para ser um "ASSEMBLY portátil". • Rodava num computador PDP-11, usando o sistema operacional UNIX. • Posteriormente foi utilizada para reescrever o UNIX. • Somente em 1978 Brian W. Kernighan e Dennis Ritchie estabeleceram a sintaxe e a semântica da linguagem C. • O desenvolvimento de C foi influenciado pela linguagem B (Ken Thompson), que teve suas origens na BCPL (Martins Richards). • Tais linguagens surgiram da evolução da Algol CPL.

  43. A linguagem C e sua família • CPL (Combined Programming Language) • BCPL (Basic CPL) • B (Ken Thompson, Bell Labs, 1970) • C (Dennis Ritchie, Bell Labs, 1972). • C++ (Bjarne Stroustrup, Bell Labs, 1983)

  44. C é uma linguagem de médio nível

  45. Por que estudar C? • Versatilidade: ele possui tanto características de "alto nível" quanto de "baixo nível". • Poder: possui ampla biblioteca de funções e é utilizado na construção de “software” para os mais diversos projetos. • Portabilidade: é possível adaptar um programa em C de um tipo de computador para outro.

  46. Primeiros passos • Um programa em C consiste de várias funções encadeadas. • Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. • Blocos de código são delimitados por chaves: {} • O uso de funções permite que o programa fique mais legível, mais estruturado.

  47. O C é “Case Sensitive” • Caracteres maiúsculos e minúsculos fazem diferença: • Comandos do C (if ou for, por exemplo) só podem ser escritos em minúsculas, pois senão o compilador interpretará como variáveis. Soma ≠ soma ≠ SOMA ≠ SomA

  48. Estrutura de um programa em C tipo_de_retorno main() { comandos return valor; }

  49. Estrutura de um programa em CExemplo Avisa ao compiladorque as funções deentrada e saída dedados da bibliotecastdio A função main éo corpo principaldo programa. int main() { … } Todo programadeve ter um main. As chaves { e }marcam o início eo fim da função. Avisa o SO que o programa terminou sem problemas. O programa usa a função printf(...) para imprimir a mensagem no console. Texto deve ser entre áspas:“Olá Mundo!”

  50. A função main() • Todo programa deve ter uma única função main. • A função main é o ponto de partida quando o programa é executado. • Arquivos auxiliares não devem conter a função main.

More Related