Fundamentos da Programação de Computadores Fábio Botelho [email protected] Segundo Semestre de 2010 Módulo I - Conceitos Básicos • O homem sempre procurou criar máquinas ou desenvolver técnicas que facilitem a sua vida • O ápice da criação do homem é o computador • O computador – é capaz de auxiliar em qualquer coisa que lhe seja solicitada – Não tem iniciativa, independência, não é criativo nem inteligente – Precisa receber as instruções nos mínimos detalhes Conceitos Básicos • Processamento de Dados Informações Iniciais Dispositivo de Entrada + Operações sobre as informações Resposta CPU / Memória Dispositivo de Saída Conceitos Básicos • Hardware X Software – Hardware é a parte física do computador – Software permite realizar determinado tipo de processamento de dados para uma finalidade específica • Quando queremos escrever um software utilizamos uma linguagem de programação para codificar um ou vários componentes Conceitos Básicos • Etapas para o desenvolvimento de um programa de computador – Análise • Estuda-se o problema a ser solucionado para definir dados de entrada, processamentos e dados de saída – Algorítmo • Ferramentas como descrição narrativa, fluxograma ou português estruturado são utilizadas para uma resolução inicial do problema em um alto nível de abstração – Codificação • O Algorítmo é transformado em códigos da linguagem de programação escolhida Problemas do mundo real Percepção Humana, como os homens percebem e interagem com o mundo real Algorítmo Intermediário, entre a percepção humana e o modo como o computador executa as instruções Codificação em uma linguagem de programação Interpretação Tradução / Compilação Linguagem de Máquina Próximo do Computador, como são executadas as instruções de máquina Hardware / Computador Código Objeto Ligador (Linkeditor) Programa executável Conceitos Básicos • Um Programa é portanto a codificação de um algorítmo em uma determinada linguagem de programação (ASCENCIO, 1999) Conceitos Básicos • Conceito de Algorítmo – É uma sequência de passos que visa atingir um objetivo bem definido (FORBELLONE, 1999) – É uma sequência de 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… (SALVETTI, 1999) Conceitos Básicos • Exemplos de Algorítmo usando o método da narração descritiva 1. Somar três números PASSO 1 – Ler os três números PASSO 2 – Atribuir a soma a uma variável que armazene o resultado PASSO 3 – Mostrar o resultado Conceitos Básicos • Exemplos de Algorítmo usando o método da narração descritiva 2. Fazer um Sanduíche PASSO 1 – Pegar o pão PASSO 2 – Cortar o pão ao meio PASSO 3 – Passar a maionese PASSO 4 – Por alface e tomate PASSO 5 – Por o amburguer frito no pão PASSO 6 - Comer Conceitos Básicos • Exemplos de Algorítmo usando o método da narração descritiva 3. Sacar dinheiro no banco 24 horas PASSO 1 – Ir ao banco PASSO 2 – Colocar o cartão PASSO 3 – Digitar a senha PASSO 4 – Solicitar a quantia PASSO 5 – Se houver saldo suficiente para o saque, realizar o saque. Caso contrário exibir mensagem saldo insuficiente PASSO 6 – Retirar o cartão PASSO 7 – Sair do banco Conceitos Básicos • Método para a Construção de Algorítmos – Ler atentamente o enunciado destacando pontos mais importantes – Definir os dados de entrada, ou seja, dados fornecidos – Definir os processamentos necessários para se obter os dados de saída – Definir os dados de saída – Construir o algorítmo – Testar o algorítmo realizando simulações Conceitos Básicos • Tipos de Algorítmos – Descrição Narrativa – Fluxograma – Pseudocódigo ou portugol Conceitos Básicos • Tipos de Algorítmos – Descrição Narrativa • Analisa-se o enunciado do problema, escrevendo os passos para a solução, utilizando a linguagem natural – Vantagem: não se aprende nenhuma nova linguagem – Desvantagem: às vezes não há um mapemaneto direto do algorítmo na linguagem de programação Conceitos Básicos • Tipos de Algorítmos – Fluxograma • Consiste em analisar o enunciado do problema e escrever utilizando símbolos gráficos predefinidos os passos a serem seguidos para a resolução do problema – Vantagem: O entendimento de elementos gráficos é mais fácil – Desvantagem: Necessário aprender a simbologia dos fluxogramas Conceitos Básicos • Tipos de Algorítmos – Fluxograma Utilizado para indicar início e fim do algorítmo Indica o sentido do fluxo de dados Indica cálculos e atribuições de valores Representa a entrada de dados Representa a saída de dados Indica desvio condicional do fluxo normal de execução Conceitos Básicos • Exemplos de Algorítmos – Faça um algorítmo para mostrar o resultado da multiplicação de dois números • Descrição narrativa: PASSO 1 – Ler os dois números que serão multiplicados PASSO 2 – Multiplicar os números PASSO 3 – Mostrar o resultado obtido na multiplicação Conceitos Básicos • Exemplos de Algorítmos – Faça um algorítmo para mostrar o resultado da multiplicação de dois números • Fluxograma Início N1, N2 M=N1 * N2 M Fim Conceitos Básicos • Exemplos de Algorítmos – Faça um algorítmo para mostrar o resultado da multiplicação de dois números • Pseudocódigo (Portugol) ALGORÍTMO DECLARE N1,N2,M NUMERICO ESCREVA “Digite dois números “ LEIA N1, N2 M N1 * N2 ESCREVA “Multiplicação = “, M FIM ALGORÍTMO Conceitos Básicos • Exemplos de Algorítmos – Faça um algorítmo para mostrar o resultado da multiplicação de dois números • Implementação na Linguagem de Programação Pascal program fape (input,output); var n1,n2,m:integer; begin write('ENTRE COM DOIS NUMEROS: '); read(n1,n2); m:=n1*n2; writeln; writeln('A multiplicacao e:',m); read(n1); end. Conceitos Básicos • Exemplos de Algorítmos – – Faça um algorítmo para mostrar o resultado da multiplicação de dois números Implementação na Linguagem de Programação C# using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleMultiplicacao { class Multiplicacao { static void Main(string[] args) { string literalN1, // primeira string literalN2; // segunda string int n1, // primeiro número n2, // segundo número m; // soma de n1 com n2 // lê o primeiro número como uma string Console.Write("Entre com um número inteiro: "); literalN1 = Console.ReadLine(); // lê o segundo número como string Console.Write("\nEntre com o segundo número inteiro: "); literalN2 = Console.ReadLine(); // Converte números de string para inteiro n1 = Int32.Parse(literalN1); n2 = Int32.Parse(literalN2); // multiplica os dois números n1 e n2 e atribui o resultado a m m = n1 * n2; // mostra o resultado Console.WriteLine("\nA multiplicação é {0}.", m); } } } Conceitos Básicos • Exemplos de Algorítmos – – Faça um algorítmo para mostrar o resultado da multiplicação de dois números Implementação na Linguagem de Programação C# com Formulário using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void label1_Click(object sender, EventArgs e) { } private void r_TextChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { double res = Double.Parse(a.Text.ToString()) * Double.Parse(b.Text.ToString()); r.Text = res.ToString(); } } } Conceitos Básicos • Exercício – Faça um algorítmo para descrever como é o sistema de avaliação da FAPE. Utilize Descrição Narrativa, Fluxograma e Pseudocódigo Conceitos Básicos • Exercício - Utilize Descrição Narrativa, Fluxograma e Pseudocódigo para as seguintes questões: – Faça um algorítmo para mostrar o resultado da divisão de dois números. – Faça um algorítmo para calcular a média aritmética entre duas notas de um aluno e mostrar o resultado aprovado ou reprovado Conceitos Básicos • Exercício - Utilize Descrição Narrativa, Fluxograma e Pseudocódigo para as seguintes questões: – Faça um algorítmo para calcular o novo salário de um funcionário. Aqueles que ganham até R$ 500,00 deverão ter aumento de 20%. Os demais, apenas 10% Conceitos Básicos • Conceito de Variável – Um algorítmo, e posteriormente um programa, recebe dados. Tais dados precisam ser armazenados no computador para serem utilizados no processamento. Esse armazenamento é feito na memória Conceitos Básicos • Conceito de Variável – O armazenamento do valor associado a uma variável em memória dá-se no sistema de notação binária, ao invés do decimal com o qual estamos acostumados a trabalhar – 1 bit representa 0 ou 1 – 1 byte é igual a 1 x 8 = 8 bits – Os valores associados a variáveis são armazenados na memória, representados por bits Conceitos Básicos • Conceito de Variável – Existe uma tabela denominada tabela ASCII que associa números binários aos caracteres alfanuméricos – Ex.: Código ASCII de número 158 representa a letra x, 159 representa a letra y – Ex.: É representado em binário por: – ASCII (158) x 10011110 – ASCII (159) y 10011111 Conceitos Básicos • Conceito de Variável – O valor armazenado na memória do computador está no formato binário – O processo de conversão do decimal para o binário se dá de forma bem simples pela divisão do número por 2, sendo o número binário formado pelos restos do processo de divisão Conceitos Básicos • Conceito de Variável – O processo de conversão do binário para o decimal se dá de forma da seguinte forma: 27 26 25 24 23 22 21 20 x x x x x x x x Binário: 1 0 0 1 1 1 1 0 128 16 8 4 2 somados dá 158 ASCII de 158 corresponde a letra x e é representado por 10011110 sendo desta forma armazenado na memória do computador Conceitos Básicos • Conceito de Variável – – – – x := 10 Atribui o valor 10 à variável x nome := ‘Maria’ Atribui o valor alfanumérico Maria à variável nome Conceitos Básicos • Tipos de Dados – – – – Numérico Lógico Literal Caractere Conceitos Básicos • Tipos de Dados – Numérico • Dividem-se em dois grupos: – – Inteiros » podem ser positivos ou negativos e não possuem casa decimal » Ocupa dois bytes ( 2 x 8 = 16 bits) de memória » 28 x 28 = 65536 possíveis representações » -32767, -32766, …, 0, …, 32766,32767 Reais » Podem ser positivos e negativos e possuem parte decimal » Ocupa 4 bytes (4 x 8 = 32 bits) » 28 x 28 x 28 x 28 = 232 possíveis representações » Possui de 6 a 11 dígitos significativos com sinal » Ex: 23,45 ; 346,89 ; -34,88 Conceitos Básicos • Tipos de Dados – Lógico • • Também chamados de dados booleanos. Podem assumir apenas os valores verdadeiro ou falso Ocupa 1 byte (1 x 8 = 8 bits) Conceitos Básicos • Tipos de Dados – Literal ou Caractere • • • • Dados formados por um único caractere ou uma cadeia de caracteres. São as letras, maiúsculas, minúsculas, números e caracteres especiais &, #, @, ?, + Ocupa 1 byte (8 bits) para cada caractere Exemplos: ‘aluno’ ‘1234’ ‘1 + 2’ Conceitos Básicos • Formação de Identificadores – – São os nomes das variáveis, dos programas, das constantes, das rotinas, etc. As regras básicas para a formação de identificadores são: • • • • Os caracteres que utiliza na formação dos identificadores são: os números, as letras maiúsculas, minúsculas e o caractere sublinhado O primeiro caractere deve ser sempre uma letra ou caractere sublinhado ( _ ) Não são permitidos espaços em branco e caracteres especiais (@,$,+,-,%,!) Não podem ser usadas palavras reservadas nos identificadores, ou seja, palavras que pertençam a uma linguagem de programação Conceitos Básicos • Formação de Identificadores – Exemplos válidos: A A nota NOTA A32 nota1 MATRICULA Conceitos Básicos • Formação de Identificadores – Exemplos não válidos e a explicação: 5b … não pode começar com número e 12 … não pode ter espaço em branco x-y … não pode ter nota(2) … não pode ter ( ) case … não pode ser uma palavra reservada da linguagem de programação ( e.g. pascal) set … não pode ser uma palavra reservada Conceitos Básicos • Linguagem Pascal – – – Desenvolvida em 1968 por Niklaus Wirth, na Suiça, destinada à programação científica É uma linguagem estruturada, ou seja, possui regras para a escrita de programas Possui um ambiente integrado de desenvolvimento gráfico ou somente texto que integra: • • • Editor Compilador Depurador Conceitos Básicos • Linguagem Pascal – Para fazer um programa utilizando a linguagem pascal, deve-se: • • • • • Analisar o enunciado do problema, algorítmo Escrever o código-fonte, respeitando a sintaxe da linguagem pascal Compilá-lo Corrigir erros Executá-lo quando não houver mais erros Conceitos Básicos • Linguagem Pascal – Integrated Development Environment (IDE)s disponíveis • • • Turbo Pascal (Interface DOS) FPC – Free Pascal (Interface DOS) Dev Pascal (Ambiente Gráfico) Conceitos Básicos • C, C++, Visual Basic .NET e JAVA Módulo II – Estrutura Sequencial • Estrutura Sequencial em Algorítmos ALGORITMO DECLARE bloco de comandos FIM ALGORÍTMO Módulo II – Estrutura Sequencial • Estrutura Sequencial em Algorítmos – Declaração de Variáveis • As Variáveis são declaradas após a palavra DECLARE ou outra que sugira a mesma ação • Os tipos utilizados podem ser definidos como NUMÉRICO (variáveis que receberão números), LITERAL (receberão caracteres) e LÓGICO (receberão ou Verdadeiro ou Falso) • Ex.: DECLARE X numérico Y, Z literal TESTE lógico Módulo II – Estrutura Sequencial • Estrutura Sequencial em Algorítmos – Comando de Atribuição em Algorítmos • • É utilizado para atribuir valores ou operações a variáveis, sendo representado pelo símbolo ← ou pelo símbolo := Ex.: x←4 x←x+2 y ← “aula” teste ← falso Módulo II – Estrutura Sequencial • Estrutura Sequencial em Algorítmos – Comando de Entrada em Algorítmos • • • O comando de entrada é usado para receber os dados digitados pelo usuário Os dados recebidos são armazenados em variáveis. Pode-se usar a palavra LEIA Ex.: LEIA X LEIA Y Módulo II – Estrutura Sequencial • Estrutura Sequencial em Algorítmos – Comando de Saída em Algorítmos • • • É utilizado para mostrar dados na tela ou na impressora ou outra unidade de saída de dados É representado pela palavra ESCREVA e os dados podem ser conteúdos de variáveis ou mensagens Ex.: ESCREVA X ESCREVA “Conteúdo de Y = “, Y Módulo II – Estrutura Sequencial • Estrutura Sequencial em PASCAL PROGRAM nome; USES nomes das unidades; VAR nome das variáveis : tipo; BEGIN bloco de comandos; END Módulo II – Estrutura Sequencial • Estrutura Sequencial em PASCAL – As unidades são biblitecas utilizadas pela linguagem Pascal para a correta execução do programa. – A unidade CRT é obrigatória em todos os programas, pois faz a adequação do hardware com o programa. Módulo II – Estrutura Sequencial • Declaração de Variáveis em Pascal – As variáveis são declaradas após a palavra VAR – Os tipos mais utilizados são: • • • • • INTEGER (números inteiros) REAL (números reais) CHAR (caracteres) STRING (vários caracteres) BOOLEAN (verdadeiro ou falso) Módulo II – Estrutura Sequencial • Declaração de Variáveis em Pascal Var X : INTEGER; Y,Z : REAL; NOME : STRING; SEXO : CHAR; TESTE : BOOLEAN; Módulo II – Estrutura Sequencial • Declaração de Variáveis em Pascal – – Os identificadores são os nomes das variáveis, dos programas, das constantes, das rotinas e unidades, entre outras As regras básicas para a formação de identificadores: • • • • • • Podem ter qualquer tamanho. O compilador usará apenas os 63 primeiros caracteres Os caracteres que você pode utilizar na formação dos identificadores são os números, as letras maiúsculas e minúsculas e o caractere sublinhado O compilador não faz distinção entre maiúsculas e minúsculas, assim o identificador NUM é igual a num O primeiro caractere deve ser sempre uma letra ou o sublinhado Não são permitidos espaços em branco e caracteres especiais (@, $, +, -, %, !) Não é permitido usar palavras reservadas Módulo II – Estrutura Sequencial • Palavras Reservadas em Pascal – São os nomes utilizados pelo compilador para representar comandos, operadores e nomes de seções de programa. Na linguagem Pascal são: AND END NIL SHR ASM FILE NOT STRING ARRAY FOR OBJECT THEN BEGIN FUNCTION OF TO CASE GOTO OR TYPE PACKED UNIT CONST IF CONSTRUCTOR IMPLEMENTATION PROCEDURE UNTIL DESTRUCTOR IN PROGRAM USES DIV INLINE RECORD VAR DO INTERF REPEA ACE T WHILE DOWN TO LABEL SET WITH ELSE MOD SHL XOR Módulo II – Estrutura Sequencial • Palavras Reservadas – Os tipos de dados mais utilizados na linguagem PASCAL estão descritos na tabela a seguir: TIPO REPRESENTAÇÃO FAIXA TAMANHO shortint Numérico inteiro -128 a 127 1 byte integer Numérico inteiro -32.768 a 32.767 2 bytes logint Numérico inteiro -2.147.483.648 a 2.147.483.647 4 bytes byte Numérico inteiro 0 a 255 1 byte word Numérico inteiro 0 a 65.535 2 bytes real Numérico real 2,9 x 10-39 a 1,7 x 1038 (11 a 12 dígitos com sinal) 6 bytes single Numérico real 1,5 x 10-45 a 3,4 x 1038 (7 a 8 dígitos com sinal) 4 bytes double Numérico real 5 x 10-324 a 1,7 x 10308 (15 a 16 dígitos com sinal) 8 bytes extended Numérico real 10 bytes comp Numérico real 8 bytes boolean lógico True ou false 1 byte char 1 caractere Qualquer caractere 1 byte string Cadeia de caracteres Qualquer conjunto de caracteres 1 byte para cada caractere Módulo II – Estrutura Sequencial • Comando de Atribuição em Pascal – – O comando de atribuição é usado para atribuir valores ou operações a variáveis, sendo representado por := (sinal de dois pontos e o sinal de igual juntos, sem espaço) Ex.: x := 4; x := x + 2; y := 2.5; nome := ‘Aula’; sexo := ‘F’; teste := false; Módulo II – Estrutura Sequencial • Comando de Atribuição em Pascal – – Em pascal, os caracteres literais são representados entre apóstrofos simples e os números reais utilizam o ponto decimal como separador Em pascal, o ponto e vírgula (;) é utilizado para finalizar um comando Módulo II – Estrutura Sequencial • Comando de Entrada em Pascal – – – – É utilizado para receber dados digitados pelo usuário Os dados recebidos são armazenados em variáveis Representado pela palavra READ ou READLN Sintaxe: • • – readln(nome_da_variavel); readln(nome_da_variavel1, nome_da_variavel2); Ex: • • readln(x); readln(x,y); Módulo II – Estrutura Sequencial • Comando de Saída em Pascal – – – É utilizado para mostrar dados na tela ou na impressora É representado pela palavra WRITE ou WRITELN Sintaxe: • • • • – write(nome_da_variavel); writeln(nome_da_variavel); write (‘Mensagem’); writeln(‘Mensagem’); Ex: • • write(x); writeln(‘O numero e: ‘, x); Módulo II – Estrutura Sequencial • Comentários em Pascal – – – Não são interpretados pelo Compilador Servem apenas para explicar algo a respeito da codificação de um programa de computador Usa-se: {…….} – Ou (* ……… *) Módulo II – Estrutura Sequencial • Operadores e Funções predefinidas em Pascal + * / div mod Soma Subtração Multiplicação Divisão Quociente inteiro resto da divisão Operandos Resultado Z ou R Z ou R Z ou R Z ou R Z Z Z ou R Z ou R Z ou R R Z Z Módulo II – Estrutura Sequencial • |x| ex Operadores e Funções predefinidas em Pascal Z ou R Z ou R Z ou R Z ou R ABS(X) EXP(X) Módulo II – Estrutura Sequencial • Estrutura Sequencial em C# 1. O ponto inicial de execução do programa é o método main pertencente à classe a partir da qual todas as funcionalidades da aplicação estarão acessíveis 2. Um programa executará a partir do método main, instrução após instrução do início ao fim 3. Ao encontrar um desvio condicional uma ou outra parte do programa será executada, de acordo com a condição dada 4. Ao encontrar uma estrutura de repetição, parte do programa será executado repetidamente enquanto uma condição dada for satisfeita 5. O ponto de execução do programa pode ser desviado a um método na mesma classe. Dentro do método são válidas as regras 2 a 4 anteriores 6. O ponto de execução do programa pode ser desviado a um objeto instanciado de uma classe, onde são válidas as regras 2 a 5 Módulo II – Estrutura Sequencial • Operadores e Funções predefinidas em C# Módulo II – Estrutura Sequencial • Operadores e Funções predefinidas em C# Módulo II – Estrutura Sequencial • Operadores e Funções predefinidas em C# Módulo II – Estrutura Sequencial • Operadores e Funções predefinidas em C# Módulo II – Estrutura Sequencial • Declaração de Variáveis em C# – As variáveis são declaradas no corpo do programa, como variáveis da classe (propriedades), como parâmetros repassados a funções da classe (métodos) ou no corpo de métodos – Declara-se uma variável informando o seu tipo antes do nome da variável – Os tipos mais utilizados são: Módulo II – Estrutura Sequencial • Declaração de Variáveis em C# – Os tipos mais utilizados são: Módulo II – Estrutura Sequencial • Declaração de Variáveis em C# – Os tipos mais utilizados são: Módulo II – Estrutura Sequencial • Declaração de Variáveis em C# – – Os identificadores são os nomes das variáveis, das classes, das constantes, dos métodos As regras básicas para a formação de identificadores: • • • • • Não devem ser muito longos pois dificulta o entendimento e a memorização da finalidade da variável Os caracteres que você pode utilizar na formação dos identificadores são os números, as letras maiúsculas e minúsculas e o caractere sublinhado O primeiro caractere deve ser sempre uma letra ou o sublinhado Não são permitidos espaços em branco e caracteres especiais (@, $, +, -, %, !) Não é permitido usar palavras reservadas Módulo II – Estrutura Sequencial • Palavras Reservadas em C# – São os nomes utilizados pelo compilador para representar comandos, operadores e nomes de seções de programa. Na linguagem C# são: Módulo II – Estrutura Sequencial • Palavras Reservadas em C# – São os nomes utilizados pelo compilador para representar comandos, operadores e nomes de seções de programa. Na linguagem C# são: Módulo II – Estrutura Sequencial • Exercício Após a elaboração do algorítmo em Português Estruturado e em Fluxograma, implemente em C# um programa para entrar com o valor da temperatura em celsius e convertê-la para fahrenheit. Em seguida, faça o mesmo para entrar com os valores em fahrenheit e convertê-lo para celsius. Módulo II – Estrutura Sequencial • Exercício Use as fórmulas: grau Celsius - grau Fahrenheit °F = °C × 1,8 + 32 grau Fahrenheit - grau Celsius °C = (°F - 32) / 1,8 Módulo II – Estrutura Sequencial using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double c, f; Console.Write("Entre com o valor em graus Celsius: "); c = Double.Parse( Console.ReadLine() ); /* f = (c * 1.8) + 32; */ f = CalculaFarenheit(c); Console.Write("O valor em graus Farenheit é: " ); Console.WriteLine(f); Console.ReadKey(); } static double CalculaFarenheit( double celsius ) { double farenheit = celsius * 1.8 + 32; return farenheit; } } } Módulo III – Estrutura Condicional • Estrutura Condicional em Algorítmos – Estrutura Condicional Simples Se condição Então comando – – – A condição possui apenas dois valores possíveis: verdadeiro ou falso O comando só será executado caso a condição seja verdadeira O comando pode ser composto formando um bloco de comandos, neste caso o conjunto de comandos é posto entre as palavras início e fim Módulo III – Estrutura Condicional • Estrutura Condicional em Algorítmos – Estrutura Condicional Simples Se condição Então início comando1; comando2; comando3; fim Módulo III – Estrutura Condicional • Estrutura Condicional em Pascal – Estrutura Condicional Simples em Pascal if condição then begin comando1; comando2; comando3; end; Módulo III – Estrutura Condicional • Estrutura Condicional em C# – Estrutura Condicional Simples em C# if ( condição ) comando; Exemplo: if ( notaAluno >= 7 ) Console.WriteLine( “Aprovado!" ); if ( condição ) { // bloco de comandos comando1; comando2; comando3; } Exemplo: if ( notaAluno >= 7 ) { Console.WriteLine( “################" ); Console.WriteLine( “Aprovado!" ); Console.WriteLine( “################" ); } Módulo III – Estrutura Condicional • Estrutura Condicional Composta em Algorítmos – Estrutura Condicional Composta Se condição Então início comando1; comando2; comando3; fim Senão início comando1; comando2; comando3; fim Módulo III – Estrutura Condicional • Estrutura Condicional Composta em PASCAL – Estrutura Condicional Composta If condição then begin comando1; comando2; comando3; end else begin comando1; comando2; comando3; end; Módulo III – Estrutura Condicional • Estrutura Condicional Composta em C# – Estrutura Condicional Composta If ( condição ) comando1; else comando2; Exemplo: if ( notaAluno >= 7 ) Console.WriteLine( “Aprovado!" ); else Console.WriteLine( “Reprovado!" ); Módulo III – Estrutura Condicional • Estrutura Condicional Composta em C# if ( condição ) { // bloco de comandos comando1; comando2; comando3; comandoN; } Else { comando1 comando2; comando3; comandoN; } Exemplo: if ( notaAluno >= 7 ) { // bloco de comandos Console.WriteLine( “######################" ); Console.WriteLine( “Aprovado!" ); Console.WriteLine( “######################" ); } else { //bloco de comandos Console.WriteLine( “######################" ); Console.WriteLine( “Reprovado!" ); Console.WriteLine( “######################" ); } Módulo III – Estrutura Condicional • Estrutura Condicional Composta em C# – Estrutura Condicional Composta O operador condicional (?:) está relacionado à estrutura de seleção if/else Exemplo: Console.WriteLine( studentGrade >= 7 ? “Aprovado!" : “Reprovado!" ); Módulo III – Estrutura Condicional • Portugol para a Estrutura Switch CASE (Seleção Múltipla) Selector tem que ser do tipo char caso selector igual a ‘1’: comando; // comando simples ‘2’: início // bloco de comandos comando1; comando2; comando3; fim // final do bloco de comandos para a opção 2 Fim seleção multipla Módulo III – Estrutura Condicional • Estrutura Switch CASE em C# Selector tem que ser do tipo char … Console.Write( “Entre com uma letra de A a F: " ); grade = Char.Parse( Console.ReadLine() ); switch ( grade ) { case 'A': // grade is uppercase A case 'a': // or lowercase a ++aCount; break; case 'B': // grade is uppercase B case 'b': // or lowercase b ++bCount; break; case 'C': // grade is uppercase C case 'c': // or lowercase c ++cCount; break; case 'D': // grade is uppercase D case 'd': // or lowercase d ++dCount; break; case 'F': // grade is uppercase F case 'f': // or lowercase f ++fCount; break; default: // processes all other characters Console.WriteLine( “Letra incorreta." "\nEntre com uma nova letra!" ); break; } Módulo III – Estrutura Condicional • • Implemente uma calculadora para fazer as operações básicas com dois números Implemente um programa em C# para entrar com as letras de A até F. O programa deverá repetir enquanto não for digitada a letra “S” ou “s”. A cada laço, deverá ser incrementado em 1 a variável utilizada para contabilizar a opção escolhida na iteração. Ao final, deverá ser mostrado na tela a quantidade de vezes em que se escolheu as letras “A”, “B”, “C”, “D”, “E” e “F”. Também deverá ser mostrada a quantidade de vezes em que se escolheu uma letra diferente. Módulo III – Estrutura Condicional program calculadora; uses crt; var opcao:char; begin repeat clrscr; readln(opcao); case opcao of '1': begin writeln('Soma'); end; 'f': writeln('Fim'); end; delay(2000); until(opcao='f'); end. Módulo III – Estrutura Condicional Operadores Lógicos Tabela E Tabela OU Tabela Não VeV=V V ou V = V Não V = F VeF=F V ou F = V Não F = V FeV=F F ou V = V FeF=F F ou F = F Módulo III – Estrutura Condicional Ex Operadores Lógicos em PASCAL IF (X > 5) AND (X < 10) Then writeln (‘Número entre 5 e 10’) Ex Operadores Lógicos em C &&, || e ! Significam respect E, OU, NÃO If ((X > 5) && (X < 10)) cout << “Número entre 5 e 10” Módulo III – Estrutura Condicional Exercícios: - Para as questões a seguir, descreva o algorítmo e em seguida implemente em C# Mostre o maior de dois números lidos Receba três números do teclado e os mostre em ordem crescente Receba um número inteiro e diga se é PAR ou IMPAR Mostre o Menu de opções a seguir e realize as operações: Menu de opções 1. Somar dois números 2. Calcule a raiz quadrada de um número Módulo III – Estrutura Condicional Exercícios: Para as questões a seguir, descreva o algorítmo e em seguida implemente em C# Mostre a data e a hora do sistema nos seguintes formatos: dia/mês/ano e hora:minuto:segundo Altere a questão anterior para escrever o mês por extenso Determine e mostre a maior de duas datas lidas. Leia dia, mês e ano inteiros para cada data a ser comparada Módulo III – Estrutura Condicional Exercícios: Para as questões a seguir, descreva o algorítmo e em seguida implemente em C# Faça um programa que leia a hora e minutos iniciais de um jogo; a hora e minutos finais de um jogo e em seguida mostre a duração do jogo Faça um programa que receba o código correspondente ao cargo de um funcionário e seu salário atual e mostre o cargo, o valor do aumento e seu novo salário, conforme a tabela a seguir: Código Cargo Percentual de aumento 1 escriturario 50% 2 secretário 35% 3 caixa 20% 4 gerente 10% 5 diretor sem aumento Módulo III – Estrutura Condicional Exercícios: Para as questões a seguir, descreva o algorítmo e em seguida implemente em C# Faça um programa que apresente o menu de opções a seguir, permita ao usuário escolher a opção desejada, receba os dados necessários e mostre o resultado Menu de opções: 1. Imposto 2. Novo Salário 3. Classificação Módulo III – Estrutura Condicional Exercícios: - Na opção 1: receber o salário de um funcionário, calcular e mostrar o valor do imposto usando as regras: - Salários Percentual do Imposto - < R$ 500,00 5% - >= 500 <= 850 10% - > 850 15% Módulo III – Estrutura Condicional Exercícios: - Na opção 2: receber o salário de um funcionário, calcular e mostrar o valor do novo salário usando as regras: - Salários Aumento - > R$ 1.500,00 R$ 25,00 - >= 750 <= 1500 50,00 - < 450 100,00 Módulo III – Estrutura Condicional Exercícios: - Na opção 3: receber o salário de um funcionário e mostrar sua classificação usando a tabela a seguir: - Salários Classificação - <= R$ 700,00 Mal remunerado - > 700,00 Bem remunerado Módulo IV – Estrutura de Repetição 4.1 Estrutura de Repetição para número definido de repetições (estrutura para) – É usada quando se sabe o número de vezes em que um trecho de algorítmo é repetido. PARA I <- valor_inicial ATÉ valor_final FAÇA comando1 O comando1 será executado utilizando a variável I como controle, cujo conteúdo irá variar de valor_inicial até valor_final O incremento a cada laço é de um em um. Ou seja, o valor de I é acrescido de 1 a cada repetição na estrutura Módulo IV – Estrutura de Repetição 4.1 Estrutura de Repetição para número definido de repetições (estrutura para) em Portugol PARA J <- valor_inicial ATÉ valor_final FAÇA INÍCIO comando1 comando2 FIM Os comandos 1 e 2 serão executados utilizando a variável J como controle, cujo conteúdo vai variar de valor_inicial até valor_final Módulo IV – Estrutura de Repetição 4.1 Estrutura de Repetição para número definido de repetições (estrutura para) em Fluxograma Módulo IV – Estrutura de Repetição 4.1 Estrutura de Repetição para número definido de repetições (estrutura for) em C# Palavra reservada for Condição de Permanência no laço Incremento da variável de controle Em cada laço for ( int counter = 1; counter <= 5; counter++ ) Nome da variável de controle Último valor da variável de controle Valor inicial da variável de controle Módulo IV – Estrutura de Repetição 4.1 Estrutura de Repetição para número definido de repetições (estrutura for) em C# using System; class ForCounter { static void Main( string[] args ) { // inicialização, condição de repetição e incremento // estão inclusas na estrutura de repetição for for ( int counter = 1; counter <= 5; counter++ ) Console.WriteLine( counter ); } } Módulo IV – Estrutura de Repetição 4.2 Estrutura de Repetição para número indefinido de repetições e teste no início (estrutura enquanto) – – É utilizada quando não se sabe o número de vezes em que um trecho de algorítmo é repetido, embora também possa ser utilizado quando se sabe esse número Existem situações em que o teste condicional da estrutura de repetição, que fica no início, resulta em falso na primeira comparação. Neste caso os comandos dentro da estrutura não são executados Módulo IV – Estrutura de Repetição 4.1 Estrutura de Repetição demonstrada em um fluxograma Módulo IV – Estrutura de Repetição 4.2 Estrutura de Repetição para número indefinido de repetições e teste no início (estrutura enquanto) ENQUANTO condição FAÇA Comando1 Enquanto a condição for Verdadeira o comando1 será executado Módulo IV – Estrutura de Repetição 4.2 Estrutura de Repetição para número indefinido de repetições e teste no início (estrutura enquanto) Exemplo: int produto = 2; while ( produto <= 1000 ) produto = 2 * produto; Console.WriteLine( “O produto final é: “ + produto ); Enquanto a condição for Verdadeira o comando1 será executado Módulo IV – Estrutura de Repetição 4.2 Estrutura de Repetição para número indefinido de repetições e teste no início (estrutura enquanto) ENQUANTO condição FAÇA INÍCIO comando1 comando2 comando3 FIM Enquanto a condição for Verdadeira o comando1, comando2 e comando3 serão executados Módulo IV – Estrutura de Repetição 4.2 Estrutura de Repetição para número indefinido de repetições e teste no início (estrutura enquanto) Exemplo: int produto = 2; int laco = 0; while ( produto <= 1000 ) { // bloco de comandos laco = laco + 1; Console.WriteLine( “No laço “ + laco + “ O produto é: “ + produto); produto = 2 * produto; } Console.WriteLine( “O produto final é: “ + produto ); Módulo IV – Estrutura de Repetição 4.2 Estrutura de Repetição para número indefinido de repetições e teste no início (estrutura enquanto) Exercício: Faça um algorítmo para ler as notas dos alunos de uma turma com um número qualquer de alunos. Contabilize a quantidade de alunos que tiveram nota >=5 e <7 em um grupo; os alunos que tiveram nota < 5 em outro grupo; os alunos que tiveram nota >=7 e <8 em outro grupo; por fim os alunos com nota >= 8 em outro grupo. Ao final da execução do algorítmo, mostre a quantidade de alunos em cada grupo e o percentual da turma em cada grupo. Módulo IV – Estrutura de Repetição 4.2 Estrutura de Repetição para número indefinido de repetições e teste no início (estrutura enquanto) Ex.: X <- 1 Y <- 5 ENQUANTO X < Y FAÇA INÍCIO X <- X + 2 Y <- Y + 1 FIM Módulo IV – Estrutura de Repetição 4.3 Estrutura de Repetição para número indefinido de repetições e teste no final (estrutura repeat until ou do … while) – – É usada quando não se sabe o número de vezes em que um trecho do algorítmo deve ser repetido, embora também possa ser utilizada quando se sabe o número Os comandos dentro da estrutura (laço) serão executados pelo menos uma vez, já que a condição se encontra no final Módulo IV – Estrutura de Repetição 4.3 Estrutura de Repetição para número indefinido de repetições e teste no final (estrutura repeat until ou do … while) REPITA comandos ATÉ condição Repita os comandos até a condição tornar-se Verdadeira Módulo IV – Estrutura de Repetição 4.3 Estrutura de Repetição para número indefinido de repetições e teste no final (estrutura repeat until ou do … while) X <- 1 Y <- 5 REPITA X <- X + 2 Y <- Y + 2 ATÉ X >= Y Módulo IV – Estrutura de Repetição 4.3 Estrutura de Repetição para número indefinido de repetições e teste no final (estrutura repeat until ou do … while) FAÇA comandos ENQUANTO condição Repita os comandos até a condição for Verdadeira Módulo IV – Estrutura de Repetição 4.3 Estrutura de Repetição para número indefinido de repetições e teste no final (estrutura do … while) em C# using System; class DoWhileLoop { static void Main( string[] args ) { int counter = 1; do { Console.WriteLine( counter ); counter++; } while ( counter <= 5 ); } // Fim do método Main } // Fim da Classe DoWhileLoop